System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 8c019e5d081a1832851eea1d62891f6ae3621066:


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 47 6c  .using System.Gl
0150: 6f 62 61 6c 69 7a 61 74 69 6f 6e 3b 0d 0a 75 73  obalization;..us
0160: 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74 69  ing System.Runti
0170: 6d 65 2e 49 6e 74 65 72 6f 70 53 65 72 76 69 63  me.InteropServic
0180: 65 73 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65  es;..using Syste
0190: 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 6e 61 6d 65 73  m.Text;....names
01a0: 70 61 63 65 20 53 79 73 74 65 6d 2e 44 61 74 61  pace System.Data
01b0: 2e 53 51 4c 69 74 65 0d 0a 7b 0d 0a 20 20 20 20  .SQLite..{..    
01c0: 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 6f  #region SQLiteCo
01d0: 6e 74 65 78 74 20 48 65 6c 70 65 72 20 43 6c 61  ntext Helper Cla
01e0: 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ss..    /// <sum
01f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
0200: 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73  his class repres
0210: 65 6e 74 73 20 61 20 63 6f 6e 74 65 78 74 20 66  ents a context f
0220: 72 6f 6d 20 74 68 65 20 53 51 4c 69 74 65 20 63  rom the SQLite c
0230: 6f 72 65 20 6c 69 62 72 61 72 79 20 74 68 61 74  ore library that
0240: 20 63 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 62 65   can..    /// be
0250: 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20 73   passed to the s
0260: 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 2a 28  qlite3_result_*(
0270: 29 20 61 6e 64 20 61 73 73 6f 63 69 61 74 65 64  ) and associated
0280: 20 66 75 6e 63 74 69 6f 6e 73 2e 0d 0a 20 20 20   functions...   
0290: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
02a0: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c  .    public seal
02b0: 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43  ed class SQLiteC
02c0: 6f 6e 74 65 78 74 20 3a 20 49 53 51 4c 69 74 65  ontext : ISQLite
02d0: 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d 0a 20 20  NativeHandle..  
02e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
02f0: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
0300: 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  a..        /// <
0310: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0320: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
0330: 20 63 6f 6e 74 65 78 74 20 68 61 6e 64 6c 65 2e   context handle.
0340: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
0350: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0360: 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72    private IntPtr
0370: 20 70 43 6f 6e 74 65 78 74 3b 0d 0a 20 20 20 20   pContext;..    
0380: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
0390: 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03e0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
03f0: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
0400: 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
0410: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
0420: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
0430: 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
0440: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
0450: 73 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65  ss using the spe
0460: 63 69 66 69 65 64 20 6e 61 74 69 76 65 0d 0a 20  cified native.. 
0470: 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 65         /// conte
0480: 78 74 20 68 61 6e 64 6c 65 2e 0d 0a 20 20 20 20  xt handle...    
0490: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
04a0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
04b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6f  <param name="pCo
04c0: 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20 20 20 20  ntext">..       
04d0: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
04e0: 63 6f 6e 74 65 78 74 20 68 61 6e 64 6c 65 20 74  context handle t
04f0: 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20  o use...        
0500: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
0510: 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53        internal S
0520: 51 4c 69 74 65 43 6f 6e 74 65 78 74 28 49 6e 74  QLiteContext(Int
0530: 50 74 72 20 70 43 6f 6e 74 65 78 74 29 0d 0a 20  Ptr pContext).. 
0540: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
0550: 20 20 20 20 20 20 74 68 69 73 2e 70 43 6f 6e 74        this.pCont
0560: 65 78 74 20 3d 20 70 43 6f 6e 74 65 78 74 3b 0d  ext = pContext;.
0570: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
0580: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
0590: 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05e0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
05f0: 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69  gion ISQLiteNati
0600: 76 65 48 61 6e 64 6c 65 20 4d 65 6d 62 65 72 73  veHandle Members
0610: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
0620: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
0630: 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65   /// Returns the
0640: 20 75 6e 64 65 72 6c 79 69 6e 67 20 53 51 4c 69   underlying SQLi
0650: 74 65 20 6e 61 74 69 76 65 20 68 61 6e 64 6c 65  te native handle
0660: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
0670: 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   this..        /
0680: 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  // object instan
0690: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
06a0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
06b0: 20 20 20 20 20 70 75 62 6c 69 63 20 49 6e 74 50       public IntP
06c0: 74 72 20 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d  tr NativeHandle.
06d0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
06e0: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
06f0: 74 75 72 6e 20 70 43 6f 6e 74 65 78 74 3b 20 7d  turn pContext; }
0700: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
0710: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
0720: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
0730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0770: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
0780: 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74  egion Public Met
0790: 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hods..        //
07a0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
07b0: 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68       /// Sets th
07c0: 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74  e context result
07d0: 20 74 6f 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20   to NULL...     
07e0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
07f0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
0800: 63 20 76 6f 69 64 20 53 65 74 4e 75 6c 6c 28 29  c void SetNull()
0810: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
0820: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
0830: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
0840: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
0850: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
0860: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
0870: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
0880: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
0890: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
08a0: 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  .sqlite3_result_
08b0: 6e 75 6c 6c 28 70 43 6f 6e 74 65 78 74 29 3b 0d  null(pContext);.
08c0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
08d0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
08e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
08f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
0920: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
0930: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
0940: 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f 6e  /// Sets the con
0950: 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20 74  text result to t
0960: 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73 65  he specified <se
0970: 65 20 63 72 65 66 3d 22 53 79 73 74 65 6d 2e 44  e cref="System.D
0980: 6f 75 62 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20  ouble" />..     
0990: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20     /// value... 
09a0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
09b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
09c0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
09d0: 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
09e0: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
09f0: 65 66 3d 22 53 79 73 74 65 6d 2e 44 6f 75 62 6c  ef="System.Doubl
0a00: 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75  e" /> value to u
0a10: 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  se...        ///
0a20: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
0a30: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53     public void S
0a40: 65 74 44 6f 75 62 6c 65 28 64 6f 75 62 6c 65 20  etDouble(double 
0a50: 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20  value)..        
0a60: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
0a70: 66 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49  f (pContext == I
0a80: 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
0a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
0aa0: 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
0ab0: 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
0ac0: 28 29 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54  ();....#if !PLAT
0ad0: 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d  FORM_COMPACTFRAM
0ae0: 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20  EWORK..         
0af0: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
0b00: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72  ethods.sqlite3_r
0b10: 65 73 75 6c 74 5f 64 6f 75 62 6c 65 28 70 43 6f  esult_double(pCo
0b20: 6e 74 65 78 74 2c 20 76 61 6c 75 65 29 3b 0d 0a  ntext, value);..
0b30: 23 65 6c 69 66 20 21 53 51 4c 49 54 45 5f 53 54  #elif !SQLITE_ST
0b40: 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20 20  ANDARD..        
0b50: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
0b60: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
0b70: 72 65 73 75 6c 74 5f 64 6f 75 62 6c 65 5f 69 6e  result_double_in
0b80: 74 65 72 6f 70 28 70 43 6f 6e 74 65 78 74 2c 20  terop(pContext, 
0b90: 72 65 66 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c  ref value);..#el
0ba0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
0bb0: 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70  throw new NotImp
0bc0: 6c 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f  lementedExceptio
0bd0: 6e 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  n();..#endif..  
0be0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
0bf0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
0c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
0c40: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
0c50: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
0c60: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
0c70: 74 20 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20  t result to the 
0c80: 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63  specified <see c
0c90: 72 65 66 3d 22 53 79 73 74 65 6d 2e 49 6e 74 33  ref="System.Int3
0ca0: 32 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f  2" />..        /
0cb0: 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  // value...     
0cc0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0cd0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
0ce0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
0cf0: 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
0d00: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
0d10: 53 79 73 74 65 6d 2e 49 6e 74 33 32 22 20 2f 3e  System.Int32" />
0d20: 20 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a   value to use...
0d30: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
0d40: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
0d50: 62 6c 69 63 20 76 6f 69 64 20 53 65 74 49 6e 74  blic void SetInt
0d60: 28 69 6e 74 20 76 61 6c 75 65 29 0d 0a 20 20 20  (int value)..   
0d70: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
0d80: 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65 78 74      if (pContext
0d90: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
0da0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
0db0: 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61    throw new Inva
0dc0: 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65  lidOperationExce
0dd0: 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ption();....    
0de0: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
0df0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
0e00: 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 28 70  te3_result_int(p
0e10: 43 6f 6e 74 65 78 74 2c 20 76 61 6c 75 65 29 3b  Context, value);
0e20: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
0e30: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
0e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
0e80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
0e90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
0ea0: 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f   /// Sets the co
0eb0: 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20  ntext result to 
0ec0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 73  the specified <s
0ed0: 65 65 20 63 72 65 66 3d 22 53 79 73 74 65 6d 2e  ee cref="System.
0ee0: 49 6e 74 36 34 22 20 2f 3e 0d 0a 20 20 20 20 20  Int64" />..     
0ef0: 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20     /// value... 
0f00: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
0f10: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
0f20: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
0f30: 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  value">..       
0f40: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
0f50: 65 66 3d 22 53 79 73 74 65 6d 2e 49 6e 74 36 34  ef="System.Int64
0f60: 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 75 73  " /> value to us
0f70: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
0f80: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
0f90: 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65    public void Se
0fa0: 74 49 6e 74 36 34 28 6c 6f 6e 67 20 76 61 6c 75  tInt64(long valu
0fb0: 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  e)..        {.. 
0fc0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
0fd0: 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74  Context == IntPt
0fe0: 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
0ff0: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
1000: 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74  ew InvalidOperat
1010: 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d  ionException();.
1020: 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d  ...#if !PLATFORM
1030: 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52  _COMPACTFRAMEWOR
1040: 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55  K..            U
1050: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1060: 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  ds.sqlite3_resul
1070: 74 5f 69 6e 74 36 34 28 70 43 6f 6e 74 65 78 74  t_int64(pContext
1080: 2c 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 69 66  , value);..#elif
1090: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
10a0: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55  D..            U
10b0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
10c0: 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  ds.sqlite3_resul
10d0: 74 5f 69 6e 74 36 34 5f 69 6e 74 65 72 6f 70 28  t_int64_interop(
10e0: 70 43 6f 6e 74 65 78 74 2c 20 72 65 66 20 76 61  pContext, ref va
10f0: 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  lue);..#else..  
1100: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1110: 6e 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74  new NotImplement
1120: 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a  edException();..
1130: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1140: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1190: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
11a0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
11b0: 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73 20         /// Sets 
11c0: 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73 75  the context resu
11d0: 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  lt to the specif
11e0: 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53  ied <see cref="S
11f0: 79 73 74 65 6d 2e 53 74 72 69 6e 67 22 20 2f 3e  ystem.String" />
1200: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 61  ..        /// va
1210: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  lue...        //
1220: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1230: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1240: 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a   name="value">..
1250: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1260: 3c 73 65 65 20 63 72 65 66 3d 22 53 79 73 74 65  <see cref="Syste
1270: 6d 2e 53 74 72 69 6e 67 22 20 2f 3e 20 76 61 6c  m.String" /> val
1280: 75 65 20 74 6f 20 75 73 65 2e 20 20 54 68 69 73  ue to use.  This
1290: 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 0d 0a   value will be..
12a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76          /// conv
12b0: 65 72 74 65 64 20 74 6f 20 74 68 65 20 55 54 46  erted to the UTF
12c0: 2d 38 20 65 6e 63 6f 64 69 6e 67 20 70 72 69 6f  -8 encoding prio
12d0: 72 20 74 6f 20 62 65 69 6e 67 20 75 73 65 64 2e  r to being used.
12e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
12f0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1300: 70 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 53  public void SetS
1310: 74 72 69 6e 67 28 73 74 72 69 6e 67 20 76 61 6c  tring(string val
1320: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
1330: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1340: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
1350: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1360: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1370: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
1380: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
1390: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13a0: 62 79 74 65 5b 5d 20 62 79 74 65 73 20 3d 20 53  byte[] bytes = S
13b0: 51 4c 69 74 65 53 74 72 69 6e 67 2e 47 65 74 55  QLiteString.GetU
13c0: 74 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69  tf8BytesFromStri
13d0: 6e 67 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  ng(value);....  
13e0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79            if (by
13f0: 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tes == null)..  
1400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1410: 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
1420: 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 76  NullException("v
1430: 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  alue");....     
1440: 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
1450: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1460: 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28 0d  e3_result_text(.
1470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1480: 20 70 43 6f 6e 74 65 78 74 2c 20 62 79 74 65 73   pContext, bytes
1490: 2c 20 62 79 74 65 73 2e 4c 65 6e 67 74 68 2c 20  , bytes.Length, 
14a0: 28 49 6e 74 50 74 72 29 28 2d 31 29 29 3b 0d 0a  (IntPtr)(-1));..
14b0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
14c0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
14d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1510: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1520: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1530: 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74  // Sets the cont
1540: 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20 74 68  ext result to th
1550: 65 20 73 70 65 63 69 66 69 65 64 20 3c 73 65 65  e specified <see
1560: 20 63 72 65 66 3d 22 53 79 73 74 65 6d 2e 53 74   cref="System.St
1570: 72 69 6e 67 22 20 2f 3e 0d 0a 20 20 20 20 20 20  ring" />..      
1580: 20 20 2f 2f 2f 20 76 61 6c 75 65 20 63 6f 6e 74    /// value cont
1590: 61 69 6e 69 6e 67 20 61 6e 20 65 72 72 6f 72 20  aining an error 
15a0: 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 20 20  message...      
15b0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
15d0: 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65  aram name="value
15e0: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
15f0: 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
1600: 79 73 74 65 6d 2e 53 74 72 69 6e 67 22 20 2f 3e  ystem.String" />
1610: 20 76 61 6c 75 65 20 63 6f 6e 74 61 69 6e 69 6e   value containin
1620: 67 20 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73  g the error mess
1630: 61 67 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  age..        ///
1640: 20 74 65 78 74 2e 20 20 54 68 69 73 20 76 61 6c   text.  This val
1650: 75 65 20 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65  ue will be conve
1660: 72 74 65 64 20 74 6f 20 74 68 65 20 55 54 46 2d  rted to the UTF-
1670: 38 20 65 6e 63 6f 64 69 6e 67 20 70 72 69 6f 72  8 encoding prior
1680: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
1690: 20 62 65 69 6e 67 20 75 73 65 64 2e 0d 0a 20 20   being used...  
16a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
16b0: 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  m>..        publ
16c0: 69 63 20 76 6f 69 64 20 53 65 74 45 72 72 6f 72  ic void SetError
16d0: 28 73 74 72 69 6e 67 20 76 61 6c 75 65 29 0d 0a  (string value)..
16e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
16f0: 20 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74         if (pCont
1700: 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  ext == IntPtr.Ze
1710: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
1720: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49       throw new I
1730: 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45  nvalidOperationE
1740: 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20  xception();.... 
1750: 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b             byte[
1760: 5d 20 62 79 74 65 73 20 3d 20 53 51 4c 69 74 65  ] bytes = SQLite
1770: 53 74 72 69 6e 67 2e 47 65 74 55 74 66 38 42 79  String.GetUtf8By
1780: 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 76 61  tesFromString(va
1790: 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lue);....       
17a0: 20 20 20 20 20 69 66 20 28 62 79 74 65 73 20 3d       if (bytes =
17b0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
17c0: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
17d0: 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45  ew ArgumentNullE
17e0: 78 63 65 70 74 69 6f 6e 28 22 76 61 6c 75 65 22  xception("value"
17f0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1800: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
1810: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65  thods.sqlite3_re
1820: 73 75 6c 74 5f 65 72 72 6f 72 28 0d 0a 20 20 20  sult_error(..   
1830: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 43 6f               pCo
1840: 6e 74 65 78 74 2c 20 62 79 74 65 73 2c 20 62 79  ntext, bytes, by
1850: 74 65 73 2e 4c 65 6e 67 74 68 29 3b 0d 0a 20 20  tes.Length);..  
1860: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1870: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
18c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
18d0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
18e0: 20 53 65 74 73 20 74 68 65 20 63 6f 6e 74 65 78   Sets the contex
18f0: 74 20 72 65 73 75 6c 74 20 74 6f 20 74 68 65 20  t result to the 
1900: 73 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63  specified <see c
1910: 72 65 66 3d 22 53 51 4c 69 74 65 45 72 72 6f 72  ref="SQLiteError
1920: 43 6f 64 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20  Code" />..      
1930: 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d 0a 20 20    /// value...  
1940: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1950: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1960: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
1970: 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  alue">..        
1980: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
1990: 66 3d 22 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  f="SQLiteErrorCo
19a0: 64 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  de" /> value to 
19b0: 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  use...        //
19c0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
19d0: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
19e0: 53 65 74 45 72 72 6f 72 43 6f 64 65 28 53 51 4c  SetErrorCode(SQL
19f0: 69 74 65 45 72 72 6f 72 43 6f 64 65 20 76 61 6c  iteErrorCode val
1a00: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ue)..        {..
1a10: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1a20: 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50  pContext == IntP
1a30: 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
1a40: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1a50: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
1a60: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
1a70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1a80: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1a90: 6f 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75  ods.sqlite3_resu
1aa0: 6c 74 5f 65 72 72 6f 72 5f 63 6f 64 65 28 70 43  lt_error_code(pC
1ab0: 6f 6e 74 65 78 74 2c 20 76 61 6c 75 65 29 3b 0d  ontext, value);.
1ac0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1ad0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1b20: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
1b30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1b40: 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63 6f 6e  /// Sets the con
1b50: 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f 20 63  text result to c
1b60: 6f 6e 74 61 69 6e 20 74 68 65 20 65 72 72 6f 72  ontain the error
1b70: 20 63 6f 64 65 20 53 51 4c 49 54 45 5f 54 4f 4f   code SQLITE_TOO
1b80: 42 49 47 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  BIG...        //
1b90: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1ba0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
1bb0: 64 20 53 65 74 45 72 72 6f 72 54 6f 6f 42 69 67  d SetErrorTooBig
1bc0: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
1bd0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70             if (p
1be0: 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74  Context == IntPt
1bf0: 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1c00: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
1c10: 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74  ew InvalidOperat
1c20: 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d  ionException();.
1c30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55  ...            U
1c40: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1c50: 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  ds.sqlite3_resul
1c60: 74 5f 65 72 72 6f 72 5f 74 6f 6f 62 69 67 28 70  t_error_toobig(p
1c70: 43 6f 6e 74 65 78 74 29 3b 0d 0a 20 20 20 20 20  Context);..     
1c80: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1ce0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1cf0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65  ..        /// Se
1d00: 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72  ts the context r
1d10: 65 73 75 6c 74 20 74 6f 20 63 6f 6e 74 61 69 6e  esult to contain
1d20: 20 74 68 65 20 65 72 72 6f 72 20 63 6f 64 65 20   the error code 
1d30: 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 2e 0d 0a 20  SQLITE_NOMEM... 
1d40: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
1d50: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
1d60: 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 45 72  ublic void SetEr
1d70: 72 6f 72 4e 6f 4d 65 6d 6f 72 79 28 29 0d 0a 20  rorNoMemory().. 
1d80: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1d90: 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65        if (pConte
1da0: 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  xt == IntPtr.Zer
1db0: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
1dc0: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e      throw new In
1dd0: 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78  validOperationEx
1de0: 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20  ception();....  
1df0: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
1e00: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
1e10: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 65 72 72  lite3_result_err
1e20: 6f 72 5f 6e 6f 6d 65 6d 28 70 43 6f 6e 74 65 78  or_nomem(pContex
1e30: 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  t);..        }..
1e40: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e90: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1ea0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1eb0: 20 20 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65      /// Sets the
1ec0: 20 63 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20   context result 
1ed0: 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64  to the specified
1ee0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 79 73 74   <see cref="Syst
1ef0: 65 6d 2e 42 79 74 65 22 20 2f 3e 0d 0a 20 20 20  em.Byte" />..   
1f00: 20 20 20 20 20 2f 2f 2f 20 61 72 72 61 79 20 76       /// array v
1f10: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
1f20: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1f30: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1f40: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
1f50: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1f60: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 79 73 74   <see cref="Syst
1f70: 65 6d 2e 42 79 74 65 22 20 2f 3e 20 61 72 72 61  em.Byte" /> arra
1f80: 79 20 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d  y value to use..
1f90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1fa0: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
1fb0: 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 42 6c  ublic void SetBl
1fc0: 6f 62 28 62 79 74 65 5b 5d 20 76 61 6c 75 65 29  ob(byte[] value)
1fd0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1fe0: 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43 6f           if (pCo
1ff0: 6e 74 65 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e  ntext == IntPtr.
2000: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
2010: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
2020: 20 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f   InvalidOperatio
2030: 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d  nException();...
2040: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2050: 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
2060: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2070: 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d   throw new Argum
2080: 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e  entNullException
2090: 28 22 76 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20  ("value");....  
20a0: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
20b0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
20c0: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f  lite3_result_blo
20d0: 62 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b(..            
20e0: 20 20 20 20 70 43 6f 6e 74 65 78 74 2c 20 76 61      pContext, va
20f0: 6c 75 65 2c 20 76 61 6c 75 65 2e 4c 65 6e 67 74  lue, value.Lengt
2100: 68 2c 20 28 49 6e 74 50 74 72 29 28 2d 31 29 29  h, (IntPtr)(-1))
2110: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
2120: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2170: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
2180: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2190: 20 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 63    /// Sets the c
21a0: 6f 6e 74 65 78 74 20 72 65 73 75 6c 74 20 74 6f  ontext result to
21b0: 20 61 20 42 4c 4f 42 20 6f 66 20 7a 65 72 6f 73   a BLOB of zeros
21c0: 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65   of the specifie
21d0: 64 20 73 69 7a 65 2e 0d 0a 20 20 20 20 20 20 20  d size...       
21e0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
21f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
2200: 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22  ram name="value"
2210: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
2220: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 7a 65 72  he number of zer
2230: 6f 20 62 79 74 65 73 20 74 6f 20 75 73 65 20 66  o bytes to use f
2240: 6f 72 20 74 68 65 20 42 4c 4f 42 20 63 6f 6e 74  or the BLOB cont
2250: 65 78 74 20 72 65 73 75 6c 74 2e 0d 0a 20 20 20  ext result...   
2260: 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2270: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
2280: 63 20 76 6f 69 64 20 53 65 74 5a 65 72 6f 42 6c  c void SetZeroBl
2290: 6f 62 28 69 6e 74 20 76 61 6c 75 65 29 0d 0a 20  ob(int value).. 
22a0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
22b0: 20 20 20 20 20 20 69 66 20 28 70 43 6f 6e 74 65        if (pConte
22c0: 78 74 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  xt == IntPtr.Zer
22d0: 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
22e0: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49 6e      throw new In
22f0: 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78  validOperationEx
2300: 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 0d 0a 20 20  ception();....  
2310: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
2320: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
2330: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72  lite3_result_zer
2340: 6f 62 6c 6f 62 28 70 43 6f 6e 74 65 78 74 2c 20  oblob(pContext, 
2350: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
2360: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
23c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
23d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73          /// Sets
23e0: 20 74 68 65 20 63 6f 6e 74 65 78 74 20 72 65 73   the context res
23f0: 75 6c 74 20 74 6f 20 74 68 65 20 73 70 65 63 69  ult to the speci
2400: 66 69 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22  fied <see cref="
2410: 53 51 4c 69 74 65 56 61 6c 75 65 22 20 2f 3e 2e  SQLiteValue" />.
2420: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
2430: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2440: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2450: 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20  e="value">..    
2460: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
2470: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c   cref="SQLiteVal
2480: 75 65 22 20 2f 3e 20 74 6f 20 75 73 65 2e 0d 0a  ue" /> to use...
2490: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
24a0: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ram>..        pu
24b0: 62 6c 69 63 20 76 6f 69 64 20 53 65 74 56 61 6c  blic void SetVal
24c0: 75 65 28 53 51 4c 69 74 65 56 61 6c 75 65 20 76  ue(SQLiteValue v
24d0: 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7b  alue)..        {
24e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
24f0: 20 28 70 43 6f 6e 74 65 78 74 20 3d 3d 20 49 6e   (pContext == In
2500: 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20  tPtr.Zero)..    
2510: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
2520: 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65  w new InvalidOpe
2530: 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28  rationException(
2540: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2550: 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
2560: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2570: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
2580: 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
2590: 70 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d  ption("value");.
25a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55  ...            U
25b0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
25c0: 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  ds.sqlite3_resul
25d0: 74 5f 76 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  t_value(..      
25e0: 20 20 20 20 20 20 20 20 20 20 70 43 6f 6e 74 65            pConte
25f0: 78 74 2c 20 76 61 6c 75 65 2e 4e 61 74 69 76 65  xt, value.Native
2600: 48 61 6e 64 6c 65 29 3b 0d 0a 20 20 20 20 20 20  Handle);..      
2610: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
2620: 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
2630: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2640: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
2650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2690: 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
26a0: 20 53 51 4c 69 74 65 56 61 6c 75 65 20 48 65 6c   SQLiteValue Hel
26b0: 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 70  per Class..    p
26c0: 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61  ublic sealed cla
26d0: 73 73 20 53 51 4c 69 74 65 56 61 6c 75 65 20 3a  ss SQLiteValue :
26e0: 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61   ISQLiteNativeHa
26f0: 6e 64 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ndle..    {..   
2700: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
2710: 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
2720: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
2730: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
2740: 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65 20 68  e native value h
2750: 61 6e 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  andle...        
2760: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2770: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2780: 49 6e 74 50 74 72 20 70 56 61 6c 75 65 3b 0d 0a  IntPtr pValue;..
2790: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
27a0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
27b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27f0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2800: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
2810: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
2820: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
2830: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
2840: 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e 20  / Constructs an 
2850: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
2860: 20 63 6c 61 73 73 20 75 73 69 6e 67 20 74 68 65   class using the
2870: 20 73 70 65 63 69 66 69 65 64 20 6e 61 74 69 76   specified nativ
2880: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  e..        /// v
2890: 61 6c 75 65 20 68 61 6e 64 6c 65 2e 0d 0a 20 20  alue handle...  
28a0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
28b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
28c0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
28d0: 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 20 20 20  Value">..       
28e0: 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
28f0: 76 61 6c 75 65 20 68 61 6e 64 6c 65 20 74 6f 20  value handle to 
2900: 75 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  use...        //
2910: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2920: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
2930: 69 74 65 56 61 6c 75 65 28 49 6e 74 50 74 72 20  iteValue(IntPtr 
2940: 70 56 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20  pValue)..       
2950: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2960: 74 68 69 73 2e 70 56 61 6c 75 65 20 3d 20 70 56  this.pValue = pV
2970: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  alue;..        }
2980: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
2990: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
29a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
29f0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
2a00: 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  te Methods..    
2a10: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2a20: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49  >..        /// I
2a30: 6e 76 61 6c 69 64 61 74 65 73 20 74 68 65 20 6e  nvalidates the n
2a40: 61 74 69 76 65 20 76 61 6c 75 65 20 68 61 6e 64  ative value hand
2a50: 6c 65 2c 20 74 68 65 72 65 62 79 20 70 72 65 76  le, thereby prev
2a60: 65 6e 74 69 6e 67 20 66 75 72 74 68 65 72 0d 0a  enting further..
2a70: 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 63 63 65          /// acce
2a80: 73 73 20 74 6f 20 69 74 20 66 72 6f 6d 20 74 68  ss to it from th
2a90: 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  is object instan
2aa0: 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ce...        ///
2ab0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2ac0: 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69       private voi
2ad0: 64 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65 41  d PreventNativeA
2ae0: 63 63 65 73 73 28 29 0d 0a 20 20 20 20 20 20 20  ccess()..       
2af0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2b00: 70 56 61 6c 75 65 20 3d 20 49 6e 74 50 74 72 2e  pValue = IntPtr.
2b10: 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Zero;..        }
2b20: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
2b30: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
2b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b80: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2b90: 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69     #region ISQLi
2ba0: 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d  teNativeHandle M
2bb0: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
2bc0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
2bd0: 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75 72         /// Retur
2be0: 6e 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e  ns the underlyin
2bf0: 67 20 53 51 4c 69 74 65 20 6e 61 74 69 76 65 20  g SQLite native 
2c00: 68 61 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65  handle associate
2c10: 64 20 77 69 74 68 20 74 68 69 73 0d 0a 20 20 20  d with this..   
2c20: 20 20 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20       /// object 
2c30: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
2c40: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2c50: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
2c60: 63 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48  c IntPtr NativeH
2c70: 61 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b  andle..        {
2c80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
2c90: 74 20 7b 20 72 65 74 75 72 6e 20 70 56 61 6c 75  t { return pValu
2ca0: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
2cb0: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
2cc0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
2cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d10: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2d20: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
2d30: 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20   Properties..   
2d40: 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f       private boo
2d50: 6c 20 70 65 72 73 69 73 74 65 64 3b 0d 0a 20 20  l persisted;..  
2d60: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
2d70: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
2d80: 20 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72   Returns non-zer
2d90: 6f 20 69 66 20 74 68 65 20 6e 61 74 69 76 65 20  o if the native 
2da0: 53 51 4c 69 74 65 20 76 61 6c 75 65 20 68 61 73  SQLite value has
2db0: 20 62 65 65 6e 20 73 75 63 63 65 73 73 66 75 6c   been successful
2dc0: 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ly..        /// 
2dd0: 70 65 72 73 69 73 74 65 64 20 61 73 20 61 20 6d  persisted as a m
2de0: 61 6e 61 67 65 64 20 76 61 6c 75 65 20 77 69 74  anaged value wit
2df0: 68 69 6e 20 74 68 69 73 20 6f 62 6a 65 63 74 20  hin this object 
2e00: 69 6e 73 74 61 6e 63 65 20 28 69 2e 65 2e 20 74  instance (i.e. t
2e10: 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
2e20: 3c 73 65 65 20 63 72 65 66 3d 22 56 61 6c 75 65  <see cref="Value
2e30: 22 20 2f 3e 20 70 72 6f 70 65 72 74 79 20 6d 61  " /> property ma
2e40: 79 20 74 68 65 6e 20 62 65 20 72 65 61 64 20 73  y then be read s
2e50: 75 63 63 65 73 73 66 75 6c 6c 79 29 2e 0d 0a 20  uccessfully)... 
2e60: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2e70: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
2e80: 75 62 6c 69 63 20 62 6f 6f 6c 20 50 65 72 73 69  ublic bool Persi
2e90: 73 74 65 64 0d 0a 20 20 20 20 20 20 20 20 7b 0d  sted..        {.
2ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
2eb0: 20 7b 20 72 65 74 75 72 6e 20 70 65 72 73 69 73   { return persis
2ec0: 74 65 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ted; }..        
2ed0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f20: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2f30: 70 72 69 76 61 74 65 20 6f 62 6a 65 63 74 20 76  private object v
2f40: 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 2f  alue;..        /
2f50: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2f60: 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65        /// If the
2f70: 20 6d 61 6e 61 67 65 64 20 76 61 6c 75 65 20 66   managed value f
2f80: 6f 72 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  or this object i
2f90: 6e 73 74 61 6e 63 65 20 69 73 20 61 76 61 69 6c  nstance is avail
2fa0: 61 62 6c 65 20 28 69 2e 65 2e 20 69 74 0d 0a 20  able (i.e. it.. 
2fb0: 20 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 62         /// has b
2fc0: 65 65 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 70  een previously p
2fd0: 65 72 73 69 73 74 65 64 20 76 69 61 20 74 68 65  ersisted via the
2fe0: 20 3c 73 65 65 20 63 72 65 66 3d 22 50 65 72 73   <see cref="Pers
2ff0: 69 73 74 22 2f 3e 29 20 6d 65 74 68 6f 64 2c 0d  ist"/>) method,.
3000: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 61  .        /// tha
3010: 74 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72  t value is retur
3020: 6e 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20  ned; otherwise, 
3030: 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 73 20  an exception is 
3040: 74 68 72 6f 77 6e 2e 20 20 54 68 65 0d 0a 20 20  thrown.  The..  
3050: 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e        /// return
3060: 65 64 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20  ed value may be 
3070: 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  null...        /
3080: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3090: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62         public ob
30a0: 6a 65 63 74 20 56 61 6c 75 65 0d 0a 20 20 20 20  ject Value..    
30b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30c0: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
30d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30e0: 20 20 20 20 20 20 20 69 66 20 28 21 70 65 72 73         if (!pers
30f0: 69 73 74 65 64 29 0d 0a 20 20 20 20 20 20 20 20  isted)..        
3100: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
3120: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
3130: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
3140: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
3150: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76 61               "va
3160: 6c 75 65 20 77 61 73 20 6e 6f 74 20 70 65 72 73  lue was not pers
3170: 69 73 74 65 64 22 29 3b 0d 0a 20 20 20 20 20 20  isted");..      
3180: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
3190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
31a0: 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20  eturn value;..  
31b0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
31c0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
31d0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
31e0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
31f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3230: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
3240: 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d   Public Methods.
3250: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
3260: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3270: 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74  /// Gets and ret
3280: 75 72 6e 73 20 74 68 65 20 74 79 70 65 20 61 66  urns the type af
3290: 66 69 6e 69 74 79 20 61 73 73 6f 63 69 61 74 65  finity associate
32a0: 64 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75  d with this valu
32b0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
32c0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
32d0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
32e0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
32f0: 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74 79  he type affinity
3300: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
3310: 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20   this value...  
3320: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
3330: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
3340: 62 6c 69 63 20 54 79 70 65 41 66 66 69 6e 69 74  blic TypeAffinit
3350: 79 20 47 65 74 54 79 70 65 41 66 66 69 6e 69 74  y GetTypeAffinit
3360: 79 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  y()..        {..
3370: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3380: 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72  pValue == IntPtr
3390: 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20 54 79  .Zero) return Ty
33a0: 70 65 41 66 66 69 6e 69 74 79 2e 4e 6f 6e 65 3b  peAffinity.None;
33b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
33c0: 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76  turn UnsafeNativ
33d0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
33e0: 5f 76 61 6c 75 65 5f 74 79 70 65 28 70 56 61 6c  _value_type(pVal
33f0: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ue);..        }.
3400: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
3410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3420: 2f 2f 2f 2f 2f 2f 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 2f 2f 2f 2f 2f 2f  ////////////////
3450: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
3460: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
3470: 20 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e       /// Gets an
3480: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75  d returns the nu
3490: 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 61 73  mber of bytes as
34a0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
34b0: 69 73 20 76 61 6c 75 65 2c 20 69 66 0d 0a 20 20  is value, if..  
34c0: 20 20 20 20 20 20 2f 2f 2f 20 69 74 20 72 65 66        /// it ref
34d0: 65 72 73 20 74 6f 20 61 20 55 54 46 2d 38 20 65  ers to a UTF-8 e
34e0: 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 2e 0d 0a  ncoded string...
34f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
3500: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
3510: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
3520: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
3530: 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 61  umber of bytes a
3540: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
3550: 68 69 73 20 76 61 6c 75 65 2e 20 20 54 68 65 20  his value.  The 
3560: 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 0d 0a  returned value..
3570: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 61 79 20          /// may 
3580: 62 65 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  be zero...      
3590: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
35a0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
35b0: 20 69 6e 74 20 47 65 74 42 79 74 65 73 28 29 0d   int GetBytes().
35c0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
35d0: 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c          if (pVal
35e0: 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ue == IntPtr.Zer
35f0: 6f 29 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20  o) return 0;..  
3600: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3610: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
3620: 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 76 61 6c  hods.sqlite3_val
3630: 75 65 5f 62 79 74 65 73 28 70 56 61 6c 75 65 29  ue_bytes(pValue)
3640: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
3650: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
3660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
36a0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
36b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
36c0: 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64 20 72    /// Gets and r
36d0: 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65 65 20  eturns the <see 
36e0: 63 72 65 66 3d 22 53 79 73 74 65 6d 2e 49 6e 74  cref="System.Int
36f0: 33 32 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65  32" /> associate
3700: 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20  d with..        
3710: 2f 2f 2f 20 74 68 69 73 20 76 61 6c 75 65 2e 0d  /// this value..
3720: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
3730: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
3740: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
3750: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
3760: 3c 73 65 65 20 63 72 65 66 3d 22 53 79 73 74 65  <see cref="Syste
3770: 6d 2e 49 6e 74 33 32 22 20 2f 3e 20 61 73 73 6f  m.Int32" /> asso
3780: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
3790: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20   value...       
37a0: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
37b0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
37c0: 69 6e 74 20 47 65 74 49 6e 74 28 29 0d 0a 20 20  int GetInt()..  
37d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
37e0: 20 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20       if (pValue 
37f0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 20  == IntPtr.Zero) 
3800: 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74 28 69  return default(i
3810: 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nt);..          
3820: 20 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e    return UnsafeN
3830: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
3840: 69 74 65 33 5f 76 61 6c 75 65 5f 69 6e 74 28 70  ite3_value_int(p
3850: 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  Value);..       
3860: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
3870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38b0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
38c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
38d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 47 65 74 73          /// Gets
38e0: 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65   and returns the
38f0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 79 73 74   <see cref="Syst
3900: 65 6d 2e 49 6e 74 36 34 22 20 2f 3e 20 61 73 73  em.Int64" /> ass
3910: 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20  ociated with..  
3920: 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 76        /// this v
3930: 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  alue...        /
3940: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
3950: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
3960: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
3970: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
3980: 22 53 79 73 74 65 6d 2e 49 6e 74 36 34 22 20 2f  "System.Int64" /
3990: 3e 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  > associated wit
39a0: 68 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20  h this value... 
39b0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
39c0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70  urns>..        p
39d0: 75 62 6c 69 63 20 6c 6f 6e 67 20 47 65 74 49 6e  ublic long GetIn
39e0: 74 36 34 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  t64()..        {
39f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
3a00: 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50   (pValue == IntP
3a10: 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20  tr.Zero) return 
3a20: 64 65 66 61 75 6c 74 28 6c 6f 6e 67 29 3b 0d 0a  default(long);..
3a30: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
3a40: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
3a50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
3a60: 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76  turn UnsafeNativ
3a70: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
3a80: 5f 76 61 6c 75 65 5f 69 6e 74 36 34 28 70 56 61  _value_int64(pVa
3a90: 6c 75 65 29 3b 0d 0a 23 65 6c 69 66 20 21 53 51  lue);..#elif !SQ
3aa0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
3ab0: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 20             long 
3ac0: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
3ad0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
3ae0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
3af0: 76 61 6c 75 65 5f 69 6e 74 36 34 5f 69 6e 74 65  value_int64_inte
3b00: 72 6f 70 28 70 56 61 6c 75 65 2c 20 6f 75 74 20  rop(pValue, out 
3b10: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
3b20: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
3b30: 65 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20  e;..#else..     
3b40: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
3b50: 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45   NotImplementedE
3b60: 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 23 65 6e  xception();..#en
3b70: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
3b80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
3b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
3be0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
3bf0: 20 20 20 20 2f 2f 2f 20 47 65 74 73 20 61 6e 64      /// Gets and
3c00: 20 72 65 74 75 72 6e 73 20 74 68 65 20 3c 73 65   returns the <se
3c10: 65 20 63 72 65 66 3d 22 53 79 73 74 65 6d 2e 44  e cref="System.D
3c20: 6f 75 62 6c 65 22 20 2f 3e 20 61 73 73 6f 63 69  ouble" /> associ
3c30: 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20  ated with..     
3c40: 20 20 20 2f 2f 2f 20 74 68 69 73 20 76 61 6c 75     /// this valu
3c50: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
3c60: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
3c70: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
3c80: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
3c90: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 79  he <see cref="Sy
3ca0: 73 74 65 6d 2e 44 6f 75 62 6c 65 22 20 2f 3e 20  stem.Double" /> 
3cb0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
3cc0: 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20  this value...   
3cd0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
3ce0: 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ns>..        pub
3cf0: 6c 69 63 20 64 6f 75 62 6c 65 20 47 65 74 44 6f  lic double GetDo
3d00: 75 62 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20  uble()..        
3d10: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
3d20: 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74  f (pValue == Int
3d30: 50 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e  Ptr.Zero) return
3d40: 20 64 65 66 61 75 6c 74 28 64 6f 75 62 6c 65 29   default(double)
3d50: 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ;....#if !PLATFO
3d60: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
3d70: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
3d80: 20 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61   return UnsafeNa
3d90: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
3da0: 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62 6c 65  te3_value_double
3db0: 28 70 56 61 6c 75 65 29 3b 0d 0a 23 65 6c 69 66  (pValue);..#elif
3dc0: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
3dd0: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  D..            d
3de0: 6f 75 62 6c 65 20 76 61 6c 75 65 3b 0d 0a 20 20  ouble value;..  
3df0: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
3e00: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
3e10: 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 6f 75 62  lite3_value_doub
3e20: 6c 65 5f 69 6e 74 65 72 6f 70 28 70 56 61 6c 75  le_interop(pValu
3e30: 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 3b 0d 0a  e, out value);..
3e40: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3e50: 72 6e 20 76 61 6c 75 65 3b 0d 0a 23 65 6c 73 65  rn value;..#else
3e60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
3e70: 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c 65  row new NotImple
3e80: 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e 28  mentedException(
3e90: 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  );..#endif..    
3ea0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
3eb0: 20 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 2f 2f 2f 2f  ////////////////
3ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ef0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
3f00: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
3f10: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 47  >..        /// G
3f20: 65 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ets and returns 
3f30: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  the <see cref="S
3f40: 79 73 74 65 6d 2e 53 74 72 69 6e 67 22 20 2f 3e  ystem.String" />
3f50: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
3f60: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
3f70: 69 73 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  is value...     
3f80: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
3f90: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
3fa0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
3fb0: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
3fc0: 72 65 66 3d 22 53 79 73 74 65 6d 2e 53 74 72 69  ref="System.Stri
3fd0: 6e 67 22 20 2f 3e 20 61 73 73 6f 63 69 61 74 65  ng" /> associate
3fe0: 64 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75  d with this valu
3ff0: 65 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20 20  e.  The..       
4000: 20 2f 2f 2f 20 76 61 6c 75 65 20 69 73 20 63 6f   /// value is co
4010: 6e 76 65 72 74 65 64 20 66 72 6f 6d 20 74 68 65  nverted from the
4020: 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20   UTF-8 encoding 
4030: 70 72 69 6f 72 20 74 6f 20 62 65 69 6e 67 20 72  prior to being r
4040: 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20 20 20  eturned...      
4050: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
4060: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
4070: 20 73 74 72 69 6e 67 20 47 65 74 53 74 72 69 6e   string GetStrin
4080: 67 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  g()..        {..
4090: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
40a0: 70 56 61 6c 75 65 20 3d 3d 20 49 6e 74 50 74 72  pValue == IntPtr
40b0: 2e 5a 65 72 6f 29 20 72 65 74 75 72 6e 20 6e 75  .Zero) return nu
40c0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
40d0: 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 53 74   return SQLiteSt
40e0: 72 69 6e 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55  ring.StringFromU
40f0: 74 66 38 49 6e 74 50 74 72 28 70 56 61 6c 75 65  tf8IntPtr(pValue
4100: 2c 20 47 65 74 42 79 74 65 73 28 29 29 3b 0d 0a  , GetBytes());..
4110: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
4120: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4170: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
4180: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
4190: 2f 2f 20 47 65 74 73 20 61 6e 64 20 72 65 74 75  // Gets and retu
41a0: 72 6e 73 20 74 68 65 20 3c 73 65 65 20 63 72 65  rns the <see cre
41b0: 66 3d 22 53 79 73 74 65 6d 2e 42 79 74 65 22 20  f="System.Byte" 
41c0: 2f 3e 20 61 72 72 61 79 20 61 73 73 6f 63 69 61  /> array associa
41d0: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
41e0: 20 77 69 74 68 20 74 68 69 73 20 76 61 6c 75 65   with this value
41f0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
4200: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
4210: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
4220: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
4230: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 79 73  e <see cref="Sys
4240: 74 65 6d 2e 42 79 74 65 22 20 2f 3e 20 61 72 72  tem.Byte" /> arr
4250: 61 79 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ay associated wi
4260: 74 68 20 74 68 69 73 20 76 61 6c 75 65 2e 0d 0a  th this value...
4270: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
4280: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
4290: 70 75 62 6c 69 63 20 62 79 74 65 5b 5d 20 47 65  public byte[] Ge
42a0: 74 42 6c 6f 62 28 29 0d 0a 20 20 20 20 20 20 20  tBlob()..       
42b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
42c0: 69 66 20 28 70 56 61 6c 75 65 20 3d 3d 20 49 6e  if (pValue == In
42d0: 74 50 74 72 2e 5a 65 72 6f 29 20 72 65 74 75 72  tPtr.Zero) retur
42e0: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
42f0: 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
4300: 74 65 4d 61 72 73 68 61 6c 2e 42 79 74 65 73 46  teMarshal.BytesF
4310: 72 6f 6d 49 6e 74 50 74 72 28 70 56 61 6c 75 65  romIntPtr(pValue
4320: 2c 20 47 65 74 42 79 74 65 73 28 29 29 3b 0d 0a  , GetBytes());..
4330: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
4340: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4390: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
43a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
43b0: 2f 2f 20 55 73 65 73 20 74 68 65 20 6e 61 74 69  // Uses the nati
43c0: 76 65 20 76 61 6c 75 65 20 68 61 6e 64 6c 65 20  ve value handle 
43d0: 74 6f 20 6f 62 74 61 69 6e 20 61 6e 64 20 73 74  to obtain and st
43e0: 6f 72 65 20 74 68 65 20 6d 61 6e 61 67 65 64 20  ore the managed 
43f0: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 2f  value..        /
4400: 2f 2f 20 66 6f 72 20 74 68 69 73 20 6f 62 6a 65  // for this obje
4410: 63 74 20 69 6e 73 74 61 6e 63 65 2c 20 74 68 75  ct instance, thu
4420: 73 20 73 61 76 69 6e 67 20 69 74 20 66 6f 72 20  s saving it for 
4430: 6c 61 74 65 72 20 75 73 65 2e 20 20 54 68 65 20  later use.  The 
4440: 74 79 70 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  type..        //
4450: 2f 20 6f 66 20 74 68 65 20 6d 61 6e 61 67 65 64  / of the managed
4460: 20 76 61 6c 75 65 20 69 73 20 64 65 74 65 72 6d   value is determ
4470: 69 6e 65 64 20 62 79 20 74 68 65 20 74 79 70 65  ined by the type
4480: 20 61 66 66 69 6e 69 74 79 20 6f 66 20 74 68 65   affinity of the
4490: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ..        /// na
44a0: 74 69 76 65 20 76 61 6c 75 65 2e 20 20 49 66 20  tive value.  If 
44b0: 74 68 65 20 74 79 70 65 20 61 66 66 69 6e 69 74  the type affinit
44c0: 79 20 69 73 20 6e 6f 74 20 72 65 63 6f 67 6e 69  y is not recogni
44d0: 7a 65 64 20 62 79 20 74 68 69 73 0d 0a 20 20 20  zed by this..   
44e0: 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2c       /// method,
44f0: 20 6e 6f 20 77 6f 72 6b 20 69 73 20 64 6f 6e 65   no work is done
4500: 20 61 6e 64 20 66 61 6c 73 65 20 69 73 20 72 65   and false is re
4510: 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20  turned...       
4520: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4530: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
4540: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
4550: 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
4560: 74 68 65 20 6e 61 74 69 76 65 20 76 61 6c 75 65  the native value
4570: 20 77 61 73 20 70 65 72 73 69 73 74 65 64 20 73   was persisted s
4580: 75 63 63 65 73 73 66 75 6c 6c 79 2e 0d 0a 20 20  uccessfully...  
4590: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
45a0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  rns>..        pu
45b0: 62 6c 69 63 20 62 6f 6f 6c 20 50 65 72 73 69 73  blic bool Persis
45c0: 74 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  t()..        {..
45d0: 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74              swit
45e0: 63 68 20 28 47 65 74 54 79 70 65 41 66 66 69 6e  ch (GetTypeAffin
45f0: 69 74 79 28 29 29 0d 0a 20 20 20 20 20 20 20 20  ity())..        
4600: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4610: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
4620: 41 66 66 69 6e 69 74 79 2e 55 6e 69 6e 69 74 69  Affinity.Uniniti
4630: 61 6c 69 7a 65 64 3a 0d 0a 20 20 20 20 20 20 20  alized:..       
4640: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
4650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4660: 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
4670: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
4680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
4690: 72 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65  reventNativeAcce
46a0: 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ss();..         
46b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
46c0: 65 74 75 72 6e 20 28 70 65 72 73 69 73 74 65 64  eturn (persisted
46d0: 20 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20   = true);..     
46e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
46f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4700: 20 20 63 61 73 65 20 54 79 70 65 41 66 66 69 6e    case TypeAffin
4710: 69 74 79 2e 49 6e 74 36 34 3a 0d 0a 20 20 20 20  ity.Int64:..    
4720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4730: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
4740: 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65             value
4750: 20 3d 20 47 65 74 49 6e 74 36 34 28 29 3b 0d 0a   = GetInt64();..
4760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4770: 20 20 20 20 20 20 20 20 50 72 65 76 65 6e 74 4e          PreventN
4780: 61 74 69 76 65 41 63 63 65 73 73 28 29 3b 0d 0a  ativeAccess();..
4790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
47b0: 70 65 72 73 69 73 74 65 64 20 3d 20 74 72 75 65  persisted = true
47c0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
47d0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
47e0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
47f0: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44 6f 75  TypeAffinity.Dou
4800: 62 6c 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ble:..          
4810: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
4820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4830: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 47 65 74       value = Get
4840: 44 6f 75 62 6c 65 28 29 3b 0d 0a 20 20 20 20 20  Double();..     
4850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4860: 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76 65     PreventNative
4870: 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20  Access();..     
4880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4890: 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73 69     return (persi
48a0: 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a 20  sted = true);.. 
48b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
48c0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
48d0: 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65 41        case TypeA
48e0: 66 66 69 6e 69 74 79 2e 54 65 78 74 3a 0d 0a 20  ffinity.Text:.. 
48f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4900: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
4910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
4920: 6c 75 65 20 3d 20 47 65 74 53 74 72 69 6e 67 28  lue = GetString(
4930: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
4940: 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65 76              Prev
4950: 65 6e 74 4e 61 74 69 76 65 41 63 63 65 73 73 28  entNativeAccess(
4960: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
4970: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
4980: 72 6e 20 28 70 65 72 73 69 73 74 65 64 20 3d 20  rn (persisted = 
4990: 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  true);..        
49a0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
49b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
49c0: 61 73 65 20 54 79 70 65 41 66 66 69 6e 69 74 79  ase TypeAffinity
49d0: 2e 42 6c 6f 62 3a 0d 0a 20 20 20 20 20 20 20 20  .Blob:..        
49e0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
49f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4a00: 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 47         value = G
4a10: 65 74 42 79 74 65 73 28 29 3b 0d 0a 20 20 20 20  etBytes();..    
4a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4a30: 20 20 20 20 50 72 65 76 65 6e 74 4e 61 74 69 76      PreventNativ
4a40: 65 41 63 63 65 73 73 28 29 3b 0d 0a 20 20 20 20  eAccess();..    
4a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4a60: 20 20 20 20 72 65 74 75 72 6e 20 28 70 65 72 73      return (pers
4a70: 69 73 74 65 64 20 3d 20 74 72 75 65 29 3b 0d 0a  isted = true);..
4a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4a90: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
4aa0: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
4ab0: 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 3a 0d 0a  Affinity.Null:..
4ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ad0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76                 v
4af0: 61 6c 75 65 20 3d 20 44 42 4e 75 6c 6c 2e 56 61  alue = DBNull.Va
4b00: 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
4b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72                Pr
4b20: 65 76 65 6e 74 4e 61 74 69 76 65 41 63 63 65 73  eventNativeAcces
4b30: 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  s();..          
4b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
4b50: 74 75 72 6e 20 28 70 65 72 73 69 73 74 65 64 20  turn (persisted 
4b60: 3d 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20  = true);..      
4b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
4b80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4b90: 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20   default:..     
4ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
4bb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4bc0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4bd0: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
4be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
4bf0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
4c00: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
4c10: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
4c20: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
4c30: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
4c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c80: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
4c90: 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65  egion SQLiteInde
4ca0: 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 20 45 6e  xConstraintOp En
4cb0: 75 6d 65 72 61 74 69 6f 6e 0d 0a 20 20 20 20 2f  umeration..    /
4cc0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
4cd0: 20 20 2f 2f 2f 20 54 68 65 73 65 20 61 72 65 20    /// These are 
4ce0: 74 68 65 20 61 6c 6c 6f 77 65 64 20 76 61 6c 75  the allowed valu
4cf0: 65 73 20 66 6f 72 20 74 68 65 20 6f 70 65 72 61  es for the opera
4d00: 74 6f 72 73 20 74 68 61 74 20 61 72 65 20 70 61  tors that are pa
4d10: 72 74 20 6f 66 20 61 0d 0a 20 20 20 20 2f 2f 2f  rt of a..    ///
4d20: 20 63 6f 6e 73 74 72 61 69 6e 74 20 74 65 72 6d   constraint term
4d30: 20 69 6e 20 74 68 65 20 57 48 45 52 45 20 63 6c   in the WHERE cl
4d40: 61 75 73 65 20 6f 66 20 61 20 71 75 65 72 79 20  ause of a query 
4d50: 74 68 61 74 20 75 73 65 73 20 61 20 76 69 72 74  that uses a virt
4d60: 75 61 6c 0d 0a 20 20 20 20 2f 2f 2f 20 74 61 62  ual..    /// tab
4d70: 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  le...    /// </s
4d80: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
4d90: 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 49  lic enum SQLiteI
4da0: 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70  ndexConstraintOp
4db0: 20 3a 20 62 79 74 65 0d 0a 20 20 20 20 7b 0d 0a   : byte..    {..
4dc0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
4dd0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
4de0: 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72 65  // This value re
4df0: 70 72 65 73 65 6e 74 73 20 74 68 65 20 65 71 75  presents the equ
4e00: 61 6c 69 74 79 20 6f 70 65 72 61 74 6f 72 2e 0d  ality operator..
4e10: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
4e20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
4e30: 20 45 71 75 61 6c 54 6f 20 3d 20 32 2c 0d 0a 0d   EqualTo = 2,...
4e40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
4e50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
4e60: 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20 72  /// This value r
4e70: 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 67 72  epresents the gr
4e80: 65 61 74 65 72 20 74 68 61 6e 20 6f 70 65 72 61  eater than opera
4e90: 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tor...        //
4ea0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4eb0: 20 20 20 20 20 20 47 72 65 61 74 65 72 54 68 61        GreaterTha
4ec0: 6e 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20 20 20 20  n = 4,....      
4ed0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4ee0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
4ef0: 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e  s value represen
4f00: 74 73 20 74 68 65 20 6c 65 73 73 20 74 68 61 6e  ts the less than
4f10: 20 6f 72 20 65 71 75 61 6c 20 74 6f 20 6f 70 65   or equal to ope
4f20: 72 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  rator...        
4f30: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
4f40: 20 20 20 20 20 20 20 20 4c 65 73 73 54 68 61 6e          LessThan
4f50: 4f 72 45 71 75 61 6c 54 6f 20 3d 20 38 2c 0d 0a  OrEqualTo = 8,..
4f60: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
4f70: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
4f80: 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c 75 65 20   /// This value 
4f90: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 6c  represents the l
4fa0: 65 73 73 20 74 68 61 6e 20 6f 70 65 72 61 74 6f  ess than operato
4fb0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
4fc0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4fd0: 20 20 20 20 4c 65 73 73 54 68 61 6e 20 3d 20 31      LessThan = 1
4fe0: 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  6,....        //
4ff0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5000: 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61       /// This va
5010: 6c 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74  lue represents t
5020: 68 65 20 67 72 65 61 74 65 72 20 74 68 61 6e 20  he greater than 
5030: 6f 72 20 65 71 75 61 6c 20 74 6f 20 6f 70 65 72  or equal to oper
5040: 61 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ator...        /
5050: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5060: 20 20 20 20 20 20 20 47 72 65 61 74 65 72 54 68         GreaterTh
5070: 61 6e 4f 72 45 71 75 61 6c 54 6f 20 3d 20 33 32  anOrEqualTo = 32
5080: 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ,....        ///
5090: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
50a0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 76 61 6c      /// This val
50b0: 75 65 20 72 65 70 72 65 73 65 6e 74 73 20 74 68  ue represents th
50c0: 65 20 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72  e MATCH operator
50d0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
50e0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
50f0: 20 20 20 4d 61 74 63 68 20 3d 20 36 34 0d 0a 20     Match = 64.. 
5100: 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
5110: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
5120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5160: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
5170: 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64  region SQLiteInd
5180: 65 78 43 6f 6e 73 74 72 61 69 6e 74 20 48 65 6c  exConstraint Hel
5190: 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  per Class..    /
51a0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
51b0: 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
51c0: 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20   represents the 
51d0: 6e 61 74 69 76 65 20 73 71 6c 69 74 65 33 5f 69  native sqlite3_i
51e0: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 20  ndex_constraint 
51f0: 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20 2f  structure..    /
5200: 2f 2f 20 66 72 6f 6d 20 74 68 65 20 53 51 4c 69  // from the SQLi
5210: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e  te core library.
5220: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
5230: 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
5240: 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
5250: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
5260: 69 6e 74 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  int..    {..    
5270: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65      #region Inte
5280: 72 6e 61 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72  rnal Constructor
5290: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
52a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
52b0: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
52c0: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
52d0: 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67  this class using
52e0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e   the specified n
52f0: 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 2f  ative..        /
5300: 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78  // sqlite3_index
5310: 5f 63 6f 6e 73 74 72 61 69 6e 74 20 73 74 72 75  _constraint stru
5320: 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
5330: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5340: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
5350: 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 73 74 72 61  am name="constra
5360: 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  int">..        /
5370: 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 73 71  // The native sq
5380: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
5390: 74 72 61 69 6e 74 20 73 74 72 75 63 74 75 72 65  traint structure
53a0: 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20   to use...      
53b0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
53c0: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
53d0: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
53e0: 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20 20  traint(..       
53f0: 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76       UnsafeNativ
5400: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
5410: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
5420: 74 20 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20  t constraint..  
5430: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
5440: 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
5450: 63 6f 6e 73 74 72 61 69 6e 74 2e 69 43 6f 6c 75  constraint.iColu
5460: 6d 6e 2c 20 63 6f 6e 73 74 72 61 69 6e 74 2e 6f  mn, constraint.o
5470: 70 2c 20 63 6f 6e 73 74 72 61 69 6e 74 2e 75 73  p, constraint.us
5480: 61 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  able,..         
5490: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 72            constr
54a0: 61 69 6e 74 2e 69 54 65 72 6d 4f 66 66 73 65 74  aint.iTermOffset
54b0: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
54c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
54d0: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
54e0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
54f0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
5500: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
5510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
5550: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
5560: 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72  vate Constructor
5570: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
5580: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
5590: 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73    /// Constructs
55a0: 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
55b0: 74 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67  this class using
55c0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66   the specified f
55d0: 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ield..        //
55e0: 2f 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20  / values...     
55f0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5600: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
5610: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 43 6f 6c  param name="iCol
5620: 75 6d 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  umn">..        /
5630: 2f 2f 20 43 6f 6c 75 6d 6e 20 6f 6e 20 6c 65 66  // Column on lef
5640: 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20 63  t-hand side of c
5650: 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20  onstraint...    
5660: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
5670: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
5680: 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 70 22 3e 0d  aram name="op">.
5690: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e  .        /// Con
56a0: 73 74 72 61 69 6e 74 20 6f 70 65 72 61 74 6f 72  straint operator
56b0: 20 28 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c   (<see cref="SQL
56c0: 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69  iteIndexConstrai
56d0: 6e 74 4f 70 22 20 2f 3e 29 2e 0d 0a 20 20 20 20  ntOp" />)...    
56e0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
56f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
5700: 61 72 61 6d 20 6e 61 6d 65 3d 22 75 73 61 62 6c  aram name="usabl
5710: 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e">..        ///
5720: 20 54 72 75 65 20 69 66 20 74 68 69 73 20 63 6f   True if this co
5730: 6e 73 74 72 61 69 6e 74 20 69 73 20 75 73 61 62  nstraint is usab
5740: 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
5750: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
5760: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5770: 6d 65 3d 22 69 54 65 72 6d 4f 66 66 73 65 74 22  me="iTermOffset"
5780: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 55  >..        /// U
5790: 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 2d  sed internally -
57a0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
57b0: 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65  iteManagedModule
57c0: 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a  .BestIndex" />..
57d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75          /// shou
57e0: 6c 64 20 69 67 6e 6f 72 65 2e 0d 0a 20 20 20 20  ld ignore...    
57f0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
5800: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
5810: 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e  e SQLiteIndexCon
5820: 73 74 72 61 69 6e 74 28 0d 0a 20 20 20 20 20 20  straint(..      
5830: 20 20 20 20 20 20 69 6e 74 20 69 43 6f 6c 75 6d        int iColum
5840: 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n,..            
5850: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
5860: 72 61 69 6e 74 4f 70 20 6f 70 2c 0d 0a 20 20 20  raintOp op,..   
5870: 20 20 20 20 20 20 20 20 20 62 79 74 65 20 75 73           byte us
5880: 61 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  able,..         
5890: 20 20 20 69 6e 74 20 69 54 65 72 6d 4f 66 66 73     int iTermOffs
58a0: 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
58b0: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
58c0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69            this.i
58d0: 43 6f 6c 75 6d 6e 20 3d 20 69 43 6f 6c 75 6d 6e  Column = iColumn
58e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ;..            t
58f0: 68 69 73 2e 6f 70 20 3d 20 6f 70 3b 0d 0a 20 20  his.op = op;..  
5900: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 75            this.u
5910: 73 61 62 6c 65 20 3d 20 75 73 61 62 6c 65 3b 0d  sable = usable;.
5920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
5930: 73 2e 69 54 65 72 6d 4f 66 66 73 65 74 20 3d 20  s.iTermOffset = 
5940: 69 54 65 72 6d 4f 66 66 73 65 74 3b 0d 0a 20 20  iTermOffset;..  
5950: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
5960: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
5970: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
5980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
59b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
59c0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
59d0: 20 50 75 62 6c 69 63 20 46 69 65 6c 64 73 0d 0a   Public Fields..
59e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
59f0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
5a00: 2f 2f 20 43 6f 6c 75 6d 6e 20 6f 6e 20 6c 65 66  // Column on lef
5a10: 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20 63  t-hand side of c
5a20: 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20 20 20  onstraint...    
5a30: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5a40: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
5a50: 69 63 20 69 6e 74 20 69 43 6f 6c 75 6d 6e 3b 0d  ic int iColumn;.
5a60: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
5a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ab0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
5ac0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5ad0: 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 61 69      /// Constrai
5ae0: 6e 74 20 6f 70 65 72 61 74 6f 72 20 28 3c 73 65  nt operator (<se
5af0: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
5b00: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 4f 70 22  dexConstraintOp"
5b10: 20 2f 3e 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f   />)...        /
5b20: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
5b30: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
5b40: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
5b50: 69 6e 74 4f 70 20 6f 70 3b 0d 0a 0d 0a 20 20 20  intOp op;....   
5b60: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
5b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
5bb0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
5bc0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
5bd0: 2f 20 54 72 75 65 20 69 66 20 74 68 69 73 20 63  / True if this c
5be0: 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 75 73 61  onstraint is usa
5bf0: 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
5c00: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5c10: 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74        public byt
5c20: 65 20 75 73 61 62 6c 65 3b 0d 0a 0d 0a 20 20 20  e usable;....   
5c30: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
5c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c50: 2f 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
5c80: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
5c90: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
5ca0: 2f 20 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c  / Used internall
5cb0: 79 20 2d 20 3c 73 65 65 20 63 72 65 66 3d 22 49  y - <see cref="I
5cc0: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
5cd0: 75 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f  ule.BestIndex" /
5ce0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  >..        /// s
5cf0: 68 6f 75 6c 64 20 69 67 6e 6f 72 65 2e 0d 0a 20  hould ignore... 
5d00: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
5d10: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
5d20: 75 62 6c 69 63 20 69 6e 74 20 69 54 65 72 6d 4f  ublic int iTermO
5d30: 66 66 73 65 74 3b 0d 0a 20 20 20 20 20 20 20 20  ffset;..        
5d40: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
5d50: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
5d60: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
5d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5db0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
5dc0: 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 4f  ion SQLiteIndexO
5dd0: 72 64 65 72 42 79 20 48 65 6c 70 65 72 20 43 6c  rderBy Helper Cl
5de0: 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ass..    /// <su
5df0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
5e00: 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65  This class repre
5e10: 73 65 6e 74 73 20 74 68 65 20 6e 61 74 69 76 65  sents the native
5e20: 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f   sqlite3_index_o
5e30: 72 64 65 72 62 79 20 73 74 72 75 63 74 75 72 65  rderby structure
5e40: 20 66 72 6f 6d 0d 0a 20 20 20 20 2f 2f 2f 20 74   from..    /// t
5e50: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
5e60: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f  ibrary...    ///
5e70: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5e80: 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20 63   public sealed c
5e90: 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65 78  lass SQLiteIndex
5ea0: 4f 72 64 65 72 42 79 0d 0a 20 20 20 20 7b 0d 0a  OrderBy..    {..
5eb0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
5ec0: 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72 75  Internal Constru
5ed0: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  ctors..        /
5ee0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5ef0: 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72        /// Constr
5f00: 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65  ucts an instance
5f10: 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 20 75   of this class u
5f20: 73 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69  sing the specifi
5f30: 65 64 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  ed native..     
5f40: 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69     /// sqlite3_i
5f50: 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 73 74 72  ndex_orderby str
5f60: 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20  ucture...       
5f70: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5f80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
5f90: 72 61 6d 20 6e 61 6d 65 3d 22 6f 72 64 65 72 42  ram name="orderB
5fa0: 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y">..        ///
5fb0: 20 54 68 65 20 6e 61 74 69 76 65 20 73 71 6c 69   The native sqli
5fc0: 74 65 33 5f 69 6e 64 65 78 5f 6f 72 64 65 72 62  te3_index_orderb
5fd0: 79 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 75  y structure to u
5fe0: 73 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  se...        ///
5ff0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
6000: 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
6010: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 28 0d  teIndexOrderBy(.
6020: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73  .            Uns
6030: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
6040: 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f  .sqlite3_index_o
6050: 72 64 65 72 62 79 20 6f 72 64 65 72 42 79 0d 0a  rderby orderBy..
6060: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
6070: 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
6080: 73 28 6f 72 64 65 72 42 79 2e 69 43 6f 6c 75 6d  s(orderBy.iColum
6090: 6e 2c 20 6f 72 64 65 72 42 79 2e 64 65 73 63 29  n, orderBy.desc)
60a0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
60b0: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
60c0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
60d0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
60e0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
60f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6130: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
6140: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
6150: 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  ate Constructors
6160: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
6170: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
6180: 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
6190: 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
61a0: 68 69 73 20 63 6c 61 73 73 20 75 73 69 6e 67 20  his class using 
61b0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66 69  the specified fi
61c0: 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  eld..        ///
61d0: 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20   values...      
61e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
61f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
6200: 61 72 61 6d 20 6e 61 6d 65 3d 22 69 43 6f 6c 75  aram name="iColu
6210: 6d 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  mn">..        //
6220: 2f 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 2e  / Column number.
6230: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
6240: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
6250: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6260: 22 64 65 73 63 22 3e 0d 0a 20 20 20 20 20 20 20  "desc">..       
6270: 20 2f 2f 2f 20 54 72 75 65 20 66 6f 72 20 44 45   /// True for DE
6280: 53 43 2e 20 20 46 61 6c 73 65 20 66 6f 72 20 41  SC.  False for A
6290: 53 43 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  SC...        ///
62a0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
62b0: 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
62c0: 65 49 6e 64 65 78 4f 72 64 65 72 42 79 28 0d 0a  eIndexOrderBy(..
62d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
62e0: 69 43 6f 6c 75 6d 6e 2c 0d 0a 20 20 20 20 20 20  iColumn,..      
62f0: 20 20 20 20 20 20 62 79 74 65 20 64 65 73 63 0d        byte desc.
6300: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
6310: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6320: 20 20 20 20 20 20 20 74 68 69 73 2e 69 43 6f 6c         this.iCol
6330: 75 6d 6e 20 3d 20 69 43 6f 6c 75 6d 6e 3b 0d 0a  umn = iColumn;..
6340: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
6350: 2e 64 65 73 63 20 3d 20 64 65 73 63 3b 0d 0a 20  .desc = desc;.. 
6360: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
6370: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6380: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
6390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
63d0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
63e0: 6e 20 50 75 62 6c 69 63 20 46 69 65 6c 64 73 0d  n Public Fields.
63f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  .        /// <su
6400: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
6410: 2f 2f 2f 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65  /// Column numbe
6420: 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  r...        /// 
6430: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
6440: 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 69      public int i
6450: 43 6f 6c 75 6d 6e 3b 0d 0a 0d 0a 20 20 20 20 20  Column;....     
6460: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
6470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
64b0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
64c0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
64d0: 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20 20  True for DESC.  
64e0: 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 0d 0a  False for ASC...
64f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
6500: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
6510: 70 75 62 6c 69 63 20 62 79 74 65 20 64 65 73 63  public byte desc
6520: 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  ;..        #endr
6530: 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20  egion..    }..  
6540: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6550: 20 20 20 20 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 2f  ////////////////
6590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
65a0: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
65b0: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
65c0: 61 69 6e 74 55 73 61 67 65 20 48 65 6c 70 65 72  aintUsage Helper
65d0: 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20   Class..    /// 
65e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
65f0: 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20 72 65  // This class re
6600: 70 72 65 73 65 6e 74 73 20 74 68 65 20 6e 61 74  presents the nat
6610: 69 76 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  ive sqlite3_inde
6620: 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61  x_constraint_usa
6630: 67 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 74 72 75  ge..    /// stru
6640: 63 74 75 72 65 20 66 72 6f 6d 20 74 68 65 20 53  cture from the S
6650: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
6660: 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ry...    /// </s
6670: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62  ummary>..    pub
6680: 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73  lic sealed class
6690: 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73   SQLiteIndexCons
66a0: 74 72 61 69 6e 74 55 73 61 67 65 0d 0a 20 20 20  traintUsage..   
66b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
66c0: 69 6f 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e  ion Internal Con
66d0: 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
66e0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
66f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
6700: 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
6710: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
6720: 73 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65  ss using the spe
6730: 63 69 66 69 65 64 20 6e 61 74 69 76 65 0d 0a 20  cified native.. 
6740: 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
6750: 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
6760: 69 6e 74 5f 75 73 61 67 65 20 73 74 72 75 63 74  int_usage struct
6770: 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
6780: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
6790: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
67a0: 20 6e 61 6d 65 3d 22 63 6f 6e 73 74 72 61 69 6e   name="constrain
67b0: 74 55 73 61 67 65 22 3e 0d 0a 20 20 20 20 20 20  tUsage">..      
67c0: 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
67d0: 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63   sqlite3_index_c
67e0: 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20  onstraint_usage 
67f0: 73 74 72 75 63 74 75 72 65 20 74 6f 20 75 73 65  structure to use
6800: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6810: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
6820: 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
6830: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
6840: 73 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20  sage(..         
6850: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
6860: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69  ethods.sqlite3_i
6870: 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f  ndex_constraint_
6880: 75 73 61 67 65 20 63 6f 6e 73 74 72 61 69 6e 74  usage constraint
6890: 55 73 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20  Usage..         
68a0: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
68b0: 20 20 3a 20 74 68 69 73 28 63 6f 6e 73 74 72 61    : this(constra
68c0: 69 6e 74 55 73 61 67 65 2e 61 72 67 76 49 6e 64  intUsage.argvInd
68d0: 65 78 2c 20 63 6f 6e 73 74 72 61 69 6e 74 55 73  ex, constraintUs
68e0: 61 67 65 2e 6f 6d 69 74 29 0d 0a 20 20 20 20 20  age.omit)..     
68f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
6900: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
6910: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
6920: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
6930: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
6940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6980: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
6990: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
69a0: 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
69b0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
69c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f  ..        /// Co
69d0: 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
69e0: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
69f0: 73 73 20 75 73 69 6e 67 20 74 68 65 20 73 70 65  ss using the spe
6a00: 63 69 66 69 65 64 20 66 69 65 6c 64 0d 0a 20 20  cified field..  
6a10: 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73        /// values
6a20: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
6a30: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
6a40: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
6a50: 6d 65 3d 22 61 72 67 76 49 6e 64 65 78 22 3e 0d  me="argvIndex">.
6a60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66 20  .        /// If 
6a70: 67 72 65 61 74 65 72 20 74 68 61 6e 20 30 2c 20  greater than 0, 
6a80: 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20 70 61  constraint is pa
6a90: 72 74 20 6f 66 20 61 72 67 76 20 74 6f 20 78 46  rt of argv to xF
6aa0: 69 6c 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20  ilter...        
6ab0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
6ac0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
6ad0: 20 6e 61 6d 65 3d 22 6f 6d 69 74 22 3e 0d 0a 20   name="omit">.. 
6ae0: 20 20 20 20 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f         /// Do no
6af0: 74 20 63 6f 64 65 20 61 20 74 65 73 74 20 66 6f  t code a test fo
6b00: 72 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69 6e  r this constrain
6b10: 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
6b20: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
6b30: 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
6b40: 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
6b50: 73 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20  sage(..         
6b60: 20 20 20 69 6e 74 20 61 72 67 76 49 6e 64 65 78     int argvIndex
6b70: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ,..            b
6b80: 79 74 65 20 6f 6d 69 74 0d 0a 20 20 20 20 20 20  yte omit..      
6b90: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
6ba0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6bb0: 74 68 69 73 2e 61 72 67 76 49 6e 64 65 78 20 3d  this.argvIndex =
6bc0: 20 61 72 67 76 49 6e 64 65 78 3b 0d 0a 20 20 20   argvIndex;..   
6bd0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 6d           this.om
6be0: 69 74 20 3d 20 6f 6d 69 74 3b 0d 0a 20 20 20 20  it = omit;..    
6bf0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
6c00: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
6c10: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
6c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
6c60: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
6c70: 50 75 62 6c 69 63 20 46 69 65 6c 64 73 0d 0a 20  Public Fields.. 
6c80: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
6c90: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
6ca0: 2f 20 49 66 20 67 72 65 61 74 65 72 20 74 68 61  / If greater tha
6cb0: 6e 20 30 2c 20 63 6f 6e 73 74 72 61 69 6e 74 20  n 0, constraint 
6cc0: 69 73 20 70 61 72 74 20 6f 66 20 61 72 67 76 20  is part of argv 
6cd0: 74 6f 20 78 46 69 6c 74 65 72 2e 0d 0a 20 20 20  to xFilter...   
6ce0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
6cf0: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
6d00: 6c 69 63 20 69 6e 74 20 61 72 67 76 49 6e 64 65  lic int argvInde
6d10: 78 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  x;....        //
6d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d60: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
6d70: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6d80: 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 6f 20 6e          /// Do n
6d90: 6f 74 20 63 6f 64 65 20 61 20 74 65 73 74 20 66  ot code a test f
6da0: 6f 72 20 74 68 69 73 20 63 6f 6e 73 74 72 61 69  or this constrai
6db0: 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nt...        ///
6dc0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6dd0: 20 20 20 20 20 70 75 62 6c 69 63 20 62 79 74 65       public byte
6de0: 20 6f 6d 69 74 3b 0d 0a 20 20 20 20 20 20 20 20   omit;..        
6df0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
6e00: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
6e10: 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  n....    ///////
6e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e60: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67  ////....    #reg
6e70: 69 6f 6e 20 53 51 4c 69 74 65 49 6e 64 65 78 49  ion SQLiteIndexI
6e80: 6e 70 75 74 73 20 48 65 6c 70 65 72 20 43 6c 61  nputs Helper Cla
6e90: 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ss..    /// <sum
6ea0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
6eb0: 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73  his class repres
6ec0: 65 6e 74 73 20 74 68 65 20 76 61 72 69 6f 75 73  ents the various
6ed0: 20 69 6e 70 75 74 73 20 70 72 6f 76 69 64 65 64   inputs provided
6ee0: 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63   by the SQLite c
6ef0: 6f 72 65 0d 0a 20 20 20 20 2f 2f 2f 20 6c 69 62  ore..    /// lib
6f00: 72 61 72 79 20 74 6f 20 74 68 65 20 3c 73 65 65  rary to the <see
6f10: 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61   cref="ISQLiteMa
6f20: 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74  nagedModule.Best
6f30: 49 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64  Index" /> method
6f40: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
6f50: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
6f60: 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  c sealed class S
6f70: 51 4c 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73  QLiteIndexInputs
6f80: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
6f90: 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72 6e 61   #region Interna
6fa0: 6c 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  l Constructors..
6fb0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
6fc0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
6fd0: 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e  // Constructs an
6fe0: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
6ff0: 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  s class...      
7000: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
7010: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
7020: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 43 6f 6e 73  aram name="nCons
7030: 74 72 61 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20  traint">..      
7040: 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
7050: 20 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53   of <see cref="S
7060: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
7070: 61 69 6e 74 22 20 2f 3e 20 69 6e 73 74 61 6e 63  aint" /> instanc
7080: 65 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f  es to..        /
7090: 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20  // pre-allocate 
70a0: 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20  space for...    
70b0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
70c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
70d0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 4f 72 64 65  aram name="nOrde
70e0: 72 42 79 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  rBy">..        /
70f0: 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  // The number of
7100: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
7110: 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79 22 20  teIndexOrderBy" 
7120: 2f 3e 20 69 6e 73 74 61 6e 63 65 73 20 74 6f 0d  /> instances to.
7130: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 72 65  .        /// pre
7140: 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20  -allocate space 
7150: 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  for...        //
7160: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
7170: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
7180: 69 74 65 49 6e 64 65 78 49 6e 70 75 74 73 28 69  iteIndexInputs(i
7190: 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 20  nt nConstraint, 
71a0: 69 6e 74 20 6e 4f 72 64 65 72 42 79 29 0d 0a 20  int nOrderBy).. 
71b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
71c0: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
71d0: 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e  s = new SQLiteIn
71e0: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 5b 6e 43  dexConstraint[nC
71f0: 6f 6e 73 74 72 61 69 6e 74 5d 3b 0d 0a 20 20 20  onstraint];..   
7200: 20 20 20 20 20 20 20 20 20 6f 72 64 65 72 42 79           orderBy
7210: 73 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 49 6e  s = new SQLiteIn
7220: 64 65 78 4f 72 64 65 72 42 79 5b 6e 4f 72 64 65  dexOrderBy[nOrde
7230: 72 42 79 5d 3b 0d 0a 20 20 20 20 20 20 20 20 7d  rBy];..        }
7240: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
7250: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
7260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
72b0: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
72c0: 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20  c Properties..  
72d0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
72e0: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
72f0: 69 6e 74 5b 5d 20 63 6f 6e 73 74 72 61 69 6e 74  int[] constraint
7300: 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s;..        /// 
7310: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
7320: 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20     /// An array 
7330: 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
7340: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
7350: 69 6e 74 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  int" /> object i
7360: 6e 73 74 61 6e 63 65 73 2c 0d 0a 20 20 20 20 20  nstances,..     
7370: 20 20 20 2f 2f 2f 20 65 61 63 68 20 63 6f 6e 74     /// each cont
7380: 61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69  aining informati
7390: 6f 6e 20 73 75 70 70 6c 69 65 64 20 62 79 20 74  on supplied by t
73a0: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
73b0: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
73c0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
73d0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
73e0: 53 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74  SQLiteIndexConst
73f0: 72 61 69 6e 74 5b 5d 20 43 6f 6e 73 74 72 61 69  raint[] Constrai
7400: 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  nts..        {..
7410: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
7420: 7b 20 72 65 74 75 72 6e 20 63 6f 6e 73 74 72 61  { return constra
7430: 69 6e 74 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20  ints; }..       
7440: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 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: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
74a0: 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 49   private SQLiteI
74b0: 6e 64 65 78 4f 72 64 65 72 42 79 5b 5d 20 6f 72  ndexOrderBy[] or
74c0: 64 65 72 42 79 73 3b 0d 0a 20 20 20 20 20 20 20  derBys;..       
74d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
74e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61          /// An a
74f0: 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72 65  rray of <see cre
7500: 66 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 4f 72  f="SQLiteIndexOr
7510: 64 65 72 42 79 22 20 2f 3e 20 6f 62 6a 65 63 74  derBy" /> object
7520: 20 69 6e 73 74 61 6e 63 65 73 2c 0d 0a 20 20 20   instances,..   
7530: 20 20 20 20 20 2f 2f 2f 20 65 61 63 68 20 63 6f       /// each co
7540: 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d 61  ntaining informa
7550: 74 69 6f 6e 20 73 75 70 70 6c 69 65 64 20 62 79  tion supplied by
7560: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
7570: 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
7580: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
7590: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
75a0: 63 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  c SQLiteIndexOrd
75b0: 65 72 42 79 5b 5d 20 4f 72 64 65 72 42 79 73 0d  erBy[] OrderBys.
75c0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
75d0: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
75e0: 74 75 72 6e 20 6f 72 64 65 72 42 79 73 3b 20 7d  turn orderBys; }
75f0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
7600: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
7610: 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
7620: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
7630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
7680: 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 49   #region SQLiteI
7690: 6e 64 65 78 4f 75 74 70 75 74 73 20 48 65 6c 70  ndexOutputs Help
76a0: 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f 2f  er Class..    //
76b0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
76c0: 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73 20   /// This class 
76d0: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 76  represents the v
76e0: 61 72 69 6f 75 73 20 6f 75 74 70 75 74 73 20 70  arious outputs p
76f0: 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53  rovided to the S
7700: 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20  QLite core..    
7710: 2f 2f 2f 20 6c 69 62 72 61 72 79 20 62 79 20 74  /// library by t
7720: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
7730: 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
7740: 6c 65 2e 42 65 73 74 49 6e 64 65 78 22 20 2f 3e  le.BestIndex" />
7750: 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 2f 2f   method...    //
7760: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
7770: 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20    public sealed 
7780: 63 6c 61 73 73 20 53 51 4c 69 74 65 49 6e 64 65  class SQLiteInde
7790: 78 4f 75 74 70 75 74 73 0d 0a 20 20 20 20 7b 0d  xOutputs..    {.
77a0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
77b0: 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74 72   Internal Constr
77c0: 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
77d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
77e0: 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74         /// Const
77f0: 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e 63  ructs an instanc
7800: 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73 2e  e of this class.
7810: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
7820: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
7830: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
7840: 65 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74 22 3e  e="nConstraint">
7850: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
7860: 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65  e number of <see
7870: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
7880: 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  exConstraintUsag
7890: 65 22 20 2f 3e 20 69 6e 73 74 61 6e 63 65 73 0d  e" /> instances.
78a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  .        /// to 
78b0: 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20 73 70 61  pre-allocate spa
78c0: 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20 20 20 20  ce for...       
78d0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
78e0: 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
78f0: 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70 75  SQLiteIndexOutpu
7900: 74 73 28 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69  ts(int nConstrai
7910: 6e 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  nt)..        {..
7920: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73              cons
7930: 74 72 61 69 6e 74 55 73 61 67 65 73 20 3d 20 6e  traintUsages = n
7940: 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78 43 6f  ew SQLiteIndexCo
7950: 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 6e 43  nstraintUsage[nC
7960: 6f 6e 73 74 72 61 69 6e 74 5d 3b 0d 0a 20 20 20  onstraint];..   
7970: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
7980: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
7990: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
79a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
79e0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
79f0: 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69   Public Properti
7a00: 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  es..        priv
7a10: 61 74 65 20 53 51 4c 69 74 65 49 6e 64 65 78 43  ate SQLiteIndexC
7a20: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d  onstraintUsage[]
7a30: 20 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65   constraintUsage
7a40: 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s;..        /// 
7a50: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
7a60: 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20     /// An array 
7a70: 6f 66 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  of <see cref="SQ
7a80: 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61  LiteIndexConstra
7a90: 69 6e 74 55 73 61 67 65 22 20 2f 3e 20 6f 62 6a  intUsage" /> obj
7aa0: 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ect..        ///
7ab0: 20 69 6e 73 74 61 6e 63 65 73 2c 20 65 61 63 68   instances, each
7ac0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f   containing info
7ad0: 72 6d 61 74 69 6f 6e 20 74 6f 20 62 65 20 73 75  rmation to be su
7ae0: 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 53 51  pplied to the SQ
7af0: 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  Lite..        //
7b00: 2f 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d  / core library..
7b10: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
7b20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7b30: 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49 6e   public SQLiteIn
7b40: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  dexConstraintUsa
7b50: 67 65 5b 5d 20 43 6f 6e 73 74 72 61 69 6e 74 55  ge[] ConstraintU
7b60: 73 61 67 65 73 0d 0a 20 20 20 20 20 20 20 20 7b  sages..        {
7b70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
7b80: 74 20 7b 20 72 65 74 75 72 6e 20 63 6f 6e 73 74  t { return const
7b90: 72 61 69 6e 74 55 73 61 67 65 73 3b 20 7d 0d 0a  raintUsages; }..
7ba0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
7bb0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
7bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7c00: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
7c10: 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 3b  int indexNumber;
7c20: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
7c30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
7c40: 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64   /// Number used
7c50: 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66   to help identif
7c60: 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69  y the selected i
7c70: 6e 64 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75  ndex.  This valu
7c80: 65 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20  e will..        
7c90: 2f 2f 2f 20 6c 61 74 65 72 20 62 65 20 70 72 6f  /// later be pro
7ca0: 76 69 64 65 64 20 74 6f 20 74 68 65 20 3c 73 65  vided to the <se
7cb0: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
7cc0: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46 69 6c  anagedModule.Fil
7cd0: 74 65 72 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20  ter" />..       
7ce0: 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20   /// method...  
7cf0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
7d00: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
7d10: 62 6c 69 63 20 69 6e 74 20 49 6e 64 65 78 4e 75  blic int IndexNu
7d20: 6d 62 65 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d  mber..        {.
7d30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
7d40: 20 7b 20 72 65 74 75 72 6e 20 69 6e 64 65 78 4e   { return indexN
7d50: 75 6d 62 65 72 3b 20 7d 0d 0a 20 20 20 20 20 20  umber; }..      
7d60: 20 20 20 20 20 20 73 65 74 20 7b 20 69 6e 64 65        set { inde
7d70: 78 4e 75 6d 62 65 72 20 3d 20 76 61 6c 75 65 3b  xNumber = value;
7d80: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
7d90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
7da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7de0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
7df0: 61 74 65 20 73 74 72 69 6e 67 20 69 6e 64 65 78  ate string index
7e00: 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20  String;..       
7e10: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7e20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69          /// Stri
7e30: 6e 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20  ng used to help 
7e40: 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c  identify the sel
7e50: 65 63 74 65 64 20 69 6e 64 65 78 2e 20 20 54 68  ected index.  Th
7e60: 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20  is value will.. 
7e70: 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61 74 65 72         /// later
7e80: 20 62 65 20 70 72 6f 76 69 64 65 64 20 74 6f 20   be provided to 
7e90: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
7ea0: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
7eb0: 75 6c 65 2e 46 69 6c 74 65 72 22 20 2f 3e 0d 0a  ule.Filter" />..
7ec0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
7ed0: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
7ee0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
7ef0: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
7f00: 6e 67 20 49 6e 64 65 78 53 74 72 69 6e 67 0d 0a  ng IndexString..
7f10: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7f20: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
7f30: 75 72 6e 20 69 6e 64 65 78 53 74 72 69 6e 67 3b  urn indexString;
7f40: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
7f50: 73 65 74 20 7b 20 69 6e 64 65 78 53 74 72 69 6e  set { indexStrin
7f60: 67 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  g = value; }..  
7f70: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
7f80: 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7fd0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e        private in
7fe0: 74 20 6e 65 65 64 54 6f 46 72 65 65 49 6e 64 65  t needToFreeInde
7ff0: 78 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20  xString;..      
8000: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
8010: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e  .        /// Non
8020: 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 69 6e 64  -zero if the ind
8030: 65 78 20 73 74 72 69 6e 67 20 6d 75 73 74 20 62  ex string must b
8040: 65 20 66 72 65 65 64 20 62 79 20 74 68 65 20 53  e freed by the S
8050: 51 4c 69 74 65 20 63 6f 72 65 0d 0a 20 20 20 20  QLite core..    
8060: 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79 2e      /// library.
8070: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
8080: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8090: 20 20 70 75 62 6c 69 63 20 69 6e 74 20 4e 65 65    public int Nee
80a0: 64 54 6f 46 72 65 65 49 6e 64 65 78 53 74 72 69  dToFreeIndexStri
80b0: 6e 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ng..        {.. 
80c0: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
80d0: 20 72 65 74 75 72 6e 20 6e 65 65 64 54 6f 46 72   return needToFr
80e0: 65 65 49 6e 64 65 78 53 74 72 69 6e 67 3b 20 7d  eeIndexString; }
80f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65  ..            se
8100: 74 20 7b 20 6e 65 65 64 54 6f 46 72 65 65 49 6e  t { needToFreeIn
8110: 64 65 78 53 74 72 69 6e 67 20 3d 20 76 61 6c 75  dexString = valu
8120: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  e; }..        }.
8130: 0a 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8180: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
8190: 69 76 61 74 65 20 69 6e 74 20 6f 72 64 65 72 42  ivate int orderB
81a0: 79 43 6f 6e 73 75 6d 65 64 3b 0d 0a 20 20 20 20  yConsumed;..    
81b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
81c0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
81d0: 72 75 65 20 69 66 20 6f 75 74 70 75 74 20 69 73  rue if output is
81e0: 20 61 6c 72 65 61 64 79 20 6f 72 64 65 72 65 64   already ordered
81f0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8200: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
8210: 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 4f 72     public int Or
8220: 64 65 72 42 79 43 6f 6e 73 75 6d 65 64 0d 0a 20  derByConsumed.. 
8230: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8240: 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
8250: 72 6e 20 6f 72 64 65 72 42 79 43 6f 6e 73 75 6d  rn orderByConsum
8260: 65 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ed; }..         
8270: 20 20 20 73 65 74 20 7b 20 6f 72 64 65 72 42 79     set { orderBy
8280: 43 6f 6e 73 75 6d 65 64 20 3d 20 76 61 6c 75 65  Consumed = value
8290: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
82a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
82b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82f0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
8300: 76 61 74 65 20 64 6f 75 62 6c 65 20 65 73 74 69  vate double esti
8310: 6d 61 74 65 64 43 6f 73 74 3b 0d 0a 20 20 20 20  matedCost;..    
8320: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
8330: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 45  >..        /// E
8340: 73 74 69 6d 61 74 65 64 20 63 6f 73 74 20 6f 66  stimated cost of
8350: 20 75 73 69 6e 67 20 74 68 69 73 20 69 6e 64 65   using this inde
8360: 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  x...        /// 
8370: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
8380: 20 20 20 20 70 75 62 6c 69 63 20 64 6f 75 62 6c      public doubl
8390: 65 20 45 73 74 69 6d 61 74 65 64 43 6f 73 74 0d  e EstimatedCost.
83a0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
83b0: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
83c0: 74 75 72 6e 20 65 73 74 69 6d 61 74 65 64 43 6f  turn estimatedCo
83d0: 73 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  st; }..         
83e0: 20 20 20 73 65 74 20 7b 20 65 73 74 69 6d 61 74     set { estimat
83f0: 65 64 43 6f 73 74 20 3d 20 76 61 6c 75 65 3b 20  edCost = value; 
8400: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
8410: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
8420: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
8430: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
8440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8490: 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
84a0: 49 6e 64 65 78 20 48 65 6c 70 65 72 20 43 6c 61  Index Helper Cla
84b0: 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ss..    /// <sum
84c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
84d0: 68 69 73 20 63 6c 61 73 73 20 72 65 70 72 65 73  his class repres
84e0: 65 6e 74 73 20 74 68 65 20 76 61 72 69 6f 75 73  ents the various
84f0: 20 69 6e 70 75 74 73 20 61 6e 64 20 6f 75 74 70   inputs and outp
8500: 75 74 73 20 75 73 65 64 20 77 69 74 68 20 74 68  uts used with th
8510: 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  e..    /// <see 
8520: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
8530: 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65 73 74 49  agedModule.BestI
8540: 6e 64 65 78 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ndex" /> method.
8550: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
8560: 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  ary>..    public
8570: 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51   sealed class SQ
8580: 4c 69 74 65 49 6e 64 65 78 0d 0a 20 20 20 20 7b  LiteIndex..    {
8590: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
85a0: 6e 20 49 6e 74 65 72 6e 61 6c 20 43 6f 6e 73 74  n Internal Const
85b0: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
85c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
85d0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f 6e 73          /// Cons
85e0: 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74 61 6e  tructs an instan
85f0: 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61 73 73  ce of this class
8600: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
8610: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
8620: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
8630: 6d 65 3d 22 6e 43 6f 6e 73 74 72 61 69 6e 74 22  me="nConstraint"
8640: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
8650: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65  he number of <se
8660: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e  e cref="SQLiteIn
8670: 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 22 20 2f  dexConstraint" /
8680: 3e 20 28 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  > (and..        
8690: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
86a0: 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
86b0: 61 69 6e 74 55 73 61 67 65 22 20 2f 3e 29 20 69  aintUsage" />) i
86c0: 6e 73 74 61 6e 63 65 73 20 74 6f 0d 0a 20 20 20  nstances to..   
86d0: 20 20 20 20 20 2f 2f 2f 20 70 72 65 2d 61 6c 6c       /// pre-all
86e0: 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f 72 2e  ocate space for.
86f0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
8700: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
8710: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
8720: 22 6e 4f 72 64 65 72 42 79 22 3e 0d 0a 20 20 20  "nOrderBy">..   
8730: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d       /// The num
8740: 62 65 72 20 6f 66 20 3c 73 65 65 20 63 72 65 66  ber of <see cref
8750: 3d 22 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64  ="SQLiteIndexOrd
8760: 65 72 42 79 22 20 2f 3e 20 69 6e 73 74 61 6e 63  erBy" /> instanc
8770: 65 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f  es to..        /
8780: 2f 2f 20 70 72 65 2d 61 6c 6c 6f 63 61 74 65 20  // pre-allocate 
8790: 73 70 61 63 65 20 66 6f 72 2e 0d 0a 20 20 20 20  space for...    
87a0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
87b0: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e  ..        intern
87c0: 61 6c 20 53 51 4c 69 74 65 49 6e 64 65 78 28 0d  al SQLiteIndex(.
87d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
87e0: 20 6e 43 6f 6e 73 74 72 61 69 6e 74 2c 0d 0a 20   nConstraint,.. 
87f0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e             int n
8800: 4f 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20  OrderBy..       
8810: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
8820: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
8830: 6e 70 75 74 73 20 3d 20 6e 65 77 20 53 51 4c 69  nputs = new SQLi
8840: 74 65 49 6e 64 65 78 49 6e 70 75 74 73 28 6e 43  teIndexInputs(nC
8850: 6f 6e 73 74 72 61 69 6e 74 2c 20 6e 4f 72 64 65  onstraint, nOrde
8860: 72 42 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rBy);..         
8870: 20 20 20 6f 75 74 70 75 74 73 20 3d 20 6e 65 77     outputs = new
8880: 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 75 74 70   SQLiteIndexOutp
8890: 75 74 73 28 6e 43 6f 6e 73 74 72 61 69 6e 74 29  uts(nConstraint)
88a0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
88b0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
88c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
88d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8910: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
8920: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72  region Public Pr
8930: 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20  operties..      
8940: 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
8950: 49 6e 64 65 78 49 6e 70 75 74 73 20 69 6e 70 75  IndexInputs inpu
8960: 74 73 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ts;..        ///
8970: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
8980: 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
8990: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 49 6e 64   cref="SQLiteInd
89a0: 65 78 49 6e 70 75 74 73 22 20 2f 3e 20 6f 62 6a  exInputs" /> obj
89b0: 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e  ect instance con
89c0: 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20  taining..       
89d0: 20 2f 2f 2f 20 74 68 65 20 69 6e 70 75 74 73 20   /// the inputs 
89e0: 74 6f 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  to the <see cref
89f0: 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64  ="ISQLiteManaged
8a00: 4d 6f 64 75 6c 65 2e 42 65 73 74 49 6e 64 65 78  Module.BestIndex
8a10: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  " />..        //
8a20: 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  / method...     
8a30: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8a40: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
8a50: 63 20 53 51 4c 69 74 65 49 6e 64 65 78 49 6e 70  c SQLiteIndexInp
8a60: 75 74 73 20 49 6e 70 75 74 73 0d 0a 20 20 20 20  uts Inputs..    
8a70: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
8a80: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
8a90: 69 6e 70 75 74 73 3b 20 7d 0d 0a 20 20 20 20 20  inputs; }..     
8aa0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8af0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
8b00: 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
8b10: 65 49 6e 64 65 78 4f 75 74 70 75 74 73 20 6f 75  eIndexOutputs ou
8b20: 74 70 75 74 73 3b 0d 0a 20 20 20 20 20 20 20 20  tputs;..        
8b30: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
8b40: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
8b50: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
8b60: 49 6e 64 65 78 4f 75 74 70 75 74 73 22 20 2f 3e  IndexOutputs" />
8b70: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
8b80: 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20   containing..   
8b90: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 6f 75 74       /// the out
8ba0: 70 75 74 73 20 66 72 6f 6d 20 74 68 65 20 3c 73  puts from the <s
8bb0: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
8bc0: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 42 65  ManagedModule.Be
8bd0: 73 74 49 6e 64 65 78 22 20 2f 3e 0d 0a 20 20 20  stIndex" />..   
8be0: 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e       /// method.
8bf0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
8c00: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8c10: 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 49    public SQLiteI
8c20: 6e 64 65 78 4f 75 74 70 75 74 73 20 4f 75 74 70  ndexOutputs Outp
8c30: 75 74 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  uts..        {..
8c40: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
8c50: 7b 20 72 65 74 75 72 6e 20 6f 75 74 70 75 74 73  { return outputs
8c60: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ; }..        }..
8c70: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
8c80: 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  on..    }..    #
8c90: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
8ca0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
8cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
8cf0: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
8d00: 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 42  teVirtualTable B
8d10: 61 73 65 20 43 6c 61 73 73 0d 0a 20 20 20 20 2f  ase Class..    /
8d20: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
8d30: 20 20 2f 2f 2f 20 54 68 69 73 20 63 6c 61 73 73    /// This class
8d40: 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 6d 61   represents a ma
8d50: 6e 61 67 65 64 20 76 69 72 74 75 61 6c 20 74 61  naged virtual ta
8d60: 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ble implementati
8d70: 6f 6e 2e 20 20 49 74 20 69 73 0d 0a 20 20 20 20  on.  It is..    
8d80: 2f 2f 2f 20 6e 6f 74 20 73 65 61 6c 65 64 20 61  /// not sealed a
8d90: 6e 64 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65  nd should be use
8da0: 64 20 61 73 20 74 68 65 20 62 61 73 65 20 63 6c  d as the base cl
8db0: 61 73 73 20 66 6f 72 20 61 6e 79 20 75 73 65 72  ass for any user
8dc0: 2d 64 65 66 69 6e 65 64 0d 0a 20 20 20 20 2f 2f  -defined..    //
8dd0: 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73  / virtual tables
8de0: 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20   implemented in 
8df0: 6d 61 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20  managed code... 
8e00: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
8e10: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 63 6c  >..    public cl
8e20: 61 73 73 20 53 51 4c 69 74 65 56 69 72 74 75 61  ass SQLiteVirtua
8e30: 6c 54 61 62 6c 65 20 3a 0d 0a 20 20 20 20 20 20  lTable :..      
8e40: 20 20 20 20 20 20 49 53 51 4c 69 74 65 4e 61 74        ISQLiteNat
8e50: 69 76 65 48 61 6e 64 6c 65 2c 20 49 44 69 73 70  iveHandle, IDisp
8e60: 6f 73 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53 45  osable /* NOT SE
8e70: 41 4c 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a  ALED */..    {..
8e80: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
8e90: 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74  Private Constant
8ea0: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
8eb0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
8ec0: 20 20 2f 2f 2f 20 54 68 65 20 69 6e 64 65 78 20    /// The index 
8ed0: 77 69 74 68 69 6e 20 74 68 65 20 61 72 72 61 79  within the array
8ee0: 20 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f 76   of strings prov
8ef0: 69 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20  ided to the..   
8f00: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
8f10: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
8f20: 65 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22  edModule.Create"
8f30: 20 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20 20   /> and..       
8f40: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
8f50: 49 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f  ISQLiteManagedMo
8f60: 64 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e  dule.Connect" />
8f70: 20 6d 65 74 68 6f 64 73 20 63 6f 6e 74 61 69 6e   methods contain
8f80: 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20  ing the..       
8f90: 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66 20 74 68 65   /// name of the
8fa0: 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e   module implemen
8fb0: 74 69 6e 67 20 74 68 69 73 20 76 69 72 74 75 61  ting this virtua
8fc0: 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
8fd0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
8fe0: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
8ff0: 65 20 63 6f 6e 73 74 20 69 6e 74 20 4d 6f 64 75  e const int Modu
9000: 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20 30 3b  leNameIndex = 0;
9010: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
9020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9060: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
9070: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9080: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e        /// The in
9090: 64 65 78 20 77 69 74 68 69 6e 20 74 68 65 20 61  dex within the a
90a0: 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20  rray of strings 
90b0: 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 0d  provided to the.
90c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
90d0: 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d  e cref="ISQLiteM
90e0: 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43 72 65  anagedModule.Cre
90f0: 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20 20 20  ate" /> and..   
9100: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
9110: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
9120: 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65 63 74  edModule.Connect
9130: 22 20 2f 3e 20 6d 65 74 68 6f 64 73 20 63 6f 6e  " /> methods con
9140: 74 61 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20  taining the..   
9150: 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 6f 66       /// name of
9160: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
9170: 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20 76 69  ntaining this vi
9180: 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
9190: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
91a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 72  ary>..        pr
91b0: 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74 20  ivate const int 
91c0: 44 61 74 61 62 61 73 65 4e 61 6d 65 49 6e 64 65  DatabaseNameInde
91d0: 78 20 3d 20 31 3b 0d 0a 0d 0a 20 20 20 20 20 20  x = 1;....      
91e0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
91f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
9230: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
9240: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
9250: 54 68 65 20 69 6e 64 65 78 20 77 69 74 68 69 6e  The index within
9260: 20 74 68 65 20 61 72 72 61 79 20 6f 66 20 73 74   the array of st
9270: 72 69 6e 67 73 20 70 72 6f 76 69 64 65 64 20 74  rings provided t
9280: 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
9290: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
92a0: 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
92b0: 6c 65 2e 43 72 65 61 74 65 22 20 2f 3e 20 61 6e  le.Create" /> an
92c0: 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  d..        /// <
92d0: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
92e0: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43  eManagedModule.C
92f0: 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f  onnect" /> metho
9300: 64 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ds containing th
9310: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e  e..        /// n
9320: 61 6d 65 20 6f 66 20 74 68 65 20 76 69 72 74 75  ame of the virtu
9330: 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
9340: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9350: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
9360: 74 65 20 63 6f 6e 73 74 20 69 6e 74 20 54 61 62  te const int Tab
9370: 6c 65 4e 61 6d 65 49 6e 64 65 78 20 3d 20 32 3b  leNameIndex = 2;
9380: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
9390: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
93a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
93f0: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
9400: 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  c Constructors..
9410: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
9420: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
9430: 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20 61 6e  // Constructs an
9440: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
9450: 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20  s class...      
9460: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
9470: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
9480: 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67 75 6d  aram name="argum
9490: 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20 20 20  ents">..        
94a0: 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69 6e 61 6c  /// The original
94b0: 20 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67   array of string
94c0: 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  s provided to th
94d0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
94e0: 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
94f0: 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 43  eManagedModule.C
9500: 72 65 61 74 65 22 20 2f 3e 20 61 6e 64 0d 0a 20  reate" /> and.. 
9510: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
9520: 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e  cref="ISQLiteMan
9530: 61 67 65 64 4d 6f 64 75 6c 65 2e 43 6f 6e 6e 65  agedModule.Conne
9540: 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 73 2e 0d  ct" /> methods..
9550: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
9560: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70  aram>..        p
9570: 75 62 6c 69 63 20 53 51 4c 69 74 65 56 69 72 74  ublic SQLiteVirt
9580: 75 61 6c 54 61 62 6c 65 28 0d 0a 20 20 20 20 20  ualTable(..     
9590: 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20         string[] 
95a0: 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
95b0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
95c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
95d0: 20 74 68 69 73 2e 61 72 67 75 6d 65 6e 74 73 20   this.arguments 
95e0: 3d 20 61 72 67 75 6d 65 6e 74 73 3b 0d 0a 20 20  = arguments;..  
95f0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
9600: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
9610: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
9620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9660: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
9670: 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74  n Public Propert
9680: 69 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ies..        pri
9690: 76 61 74 65 20 73 74 72 69 6e 67 5b 5d 20 61 72  vate string[] ar
96a0: 67 75 6d 65 6e 74 73 3b 0d 0a 20 20 20 20 20 20  guments;..      
96b0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
96c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
96d0: 20 6f 72 69 67 69 6e 61 6c 20 61 72 72 61 79 20   original array 
96e0: 6f 66 20 73 74 72 69 6e 67 73 20 70 72 6f 76 69  of strings provi
96f0: 64 65 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20  ded to the..    
9700: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
9710: 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67 65  f="ISQLiteManage
9720: 64 4d 6f 64 75 6c 65 2e 43 72 65 61 74 65 22 20  dModule.Create" 
9730: 2f 3e 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  /> and..        
9740: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
9750: 53 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64  SQLiteManagedMod
9760: 75 6c 65 2e 43 6f 6e 6e 65 63 74 22 20 2f 3e 20  ule.Connect" /> 
9770: 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20 20 20  methods...      
9780: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
9790: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
97a0: 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67 5b   virtual string[
97b0: 5d 20 41 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  ] Arguments..   
97c0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
97d0: 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
97e0: 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
97f0: 6e 20 61 72 67 75 6d 65 6e 74 73 3b 20 7d 0d 0a  n arguments; }..
9800: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
9810: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
9820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
9860: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
9870: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
9880: 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  // The name of t
9890: 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d  he module implem
98a0: 65 6e 74 69 6e 67 20 74 68 69 73 20 76 69 72 74  enting this virt
98b0: 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  ual table...    
98c0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
98d0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
98e0: 69 63 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e  ic virtual strin
98f0: 67 20 4d 6f 64 75 6c 65 4e 61 6d 65 0d 0a 20 20  g ModuleName..  
9900: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9910: 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
9920: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9930: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
9940: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
9950: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
9960: 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 20  ing[] arguments 
9970: 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a  = Arguments;....
9980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9990: 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73 20 21  if ((arguments !
99a0: 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20  = null) &&..    
99b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99c0: 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74  (arguments.Lengt
99d0: 68 20 3e 20 4d 6f 64 75 6c 65 4e 61 6d 65 49 6e  h > ModuleNameIn
99e0: 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20 20  dex))..         
99f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
9a10: 74 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b 4d  turn arguments[M
9a20: 6f 64 75 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 3b  oduleNameIndex];
9a30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9a40: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
9a50: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
9a60: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a80: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
9a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9aa0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
9ab0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
9ac0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
9ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9b10: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
9b20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
9b30: 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
9b40: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
9b50: 6e 74 61 69 6e 69 6e 67 20 74 68 69 73 20 76 69  ntaining this vi
9b60: 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
9b70: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
9b80: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75  ary>..        pu
9b90: 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74 72  blic virtual str
9ba0: 69 6e 67 20 44 61 74 61 62 61 73 65 4e 61 6d 65  ing DatabaseName
9bb0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
9bc0: 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
9bd0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
9bf0: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
9c00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9c10: 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d 65   string[] argume
9c20: 6e 74 73 20 3d 20 41 72 67 75 6d 65 6e 74 73 3b  nts = Arguments;
9c30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
9c40: 20 20 20 20 69 66 20 28 28 61 72 67 75 6d 65 6e      if ((argumen
9c50: 74 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a  ts != null) &&..
9c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c70: 20 20 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c      (arguments.L
9c80: 65 6e 67 74 68 20 3e 20 44 61 74 61 62 61 73 65  ength > Database
9c90: 4e 61 6d 65 49 6e 64 65 78 29 29 0d 0a 20 20 20  NameIndex))..   
9ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
9cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9cc0: 20 20 20 20 72 65 74 75 72 6e 20 61 72 67 75 6d      return argum
9cd0: 65 6e 74 73 5b 44 61 74 61 62 61 73 65 4e 61 6d  ents[DatabaseNam
9ce0: 65 49 6e 64 65 78 5d 3b 0d 0a 20 20 20 20 20 20  eIndex];..      
9cf0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
9d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
9d10: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
9d20: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9d30: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
9d40: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
9d50: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9d60: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
9d70: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
9d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9dc0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
9dd0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
9de0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
9df0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 76 69 72   name of the vir
9e00: 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
9e10: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
9e20: 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ry>..        pub
9e30: 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74 72 69  lic virtual stri
9e40: 6e 67 20 54 61 62 6c 65 4e 61 6d 65 0d 0a 20 20  ng TableName..  
9e50: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9e60: 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
9e70: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9e80: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
9e90: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
9ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
9eb0: 69 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 20  ing[] arguments 
9ec0: 3d 20 41 72 67 75 6d 65 6e 74 73 3b 0d 0a 0d 0a  = Arguments;....
9ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ee0: 69 66 20 28 28 61 72 67 75 6d 65 6e 74 73 20 21  if ((arguments !
9ef0: 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20  = null) &&..    
9f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9f10: 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65 6e 67 74  (arguments.Lengt
9f20: 68 20 3e 20 54 61 62 6c 65 4e 61 6d 65 49 6e 64  h > TableNameInd
9f30: 65 78 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ex))..          
9f40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
9f60: 75 72 6e 20 61 72 67 75 6d 65 6e 74 73 5b 54 61  urn arguments[Ta
9f70: 62 6c 65 4e 61 6d 65 49 6e 64 65 78 5d 3b 0d 0a  bleNameIndex];..
9f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9f90: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
9fa0: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
9fb0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9fd0: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
9fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
9ff0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
a000: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
a010: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
a020: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
a030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a070: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
a080: 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f  ion Public Metho
a090: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
a0a0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
a0b0: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
a0c0: 74 6f 20 72 65 63 6f 72 64 20 74 68 65 20 72 65  to record the re
a0d0: 6e 61 6d 69 6e 67 20 6f 66 20 74 68 65 20 76 69  naming of the vi
a0e0: 72 74 75 61 6c 20 74 61 62 6c 65 20 61 73 73 6f  rtual table asso
a0f0: 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
a100: 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 6f 62  /// with this ob
a110: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  ject instance...
a120: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
a130: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
a140: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
a150: 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20  "name">..       
a160: 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 6e 61 6d   /// The new nam
a170: 65 20 66 6f 72 20 74 68 65 20 76 69 72 74 75 61  e for the virtua
a180: 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
a190: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
a1a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
a1b0: 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
a1c0: 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 75 70 6f 6e  // Non-zero upon
a1d0: 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20   success...     
a1e0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
a1f0: 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  >..        publi
a200: 63 20 76 69 72 74 75 61 6c 20 62 6f 6f 6c 20 52  c virtual bool R
a210: 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  ename(..        
a220: 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 0d      string name.
a230: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
a240: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a250: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
a260: 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
a270: 20 20 20 20 20 20 20 69 66 20 28 28 61 72 67 75         if ((argu
a280: 6d 65 6e 74 73 20 21 3d 20 6e 75 6c 6c 29 20 26  ments != null) &
a290: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
a2a0: 20 20 20 28 61 72 67 75 6d 65 6e 74 73 2e 4c 65     (arguments.Le
a2b0: 6e 67 74 68 20 3e 20 54 61 62 6c 65 4e 61 6d 65  ngth > TableName
a2c0: 49 6e 64 65 78 29 29 0d 0a 20 20 20 20 20 20 20  Index))..       
a2d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a2e0: 20 20 20 20 20 20 20 20 61 72 67 75 6d 65 6e 74          argument
a2f0: 73 5b 54 61 62 6c 65 4e 61 6d 65 49 6e 64 65 78  s[TableNameIndex
a300: 5d 20 3d 20 6e 61 6d 65 3b 0d 0a 20 20 20 20 20  ] = name;..     
a310: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
a320: 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
a330: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
a340: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
a350: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  se;..        }..
a360: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
a370: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
a380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3c0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
a3d0: 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69 74 65   #region ISQLite
a3e0: 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 4d 65 6d  NativeHandle Mem
a3f0: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72  bers..        pr
a400: 69 76 61 74 65 20 49 6e 74 50 74 72 20 6e 61 74  ivate IntPtr nat
a410: 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 20  iveHandle;..    
a420: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a430: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 52  >..        /// R
a440: 65 74 75 72 6e 73 20 74 68 65 20 75 6e 64 65 72  eturns the under
a450: 6c 79 69 6e 67 20 53 51 4c 69 74 65 20 6e 61 74  lying SQLite nat
a460: 69 76 65 20 68 61 6e 64 6c 65 20 61 73 73 6f 63  ive handle assoc
a470: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 0d  iated with this.
a480: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 62 6a  .        /// obj
a490: 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
a4a0: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
a4b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
a4c0: 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 49 6e  ublic virtual In
a4d0: 74 50 74 72 20 4e 61 74 69 76 65 48 61 6e 64 6c  tPtr NativeHandl
a4e0: 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
a4f0: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
a500: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
a510: 20 72 65 74 75 72 6e 20 6e 61 74 69 76 65 48 61   return nativeHa
a520: 6e 64 6c 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  ndle; }..       
a530: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65       internal se
a540: 74 20 7b 20 6e 61 74 69 76 65 48 61 6e 64 6c 65  t { nativeHandle
a550: 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
a560: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
a570: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
a580: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
a590: 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
a5d0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
a5e0: 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d   IDisposable Mem
a5f0: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  bers..        //
a600: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
a610: 20 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65       /// Dispose
a620: 73 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74  s of this object
a630: 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
a640: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
a650: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
a660: 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  ic void Dispose(
a670: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
a680: 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73            Dispos
a690: 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20  e(true);..      
a6a0: 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73        GC.Suppres
a6b0: 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b  sFinalize(this);
a6c0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
a6d0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
a6e0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
a6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a730: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
a740: 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c  egion IDisposabl
a750: 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62  e "Pattern" Memb
a760: 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ers..        pri
a770: 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73  vate bool dispos
a780: 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed;..        ///
a790: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
a7a0: 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77 73 20 61      /// Throws a
a7b0: 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 53 79 73  n <see cref="Sys
a7c0: 74 65 6d 2e 4f 62 6a 65 63 74 44 69 73 70 6f 73  tem.ObjectDispos
a7d0: 65 64 45 78 63 65 70 74 69 6f 6e 22 2f 3e 20 69  edException"/> i
a7e0: 66 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  f this..        
a7f0: 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  /// object insta
a800: 6e 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73  nce has been dis
a810: 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  posed...        
a820: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
a830: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
a840: 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73  void CheckDispos
a850: 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  ed() /* throw */
a860: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
a870: 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53   THROW_ON_DISPOS
a880: 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ED..            
a890: 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20  if (disposed).. 
a8a0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
a8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
a8c0: 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69  row new ObjectDi
a8d0: 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28  sposedException(
a8e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a8f0: 20 20 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c        typeof(SQL
a900: 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 29  iteVirtualTable)
a910: 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  .Name);..       
a920: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
a930: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
a940: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
a950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
a990: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
a9a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
a9b0: 2f 2f 20 44 69 73 70 6f 73 65 73 20 6f 66 20 74  // Disposes of t
a9c0: 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61  his object insta
a9d0: 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  nce...        //
a9e0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
a9f0: 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
aa00: 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73 69 6e 67   name="disposing
aa10: 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
aa20: 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 69 73  Non-zero if this
aa30: 20 6d 65 74 68 6f 64 20 69 73 20 62 65 69 6e 67   method is being
aa40: 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65   called from the
aa50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
aa60: 65 65 20 63 72 65 66 3d 22 44 69 73 70 6f 73 65  ee cref="Dispose
aa70: 28 29 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 20 20  ()" /> method.  
aa80: 5a 65 72 6f 20 69 66 20 74 68 69 73 20 6d 65 74  Zero if this met
aa90: 68 6f 64 20 69 73 20 62 65 69 6e 67 20 63 61 6c  hod is being cal
aaa0: 6c 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  led..        ///
aab0: 20 66 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c 69   from the finali
aac0: 7a 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  zer...        //
aad0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
aae0: 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
aaf0: 72 74 75 61 6c 20 76 6f 69 64 20 44 69 73 70 6f  rtual void Dispo
ab00: 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e  se(bool disposin
ab10: 67 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  g)..        {.. 
ab20: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
ab30: 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
ab40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
ab50: 20 20 20 20 20 20 20 20 20 20 2f 2f 69 66 20 28            //if (
ab60: 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20  disposing)..    
ab70: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d              //{.
ab80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ab90: 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f   //    /////////
aba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
abb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
abc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
abd0: 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61     // dispose ma
abe0: 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20  naged resources 
abf0: 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20  here.....       
ac00: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f           //    /
ac10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac30: 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ///..           
ac40: 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20       //}....    
ac50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
ac60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac80: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
ac90: 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75      // release u
aca0: 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63  nmanaged resourc
acb0: 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
acc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
acd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ace0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acf0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
ad00: 20 20 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d        disposed =
ad10: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
ad20: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
ad30: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
ad40: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
ad50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad90: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
ada0: 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72     #region Destr
adb0: 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  uctor..        /
adc0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
add0: 20 20 20 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69        /// Finali
ade0: 7a 65 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20  zes this object 
adf0: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
ae00: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
ae10: 3e 0d 0a 20 20 20 20 20 20 20 20 7e 53 51 4c 69  >..        ~SQLi
ae20: 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 28 29  teVirtualTable()
ae30: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
ae40: 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65           Dispose
ae50: 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20  (false);..      
ae60: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
ae70: 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
ae80: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
ae90: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
aea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aeb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aee0: 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
aef0: 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
af00: 62 6c 65 43 75 72 73 6f 72 20 42 61 73 65 20 43  bleCursor Base C
af10: 6c 61 73 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  lass..    /// <s
af20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
af30: 20 54 68 69 73 20 63 6c 61 73 73 20 72 65 70 72   This class repr
af40: 65 73 65 6e 74 73 20 61 20 6d 61 6e 61 67 65 64  esents a managed
af50: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63   virtual table c
af60: 75 72 73 6f 72 20 69 6d 70 6c 65 6d 65 6e 74 61  ursor implementa
af70: 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49  tion...    /// I
af80: 74 20 69 73 20 6e 6f 74 20 73 65 61 6c 65 64 20  t is not sealed 
af90: 61 6e 64 20 73 68 6f 75 6c 64 20 62 65 20 75 73  and should be us
afa0: 65 64 20 61 73 20 74 68 65 20 62 61 73 65 20 63  ed as the base c
afb0: 6c 61 73 73 20 66 6f 72 20 61 6e 79 0d 0a 20 20  lass for any..  
afc0: 20 20 2f 2f 2f 20 75 73 65 72 2d 64 65 66 69 6e    /// user-defin
afd0: 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ed virtual table
afe0: 20 63 75 72 73 6f 72 20 69 6d 70 6c 65 6d 65 6e   cursor implemen
aff0: 74 65 64 20 69 6e 20 6d 61 6e 61 67 65 64 20 63  ted in managed c
b000: 6f 64 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ode...    /// </
b010: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75  summary>..    pu
b020: 62 6c 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74  blic class SQLit
b030: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
b040: 73 6f 72 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  sor :..         
b050: 20 20 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65     ISQLiteNative
b060: 48 61 6e 64 6c 65 2c 20 49 44 69 73 70 6f 73 61  Handle, IDisposa
b070: 62 6c 65 20 2f 2a 20 4e 4f 54 20 53 45 41 4c 45  ble /* NOT SEALE
b080: 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  D */..    {..   
b090: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
b0a0: 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
b0b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
b0c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
b0d0: 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63 74 73 20   /// Constructs 
b0e0: 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
b0f0: 68 69 73 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20  his class...    
b100: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
b110: 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
b120: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
b130: 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
b140: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
b150: 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
b160: 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
b170: 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
b180: 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
b190: 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74  with this object
b1a0: 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
b1b0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
b1c0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
b1d0: 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
b1e0: 62 6c 65 43 75 72 73 6f 72 28 0d 0a 20 20 20 20  bleCursor(..    
b1f0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
b200: 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
b210: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
b220: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
b230: 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 61 62          this.tab
b240: 6c 65 20 3d 20 74 61 62 6c 65 3b 0d 0a 20 20 20  le = table;..   
b250: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
b260: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
b270: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
b280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
b2c0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
b2d0: 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69   Public Properti
b2e0: 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  es..        priv
b2f0: 61 74 65 20 53 51 4c 69 74 65 56 69 72 74 75 61  ate SQLiteVirtua
b300: 6c 54 61 62 6c 65 20 74 61 62 6c 65 3b 0d 0a 20  lTable table;.. 
b310: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
b320: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
b330: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
b340: 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
b350: 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
b360: 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
b370: 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
b380: 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63 74  with this object
b390: 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
b3a0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
b3b0: 79 3e 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  y>..        publ
b3c0: 69 63 20 76 69 72 74 75 61 6c 20 53 51 4c 69 74  ic virtual SQLit
b3d0: 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 54 61  eVirtualTable Ta
b3e0: 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ble..        {..
b3f0: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
b400: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
b410: 29 3b 20 72 65 74 75 72 6e 20 74 61 62 6c 65 3b  ); return table;
b420: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
b430: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
b440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b480: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
b490: 61 74 65 20 69 6e 74 20 69 6e 64 65 78 4e 75 6d  ate int indexNum
b4a0: 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ber;..        //
b4b0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
b4c0: 20 20 20 20 20 2f 2f 2f 20 4e 75 6d 62 65 72 20       /// Number 
b4d0: 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69 64 65  used to help ide
b4e0: 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65 63 74  ntify the select
b4f0: 65 64 20 69 6e 64 65 78 2e 20 20 54 68 69 73 20  ed index.  This 
b500: 76 61 6c 75 65 20 77 69 6c 6c 0d 0a 20 20 20 20  value will..    
b510: 20 20 20 20 2f 2f 2f 20 62 65 20 73 65 74 20 76      /// be set v
b520: 69 61 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ia the <see cref
b530: 3d 22 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74  ="Filter" /> met
b540: 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
b550: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
b560: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
b570: 74 75 61 6c 20 69 6e 74 20 49 6e 64 65 78 4e 75  tual int IndexNu
b580: 6d 62 65 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d  mber..        {.
b590: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
b5a0: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
b5b0: 28 29 3b 20 72 65 74 75 72 6e 20 69 6e 64 65 78  (); return index
b5c0: 4e 75 6d 62 65 72 3b 20 7d 0d 0a 20 20 20 20 20  Number; }..     
b5d0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
b5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b620: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
b630: 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e     private strin
b640: 67 20 69 6e 64 65 78 53 74 72 69 6e 67 3b 0d 0a  g indexString;..
b650: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
b660: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
b670: 2f 2f 20 53 74 72 69 6e 67 20 75 73 65 64 20 74  // String used t
b680: 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20  o help identify 
b690: 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64  the selected ind
b6a0: 65 78 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  ex.  This value 
b6b0: 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  will..        //
b6c0: 2f 20 62 65 20 73 65 74 20 76 69 61 20 74 68 65  / be set via the
b6d0: 20 3c 73 65 65 20 63 72 65 66 3d 22 46 69 6c 74   <see cref="Filt
b6e0: 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
b6f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
b700: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
b710: 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73  public virtual s
b720: 74 72 69 6e 67 20 49 6e 64 65 78 53 74 72 69 6e  tring IndexStrin
b730: 67 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  g..        {..  
b740: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
b750: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
b760: 20 72 65 74 75 72 6e 20 69 6e 64 65 78 53 74 72   return indexStr
b770: 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ing; }..        
b780: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
b790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7d0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
b7e0: 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 56 61  private SQLiteVa
b7f0: 6c 75 65 5b 5d 20 76 61 6c 75 65 73 3b 0d 0a 20  lue[] values;.. 
b800: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
b810: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
b820: 2f 20 54 68 65 20 76 61 6c 75 65 73 20 75 73 65  / The values use
b830: 64 20 74 6f 20 66 69 6c 74 65 72 20 74 68 65 20  d to filter the 
b840: 72 6f 77 73 20 72 65 74 75 72 6e 65 64 20 76 69  rows returned vi
b850: 61 20 74 68 69 73 20 63 75 72 73 6f 72 20 6f 62  a this cursor ob
b860: 6a 65 63 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ject..        //
b870: 2f 20 69 6e 73 74 61 6e 63 65 2e 20 20 54 68 69  / instance.  Thi
b880: 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20  s value will be 
b890: 73 65 74 20 76 69 61 20 74 68 65 20 3c 73 65 65  set via the <see
b8a0: 20 63 72 65 66 3d 22 46 69 6c 74 65 72 22 20 2f   cref="Filter" /
b8b0: 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  >..        /// m
b8c0: 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
b8d0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
b8e0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
b8f0: 69 72 74 75 61 6c 20 53 51 4c 69 74 65 56 61 6c  irtual SQLiteVal
b900: 75 65 5b 5d 20 56 61 6c 75 65 73 0d 0a 20 20 20  ue[] Values..   
b910: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b920: 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
b930: 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
b940: 6e 20 76 61 6c 75 65 73 3b 20 7d 0d 0a 20 20 20  n values; }..   
b950: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
b960: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
b970: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
b980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
b9c0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
b9d0: 20 50 72 6f 74 65 63 74 65 64 20 4d 65 74 68 6f   Protected Metho
b9e0: 64 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ds..        /// 
b9f0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
ba00: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73 20     /// Attempts 
ba10: 74 6f 20 70 65 72 73 69 73 74 20 74 68 65 20 73  to persist the s
ba20: 70 65 63 69 66 69 65 64 20 3c 73 65 65 20 63 72  pecified <see cr
ba30: 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22  ef="SQLiteValue"
ba40: 20 2f 3e 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20   /> object..    
ba50: 20 20 20 20 2f 2f 2f 20 69 6e 73 74 61 6e 63 65      /// instance
ba60: 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 6d 61  s in order to ma
ba70: 6b 65 20 74 68 65 6d 20 61 76 61 69 6c 61 62 6c  ke them availabl
ba80: 65 20 61 66 74 65 72 20 74 68 65 0d 0a 20 20 20  e after the..   
ba90: 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
baa0: 65 66 3d 22 49 53 51 4c 69 74 65 4d 61 6e 61 67  ef="ISQLiteManag
bab0: 65 64 4d 6f 64 75 6c 65 2e 46 69 6c 74 65 72 22  edModule.Filter"
bac0: 20 2f 3e 20 6d 65 74 68 6f 64 20 72 65 74 75 72   /> method retur
bad0: 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns...        ///
bae0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
baf0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
bb00: 6e 61 6d 65 3d 22 76 61 6c 75 65 73 22 3e 0d 0a  name="values">..
bb10: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
bb20: 61 72 72 61 79 20 6f 66 20 3c 73 65 65 20 63 72  array of <see cr
bb30: 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75 65 22  ef="SQLiteValue"
bb40: 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
bb50: 6e 63 65 73 20 74 6f 20 62 65 0d 0a 20 20 20 20  nces to be..    
bb60: 20 20 20 20 2f 2f 2f 20 70 65 72 73 69 73 74 65      /// persiste
bb70: 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
bb80: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
bb90: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
bba0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
bbb0: 20 6e 75 6d 62 65 72 20 6f 66 20 3c 73 65 65 20   number of <see 
bbc0: 63 72 65 66 3d 22 53 51 4c 69 74 65 56 61 6c 75  cref="SQLiteValu
bbd0: 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
bbe0: 74 61 6e 63 65 73 20 74 68 61 74 20 77 65 72 65  tances that were
bbf0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75  ..        /// su
bc00: 63 63 65 73 73 66 75 6c 6c 79 20 70 65 72 73 69  ccessfully persi
bc10: 73 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  sted...        /
bc20: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
bc30: 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
bc40: 20 76 69 72 74 75 61 6c 20 69 6e 74 20 54 72 79   virtual int Try
bc50: 50 65 72 73 69 73 74 56 61 6c 75 65 73 28 0d 0a  PersistValues(..
bc60: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
bc70: 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75 65 73  teValue[] values
bc80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
bc90: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
bca0: 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73 75          int resu
bcb0: 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  lt = 0;....     
bcc0: 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
bcd0: 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
bce0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
bcf0: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61             forea
bd00: 63 68 20 28 53 51 4c 69 74 65 56 61 6c 75 65 20  ch (SQLiteValue 
bd10: 76 61 6c 75 65 20 69 6e 20 76 61 6c 75 65 73 29  value in values)
bd20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bd30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
bd40: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
bd50: 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
bd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd70: 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
bd80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bd90: 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 2e        if (value.
bda0: 50 65 72 73 69 73 74 28 29 29 0d 0a 20 20 20 20  Persist())..    
bdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bdc0: 20 20 20 20 72 65 73 75 6c 74 2b 2b 3b 0d 0a 20      result++;.. 
bdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
bde0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
bdf0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
be00: 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
be10: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
be20: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
be30: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
be40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
be80: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
be90: 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64  on Public Method
bea0: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  s..        /// <
beb0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
bec0: 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
bed0: 64 20 73 68 6f 75 6c 64 20 6e 6f 72 6d 61 6c 6c  d should normall
bee0: 79 20 62 65 20 75 73 65 64 20 62 79 20 74 68 65  y be used by the
bef0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
bf00: 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
bf10: 4d 61 6e 61 67 65 64 4d 6f 64 75 6c 65 2e 46 69  ManagedModule.Fi
bf20: 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 20  lter" /> method 
bf30: 69 6e 20 6f 72 64 65 72 20 74 6f 0d 0a 20 20 20  in order to..   
bf40: 20 20 20 20 20 2f 2f 2f 20 70 65 72 66 6f 72 6d       /// perform
bf50: 20 66 69 6c 74 65 72 69 6e 67 20 6f 66 20 74 68   filtering of th
bf60: 65 20 72 65 73 75 6c 74 20 72 6f 77 73 20 61 6e  e result rows an
bf70: 64 2f 6f 72 20 74 6f 20 72 65 63 6f 72 64 20 74  d/or to record t
bf80: 68 65 20 66 69 6c 74 65 72 69 6e 67 0d 0a 20 20  he filtering..  
bf90: 20 20 20 20 20 20 2f 2f 2f 20 63 72 69 74 65 72        /// criter
bfa0: 69 61 20 70 72 6f 76 69 64 65 64 20 62 79 20 74  ia provided by t
bfb0: 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c  he SQLite core l
bfc0: 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
bfd0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
bfe0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
bff0: 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 4e  ram name="indexN
c000: 75 6d 62 65 72 22 3e 0d 0a 20 20 20 20 20 20 20  umber">..       
c010: 20 2f 2f 2f 20 4e 75 6d 62 65 72 20 75 73 65 64   /// Number used
c020: 20 74 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66   to help identif
c030: 79 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69  y the selected i
c040: 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ndex...        /
c050: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
c060: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
c070: 6e 61 6d 65 3d 22 69 6e 64 65 78 53 74 72 69 6e  name="indexStrin
c080: 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  g">..        ///
c090: 20 53 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20   String used to 
c0a0: 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68  help identify th
c0b0: 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
c0c0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
c0d0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
c0e0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
c0f0: 3d 22 76 61 6c 75 65 73 22 3e 0d 0a 20 20 20 20  ="values">..    
c100: 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75      /// The valu
c110: 65 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  es corresponding
c120: 20 74 6f 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20   to each column 
c130: 69 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64 20  in the selected 
c140: 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
c150: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
c160: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 69 72        public vir
c170: 74 75 61 6c 20 76 6f 69 64 20 46 69 6c 74 65 72  tual void Filter
c180: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  (..            i
c190: 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c 0d  nt indexNumber,.
c1a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
c1b0: 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67 2c  ing indexString,
c1c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
c1d0: 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c 75  LiteValue[] valu
c1e0: 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
c1f0: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
c200: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
c210: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
c220: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 76            if ((v
c230: 61 6c 75 65 73 20 21 3d 20 6e 75 6c 6c 29 20 26  alues != null) &
c240: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
c250: 20 20 20 28 54 72 79 50 65 72 73 69 73 74 56 61     (TryPersistVa
c260: 6c 75 65 73 28 76 61 6c 75 65 73 29 20 21 3d 20  lues(values) != 
c270: 76 61 6c 75 65 73 2e 4c 65 6e 67 74 68 29 29 0d  values.Length)).
c280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
c290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2a0: 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65  throw new SQLite
c2b0: 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20  Exception(..    
c2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2d0: 22 66 61 69 6c 65 64 20 74 6f 20 70 65 72 73 69  "failed to persi
c2e0: 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 76  st one or more v
c2f0: 61 6c 75 65 73 22 29 3b 0d 0a 20 20 20 20 20 20  alues");..      
c300: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
c310: 20 20 20 20 20 20 20 74 68 69 73 2e 69 6e 64 65         this.inde
c320: 78 4e 75 6d 62 65 72 20 3d 20 69 6e 64 65 78 4e  xNumber = indexN
c330: 75 6d 62 65 72 3b 0d 0a 20 20 20 20 20 20 20 20  umber;..        
c340: 20 20 20 20 74 68 69 73 2e 69 6e 64 65 78 53 74      this.indexSt
c350: 72 69 6e 67 20 3d 20 69 6e 64 65 78 53 74 72 69  ring = indexStri
c360: 6e 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng;..           
c370: 20 74 68 69 73 2e 76 61 6c 75 65 73 20 3d 20 76   this.values = v
c380: 61 6c 75 65 73 3b 0d 0a 20 20 20 20 20 20 20 20  alues;..        
c390: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
c3a0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
c3b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
c3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c3f0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
c400: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
c410: 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 20  iteNativeHandle 
c420: 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
c430: 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20   private IntPtr 
c440: 6e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 20  nativeHandle;.. 
c450: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
c460: 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
c470: 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 75 6e  / Returns the un
c480: 64 65 72 6c 79 69 6e 67 20 53 51 4c 69 74 65 20  derlying SQLite 
c490: 6e 61 74 69 76 65 20 68 61 6e 64 6c 65 20 61 73  native handle as
c4a0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
c4b0: 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  is..        /// 
c4c0: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e  object instance.
c4d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
c4e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
c4f0: 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
c500: 20 49 6e 74 50 74 72 20 4e 61 74 69 76 65 48 61   IntPtr NativeHa
c510: 6e 64 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ndle..        {.
c520: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
c530: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
c540: 28 29 3b 20 72 65 74 75 72 6e 20 6e 61 74 69 76  (); return nativ
c550: 65 48 61 6e 64 6c 65 3b 20 7d 0d 0a 20 20 20 20  eHandle; }..    
c560: 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
c570: 20 73 65 74 20 7b 20 6e 61 74 69 76 65 48 61 6e   set { nativeHan
c580: 64 6c 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  dle = value; }..
c590: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
c5a0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
c5b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
c5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c600: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
c610: 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
c620: 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
c630: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
c640: 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70          /// Disp
c650: 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a  oses of this obj
c660: 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
c670: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
c680: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 70  mary>..        p
c690: 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
c6a0: 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  se()..        {.
c6b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73  .            Dis
c6c0: 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20  pose(true);..   
c6d0: 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70           GC.Supp
c6e0: 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
c6f0: 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  s);..        }..
c700: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
c710: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
c720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c760: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
c770: 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73   #region IDispos
c780: 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d  able "Pattern" M
c790: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
c7a0: 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73  private bool dis
c7b0: 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20  posed;..        
c7c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
c7d0: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 72 6f 77         /// Throw
c7e0: 73 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22  s an <see cref="
c7f0: 53 79 73 74 65 6d 2e 4f 62 6a 65 63 74 44 69 73  System.ObjectDis
c800: 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 22 2f  posedException"/
c810: 3e 20 69 66 20 74 68 69 73 0d 0a 20 20 20 20 20  > if this..     
c820: 20 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e     /// object in
c830: 73 74 61 6e 63 65 20 68 61 73 20 62 65 65 6e 20  stance has been 
c840: 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20  disposed...     
c850: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
c860: 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  >..        priva
c870: 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73  te void CheckDis
c880: 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77  posed() /* throw
c890: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a   */..        {..
c8a0: 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53  #if THROW_ON_DIS
c8b0: 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20 20  POSED..         
c8c0: 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64 29     if (disposed)
c8d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
c8e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c8f0: 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63   throw new Objec
c900: 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69  tDisposedExcepti
c910: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
c920: 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28           typeof(
c930: 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
c940: 6c 65 43 75 72 73 6f 72 29 2e 4e 61 6d 65 29 3b  leCursor).Name);
c950: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
c960: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
c970: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
c980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9c0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
c9d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
c9e0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69 73 70          /// Disp
c9f0: 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f 62 6a  oses of this obj
ca00: 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20  ect instance... 
ca10: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
ca20: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
ca30: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
ca40: 64 69 73 70 6f 73 69 6e 67 22 3e 0d 0a 20 20 20  disposing">..   
ca50: 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72       /// Non-zer
ca60: 6f 20 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64  o if this method
ca70: 20 69 73 20 62 65 69 6e 67 20 63 61 6c 6c 65 64   is being called
ca80: 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20   from the..     
ca90: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
caa0: 3d 22 44 69 73 70 6f 73 65 28 29 22 20 2f 3e 20  ="Dispose()" /> 
cab0: 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20 69 66  method.  Zero if
cac0: 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   this method is 
cad0: 62 65 69 6e 67 20 63 61 6c 6c 65 64 0d 0a 20 20  being called..  
cae0: 20 20 20 20 20 20 2f 2f 2f 20 66 72 6f 6d 20 74        /// from t
caf0: 68 65 20 66 69 6e 61 6c 69 7a 65 72 2e 0d 0a 20  he finalizer... 
cb00: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
cb10: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  am>..        pro
cb20: 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 76  tected virtual v
cb30: 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c  oid Dispose(bool
cb40: 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20   disposing)..   
cb50: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
cb60: 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65      if (!dispose
cb70: 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
cb80: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
cb90: 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73 69     //if (disposi
cba0: 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng)..           
cbb0: 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20       //{..      
cbc0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
cbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbf0: 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
cc00: 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20 64        //    // d
cc10: 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72  ispose managed r
cc20: 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e  esources here...
cc30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cc40: 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f    //    ////////
cc50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
cc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
cc80: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
cc90: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
cca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ccb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
ccc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
ccd0: 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65  release unmanage
cce0: 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65  d resources here
ccf0: 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .....           
cd00: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
cd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
cd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
cd40: 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  isposed = true;.
cd50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
cd60: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
cd70: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
cd80: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
cd90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cdb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cdc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cdd0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
cde0: 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a  ion Destructor..
cdf0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
ce00: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
ce10: 2f 2f 20 46 69 6e 61 6c 69 7a 65 73 20 74 68 69  // Finalizes thi
ce20: 73 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  s object instanc
ce30: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
ce40: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
ce50: 20 20 20 20 7e 53 51 4c 69 74 65 56 69 72 74 75      ~SQLiteVirtu
ce60: 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 28 29 0d  alTableCursor().
ce70: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
ce80: 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
ce90: 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
cea0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
ceb0: 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20  region..    }.. 
cec0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
ced0: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
cee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf20: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
cf30: 49 53 51 4c 69 74 65 4e 61 74 69 76 65 48 61 6e  ISQLiteNativeHan
cf40: 64 6c 65 20 49 6e 74 65 72 66 61 63 65 0d 0a 20  dle Interface.. 
cf50: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
cf60: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69  ..    /// This i
cf70: 6e 74 65 72 66 61 63 65 20 72 65 70 72 65 73 65  nterface represe
cf80: 6e 74 73 20 61 20 6e 61 74 69 76 65 20 68 61 6e  nts a native han
cf90: 64 6c 65 20 70 72 6f 76 69 64 65 64 20 62 79 20  dle provided by 
cfa0: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d  the SQLite core.
cfb0: 0a 20 20 20 20 2f 2f 2f 20 6c 69 62 72 61 72 79  .    /// library
cfc0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
cfd0: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69  mary>..    publi
cfe0: 63 20 69 6e 74 65 72 66 61 63 65 20 49 53 51 4c  c interface ISQL
cff0: 69 74 65 4e 61 74 69 76 65 48 61 6e 64 6c 65 0d  iteNativeHandle.
d000: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
d010: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
d020: 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
d030: 61 74 69 76 65 20 68 61 6e 64 6c 65 20 76 61 6c  ative handle val
d040: 75 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ue...        ///
d050: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
d060: 20 20 20 20 20 49 6e 74 50 74 72 20 4e 61 74 69       IntPtr Nati
d070: 76 65 48 61 6e 64 6c 65 20 7b 20 67 65 74 3b 20  veHandle { get; 
d080: 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  }..    }..    #e
d090: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
d0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
d0f0: 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69     #region ISQLi
d100: 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 49  teNativeModule I
d110: 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20 2f 2f  nterface..    //
d120: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
d130: 20 2f 2f 2f 20 54 68 69 73 20 69 6e 74 65 72 66   /// This interf
d140: 61 63 65 20 72 65 70 72 65 73 65 6e 74 73 20 61  ace represents a
d150: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
d160: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77 72  mplementation wr
d170: 69 74 74 65 6e 20 69 6e 0d 0a 20 20 20 20 2f 2f  itten in..    //
d180: 2f 20 6e 61 74 69 76 65 20 63 6f 64 65 2e 0d 0a  / native code...
d190: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
d1a0: 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69  y>..    public i
d1b0: 6e 74 65 72 66 61 63 65 20 49 53 51 4c 69 74 65  nterface ISQLite
d1c0: 4e 61 74 69 76 65 4d 6f 64 75 6c 65 0d 0a 20 20  NativeModule..  
d1d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f    {..        ///
d1e0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
d1f0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
d200: 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 74 6f  hod is called to
d210: 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 69 6e   create a new in
d220: 73 74 61 6e 63 65 20 6f 66 20 61 20 76 69 72 74  stance of a virt
d230: 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
d240: 20 20 20 2f 2f 2f 20 69 6e 20 72 65 73 70 6f 6e     /// in respon
d250: 73 65 20 74 6f 20 61 20 43 52 45 41 54 45 20 56  se to a CREATE V
d260: 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61  IRTUAL TABLE sta
d270: 74 65 6d 65 6e 74 2e 20 54 68 65 20 64 62 20 70  tement. The db p
d280: 61 72 61 6d 65 74 65 72 0d 0a 20 20 20 20 20 20  arameter..      
d290: 20 20 2f 2f 2f 20 69 73 20 61 20 70 6f 69 6e 74    /// is a point
d2a0: 65 72 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65  er to the SQLite
d2b0: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
d2c0: 74 69 6f 6e 20 74 68 61 74 20 69 73 20 65 78 65  tion that is exe
d2d0: 63 75 74 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  cuting..        
d2e0: 2f 2f 2f 20 74 68 65 20 43 52 45 41 54 45 20 56  /// the CREATE V
d2f0: 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61  IRTUAL TABLE sta
d300: 74 65 6d 65 6e 74 2e 20 54 68 65 20 70 41 75 78  tement. The pAux
d310: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65   argument is the
d320: 20 63 6f 70 79 0d 0a 20 20 20 20 20 20 20 20 2f   copy..        /
d330: 2f 2f 20 6f 66 20 74 68 65 20 63 6c 69 65 6e 74  // of the client
d340: 20 64 61 74 61 20 70 6f 69 6e 74 65 72 20 74 68   data pointer th
d350: 61 74 20 77 61 73 20 74 68 65 20 66 6f 75 72 74  at was the fourt
d360: 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68  h argument to th
d370: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
d380: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f  qlite3_create_mo
d390: 64 75 6c 65 28 29 20 6f 72 20 73 71 6c 69 74 65  dule() or sqlite
d3a0: 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f  3_create_module_
d3b0: 76 32 28 29 20 63 61 6c 6c 20 74 68 61 74 0d 0a  v2() call that..
d3c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 67 69          /// regi
d3d0: 73 74 65 72 65 64 20 74 68 65 20 76 69 72 74 75  stered the virtu
d3e0: 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 2e  al table module.
d3f0: 20 54 68 65 20 61 72 67 76 20 70 61 72 61 6d 65   The argv parame
d400: 74 65 72 20 69 73 20 61 6e 0d 0a 20 20 20 20 20  ter is an..     
d410: 20 20 20 2f 2f 2f 20 61 72 72 61 79 20 6f 66 20     /// array of 
d420: 61 72 67 63 20 70 6f 69 6e 74 65 72 73 20 74 6f  argc pointers to
d430: 20 6e 75 6c 6c 20 74 65 72 6d 69 6e 61 74 65 64   null terminated
d440: 20 73 74 72 69 6e 67 73 2e 20 54 68 65 20 66 69   strings. The fi
d450: 72 73 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  rst..        ///
d460: 20 73 74 72 69 6e 67 2c 20 61 72 67 76 5b 30 5d   string, argv[0]
d470: 2c 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  , is the name of
d480: 20 74 68 65 20 6d 6f 64 75 6c 65 20 62 65 69 6e   the module bein
d490: 67 20 69 6e 76 6f 6b 65 64 2e 20 54 68 65 0d 0a  g invoked. The..
d4a0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 64 75          /// modu
d4b0: 6c 65 20 6e 61 6d 65 20 69 73 20 74 68 65 20 6e  le name is the n
d4c0: 61 6d 65 20 70 72 6f 76 69 64 65 64 20 61 73 20  ame provided as 
d4d0: 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d  the second argum
d4e0: 65 6e 74 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  ent to..        
d4f0: 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61  /// sqlite3_crea
d500: 74 65 5f 6d 6f 64 75 6c 65 28 29 20 61 6e 64 20  te_module() and 
d510: 61 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  as the argument 
d520: 74 6f 20 74 68 65 20 55 53 49 4e 47 20 63 6c 61  to the USING cla
d530: 75 73 65 20 6f 66 0d 0a 20 20 20 20 20 20 20 20  use of..        
d540: 2f 2f 2f 20 74 68 65 20 43 52 45 41 54 45 20 56  /// the CREATE V
d550: 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61  IRTUAL TABLE sta
d560: 74 65 6d 65 6e 74 20 74 68 61 74 20 69 73 20 72  tement that is r
d570: 75 6e 6e 69 6e 67 2e 20 54 68 65 20 73 65 63 6f  unning. The seco
d580: 6e 64 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nd,..        ///
d590: 20 61 72 67 76 5b 31 5d 2c 20 69 73 20 74 68 65   argv[1], is the
d5a0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74   name of the dat
d5b0: 61 62 61 73 65 20 69 6e 20 77 68 69 63 68 20 74  abase in which t
d5c0: 68 65 20 6e 65 77 20 76 69 72 74 75 61 6c 20 74  he new virtual t
d5d0: 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  able..        //
d5e0: 2f 20 69 73 20 62 65 69 6e 67 20 63 72 65 61 74  / is being creat
d5f0: 65 64 2e 20 54 68 65 20 64 61 74 61 62 61 73 65  ed. The database
d600: 20 6e 61 6d 65 20 69 73 20 22 6d 61 69 6e 22 20   name is "main" 
d610: 66 6f 72 20 74 68 65 20 70 72 69 6d 61 72 79 0d  for the primary.
d620: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 61 74  .        /// dat
d630: 61 62 61 73 65 2c 20 6f 72 20 22 74 65 6d 70 22  abase, or "temp"
d640: 20 66 6f 72 20 54 45 4d 50 20 64 61 74 61 62 61   for TEMP databa
d650: 73 65 2c 20 6f 72 20 74 68 65 20 6e 61 6d 65 20  se, or the name 
d660: 67 69 76 65 6e 20 61 74 20 74 68 65 0d 0a 20 20  given at the..  
d670: 20 20 20 20 20 20 2f 2f 2f 20 65 6e 64 20 6f 66        /// end of
d680: 20 74 68 65 20 41 54 54 41 43 48 20 73 74 61 74   the ATTACH stat
d690: 65 6d 65 6e 74 20 66 6f 72 20 61 74 74 61 63 68  ement for attach
d6a0: 65 64 20 64 61 74 61 62 61 73 65 73 2e 20 54 68  ed databases. Th
d6b0: 65 20 74 68 69 72 64 0d 0a 20 20 20 20 20 20 20  e third..       
d6c0: 20 2f 2f 2f 20 65 6c 65 6d 65 6e 74 20 6f 66 20   /// element of 
d6d0: 74 68 65 20 61 72 72 61 79 2c 20 61 72 67 76 5b  the array, argv[
d6e0: 32 5d 2c 20 69 73 20 74 68 65 20 6e 61 6d 65 20  2], is the name 
d6f0: 6f 66 20 74 68 65 20 6e 65 77 20 76 69 72 74 75  of the new virtu
d700: 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  al..        /// 
d710: 74 61 62 6c 65 2c 20 61 73 20 73 70 65 63 69 66  table, as specif
d720: 69 65 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68  ied following th
d730: 65 20 54 41 42 4c 45 20 6b 65 79 77 6f 72 64 20  e TABLE keyword 
d740: 69 6e 20 74 68 65 20 43 52 45 41 54 45 0d 0a 20  in the CREATE.. 
d750: 20 20 20 20 20 20 20 2f 2f 2f 20 56 49 52 54 55         /// VIRTU
d760: 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  AL TABLE stateme
d770: 6e 74 2e 20 49 66 20 70 72 65 73 65 6e 74 2c 20  nt. If present, 
d780: 74 68 65 20 66 6f 75 72 74 68 20 61 6e 64 20 73  the fourth and s
d790: 75 62 73 65 71 75 65 6e 74 0d 0a 20 20 20 20 20  ubsequent..     
d7a0: 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 73 20 69     /// strings i
d7b0: 6e 20 74 68 65 20 61 72 67 76 5b 5d 20 61 72 72  n the argv[] arr
d7c0: 61 79 20 72 65 70 6f 72 74 20 74 68 65 20 61 72  ay report the ar
d7d0: 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 65 20 6d  guments to the m
d7e0: 6f 64 75 6c 65 20 6e 61 6d 65 0d 0a 20 20 20 20  odule name..    
d7f0: 20 20 20 20 2f 2f 2f 20 69 6e 20 74 68 65 20 43      /// in the C
d800: 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
d810: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a  BLE statement...
d820: 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20          ///..   
d830: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6a 6f 62       /// The job
d840: 20 6f 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20   of this method 
d850: 69 73 20 74 6f 20 63 6f 6e 73 74 72 75 63 74 20  is to construct 
d860: 74 68 65 20 6e 65 77 20 76 69 72 74 75 61 6c 20  the new virtual 
d870: 74 61 62 6c 65 20 6f 62 6a 65 63 74 0d 0a 20 20  table object..  
d880: 20 20 20 20 20 20 2f 2f 2f 20 28 61 6e 20 73 71        /// (an sq
d890: 6c 69 74 65 33 5f 76 74 61 62 20 6f 62 6a 65 63  lite3_vtab objec
d8a0: 74 29 20 61 6e 64 20 72 65 74 75 72 6e 20 61 20  t) and return a 
d8b0: 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 20 69 6e  pointer to it in
d8c0: 20 2a 70 70 56 54 61 62 2e 0d 0a 20 20 20 20 20   *ppVTab...     
d8d0: 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20     ///..        
d8e0: 2f 2f 2f 20 41 73 20 70 61 72 74 20 6f 66 20 74  /// As part of t
d8f0: 68 65 20 74 61 73 6b 20 6f 66 20 63 72 65 61 74  he task of creat
d900: 69 6e 67 20 61 20 6e 65 77 20 73 71 6c 69 74 65  ing a new sqlite
d910: 33 5f 76 74 61 62 20 73 74 72 75 63 74 75 72 65  3_vtab structure
d920: 2c 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20  , this..        
d930: 2f 2f 2f 20 6d 65 74 68 6f 64 20 6d 75 73 74 20  /// method must 
d940: 69 6e 76 6f 6b 65 20 73 71 6c 69 74 65 33 5f 64  invoke sqlite3_d
d950: 65 63 6c 61 72 65 5f 76 74 61 62 28 29 20 74 6f  eclare_vtab() to
d960: 20 74 65 6c 6c 20 74 68 65 20 53 51 4c 69 74 65   tell the SQLite
d970: 20 63 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 2f   core..        /
d980: 2f 2f 20 61 62 6f 75 74 20 74 68 65 20 63 6f 6c  // about the col
d990: 75 6d 6e 73 20 61 6e 64 20 64 61 74 61 74 79 70  umns and datatyp
d9a0: 65 73 20 69 6e 20 74 68 65 20 76 69 72 74 75 61  es in the virtua
d9b0: 6c 20 74 61 62 6c 65 2e 20 54 68 65 0d 0a 20 20  l table. The..  
d9c0: 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65        /// sqlite
d9d0: 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62 28 29  3_declare_vtab()
d9e0: 20 41 50 49 20 68 61 73 20 74 68 65 20 66 6f 6c   API has the fol
d9f0: 6c 6f 77 69 6e 67 20 70 72 6f 74 6f 74 79 70 65  lowing prototype
da00: 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a  :..        ///..
da10: 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 20          /// int 
da20: 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f  sqlite3_declare_
da30: 76 74 61 62 28 73 71 6c 69 74 65 33 20 2a 64 62  vtab(sqlite3 *db
da40: 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 43  , const char *zC
da50: 72 65 61 74 65 54 61 62 6c 65 29 0d 0a 20 20 20  reateTable)..   
da60: 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20       ///..      
da70: 20 20 2f 2f 2f 20 54 68 65 20 66 69 72 73 74 20    /// The first 
da80: 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69  argument to sqli
da90: 74 65 33 5f 64 65 63 6c 61 72 65 5f 76 74 61 62  te3_declare_vtab
daa0: 28 29 20 6d 75 73 74 20 62 65 20 74 68 65 20 73  () must be the s
dab0: 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ame..        ///
dac0: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
dad0: 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 61 73 20  tion pointer as 
dae0: 74 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65  the first parame
daf0: 74 65 72 20 74 6f 20 74 68 69 73 20 6d 65 74 68  ter to this meth
db00: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
db10: 20 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75   The second argu
db20: 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f  ment to sqlite3_
db30: 64 65 63 6c 61 72 65 5f 76 74 61 62 28 29 20 6d  declare_vtab() m
db40: 75 73 74 20 61 0d 0a 20 20 20 20 20 20 20 20 2f  ust a..        /
db50: 2f 2f 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74  // zero-terminat
db60: 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20  ed UTF-8 string 
db70: 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 61 20  that contains a 
db80: 77 65 6c 6c 2d 66 6f 72 6d 65 64 20 43 52 45 41  well-formed CREA
db90: 54 45 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  TE..        /// 
dba0: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20  TABLE statement 
dbb0: 74 68 61 74 20 64 65 66 69 6e 65 73 20 74 68 65  that defines the
dbc0: 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
dbd0: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 61 6e  virtual table an
dbe0: 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  d..        /// t
dbf0: 68 65 69 72 20 64 61 74 61 20 74 79 70 65 73 2e  heir data types.
dc00: 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   The name of the
dc10: 20 74 61 62 6c 65 20 69 6e 20 74 68 69 73 20 43   table in this C
dc20: 52 45 41 54 45 20 54 41 42 4c 45 0d 0a 20 20 20  REATE TABLE..   
dc30: 20 20 20 20 20 2f 2f 2f 20 73 74 61 74 65 6d 65       /// stateme
dc40: 6e 74 20 69 73 20 69 67 6e 6f 72 65 64 2c 20 61  nt is ignored, a
dc50: 73 20 61 72 65 20 61 6c 6c 20 63 6f 6e 73 74 72  s are all constr
dc60: 61 69 6e 74 73 2e 20 4f 6e 6c 79 20 74 68 65 20  aints. Only the 
dc70: 63 6f 6c 75 6d 6e 20 6e 61 6d 65 73 0d 0a 20 20  column names..  
dc80: 20 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 64 61        /// and da
dc90: 74 61 74 79 70 65 73 20 6d 61 74 74 65 72 2e 20  tatypes matter. 
dca0: 54 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45  The CREATE TABLE
dcb0: 20 73 74 61 74 65 6d 65 6e 74 20 73 74 72 69 6e   statement strin
dcc0: 67 20 6e 65 65 64 20 6e 6f 74 20 74 6f 0d 0a 20  g need not to.. 
dcd0: 20 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 68 65         /// be he
dce0: 6c 64 20 69 6e 20 70 65 72 73 69 73 74 65 6e 74  ld in persistent
dcf0: 20 6d 65 6d 6f 72 79 2e 20 54 68 65 20 73 74 72   memory. The str
dd00: 69 6e 67 20 63 61 6e 20 62 65 20 64 65 61 6c 6c  ing can be deall
dd10: 6f 63 61 74 65 64 20 61 6e 64 2f 6f 72 0d 0a 20  ocated and/or.. 
dd20: 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 75 73 65         /// reuse
dd30: 64 20 61 73 20 73 6f 6f 6e 20 61 73 20 74 68 65  d as soon as the
dd40: 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65   sqlite3_declare
dd50: 5f 76 74 61 62 28 29 20 72 6f 75 74 69 6e 65 20  _vtab() routine 
dd60: 72 65 74 75 72 6e 73 2e 0d 0a 20 20 20 20 20 20  returns...      
dd70: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
dd80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
dd90: 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e  aram name="pDb">
dda0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
ddb0: 65 20 6e 61 74 69 76 65 20 64 61 74 61 62 61 73  e native databas
ddc0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e  e connection han
ddd0: 64 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dle...        //
dde0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
ddf0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
de00: 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20  ame="pAux">..   
de10: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69       /// The ori
de20: 67 69 6e 61 6c 20 6e 61 74 69 76 65 20 70 6f 69  ginal native poi
de30: 6e 74 65 72 20 76 61 6c 75 65 20 74 68 61 74 20  nter value that 
de40: 77 61 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20  was provided to 
de50: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
de60: 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f   sqlite3_create_
de70: 6d 6f 64 75 6c 65 28 29 2c 20 73 71 6c 69 74 65  module(), sqlite
de80: 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f  3_create_module_
de90: 76 32 28 29 20 6f 72 0d 0a 20 20 20 20 20 20 20  v2() or..       
dea0: 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65   /// sqlite3_cre
deb0: 61 74 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d  ate_disposable_m
dec0: 6f 64 75 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e  odule() function
ded0: 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s...        /// 
dee0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
def0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
df00: 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
df10: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
df20: 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 66  r of arguments f
df30: 72 6f 6d 20 74 68 65 20 43 52 45 41 54 45 20 56  rom the CREATE V
df40: 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61  IRTUAL TABLE sta
df50: 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  tement...       
df60: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
df70: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
df80: 6d 20 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a  m name="argv">..
df90: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
dfa0: 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 20  array of string 
dfb0: 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74  arguments from t
dfc0: 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41  he CREATE VIRTUA
dfd0: 4c 20 54 41 42 4c 45 0d 0a 20 20 20 20 20 20 20  L TABLE..       
dfe0: 20 2f 2f 2f 20 73 74 61 74 65 6d 65 6e 74 2e 0d   /// statement..
dff0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
e000: 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
e010: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
e020: 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
e030: 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
e040: 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
e050: 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
e060: 65 64 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74  ed to point to t
e070: 68 65 20 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20  he newly..      
e080: 20 20 2f 2f 2f 20 63 72 65 61 74 65 64 20 6e 61    /// created na
e090: 74 69 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61  tive sqlite3_vta
e0a0: 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
e0b0: 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
e0c0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
e0d0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
e0e0: 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20  ame="pError">.. 
e0f0: 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
e100: 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61  failure, this pa
e110: 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
e120: 6d 6f 64 69 66 69 65 64 20 74 6f 20 70 6f 69 6e  modified to poin
e130: 74 20 74 6f 20 74 68 65 20 65 72 72 6f 72 0d 0a  t to the error..
e140: 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73          /// mess
e150: 61 67 65 2c 20 77 69 74 68 20 74 68 65 20 75 6e  age, with the un
e160: 64 65 72 6c 79 69 6e 67 20 6d 65 6d 6f 72 79 20  derlying memory 
e170: 68 61 76 69 6e 67 20 62 65 65 6e 20 6f 62 74 61  having been obta
e180: 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20  ined from the.. 
e190: 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74         /// sqlit
e1a0: 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 66 75 6e 63  e3_malloc() func
e1b0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  tion...        /
e1c0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
e1d0: 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
e1e0: 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
e1f0: 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
e200: 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
e210: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
e220: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
e230: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
e240: 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20  xCreate(..      
e250: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62        IntPtr pDb
e260: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
e270: 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20  ntPtr pAux,..   
e280: 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67           int arg
e290: 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c,..            
e2a0: 49 6e 74 50 74 72 5b 5d 20 61 72 67 76 2c 0d 0a  IntPtr[] argv,..
e2b0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
e2c0: 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
e2d0: 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49             ref I
e2e0: 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20  ntPtr pError..  
e2f0: 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
e300: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
e310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
e350: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
e360: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
e370: 20 20 2f 2f 2f 20 54 68 65 20 78 43 6f 6e 6e 65    /// The xConne
e380: 63 74 20 6d 65 74 68 6f 64 20 69 73 20 76 65 72  ct method is ver
e390: 79 20 73 69 6d 69 6c 61 72 20 74 6f 20 78 43 72  y similar to xCr
e3a0: 65 61 74 65 2e 20 49 74 20 68 61 73 20 74 68 65  eate. It has the
e3b0: 20 73 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 2f   same..        /
e3c0: 2f 2f 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e  // parameters an
e3d0: 64 20 63 6f 6e 73 74 72 75 63 74 73 20 61 20 6e  d constructs a n
e3e0: 65 77 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  ew sqlite3_vtab 
e3f0: 73 74 72 75 63 74 75 72 65 20 6a 75 73 74 20 6c  structure just l
e400: 69 6b 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ike..        ///
e410: 20 78 43 72 65 61 74 65 2e 20 41 6e 64 20 69 74   xCreate. And it
e420: 20 6d 75 73 74 20 61 6c 73 6f 20 63 61 6c 6c 20   must also call 
e430: 73 71 6c 69 74 65 33 5f 64 65 63 6c 61 72 65 5f  sqlite3_declare_
e440: 76 74 61 62 28 29 20 6c 69 6b 65 20 78 43 72 65  vtab() like xCre
e450: 61 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ate...        //
e460: 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  /..        /// T
e470: 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 69 73  he difference is
e480: 20 74 68 61 74 20 78 43 6f 6e 6e 65 63 74 20 69   that xConnect i
e490: 73 20 63 61 6c 6c 65 64 20 74 6f 20 65 73 74 61  s called to esta
e4a0: 62 6c 69 73 68 20 61 20 6e 65 77 0d 0a 20 20 20  blish a new..   
e4b0: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74       /// connect
e4c0: 69 6f 6e 20 74 6f 20 61 6e 20 65 78 69 73 74 69  ion to an existi
e4d0: 6e 67 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  ng virtual table
e4e0: 20 77 68 65 72 65 61 73 20 78 43 72 65 61 74 65   whereas xCreate
e4f0: 20 69 73 20 63 61 6c 6c 65 64 0d 0a 20 20 20 20   is called..    
e500: 20 20 20 20 2f 2f 2f 20 74 6f 20 63 72 65 61 74      /// to creat
e510: 65 20 61 20 6e 65 77 20 76 69 72 74 75 61 6c 20  e a new virtual 
e520: 74 61 62 6c 65 20 66 72 6f 6d 20 73 63 72 61 74  table from scrat
e530: 63 68 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ch...        ///
e540: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
e550: 65 20 78 43 72 65 61 74 65 20 61 6e 64 20 78 43  e xCreate and xC
e560: 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 73 20 61  onnect methods a
e570: 72 65 20 6f 6e 6c 79 20 64 69 66 66 65 72 65 6e  re only differen
e580: 74 20 77 68 65 6e 20 74 68 65 0d 0a 20 20 20 20  t when the..    
e590: 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20      /// virtual 
e5a0: 74 61 62 6c 65 20 68 61 73 20 73 6f 6d 65 20 6b  table has some k
e5b0: 69 6e 64 20 6f 66 20 62 61 63 6b 69 6e 67 20 73  ind of backing s
e5c0: 74 6f 72 65 20 74 68 61 74 20 6d 75 73 74 20 62  tore that must b
e5d0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
e5e0: 6e 69 74 69 61 6c 69 7a 65 64 20 74 68 65 20 66  nitialized the f
e5f0: 69 72 73 74 20 74 69 6d 65 20 74 68 65 20 76 69  irst time the vi
e600: 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20 63  rtual table is c
e610: 72 65 61 74 65 64 2e 20 54 68 65 0d 0a 20 20 20  reated. The..   
e620: 20 20 20 20 20 2f 2f 2f 20 78 43 72 65 61 74 65       /// xCreate
e630: 20 6d 65 74 68 6f 64 20 63 72 65 61 74 65 73 20   method creates 
e640: 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 65 73 20  and initializes 
e650: 74 68 65 20 62 61 63 6b 69 6e 67 20 73 74 6f 72  the backing stor
e660: 65 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20 20  e. The..        
e670: 2f 2f 2f 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74  /// xConnect met
e680: 68 6f 64 20 6a 75 73 74 20 63 6f 6e 6e 65 63 74  hod just connect
e690: 73 20 74 6f 20 61 6e 20 65 78 69 73 74 69 6e 67  s to an existing
e6a0: 20 62 61 63 6b 69 6e 67 20 73 74 6f 72 65 2e 0d   backing store..
e6b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20  .        ///..  
e6c0: 20 20 20 20 20 20 2f 2f 2f 20 41 73 20 61 6e 20        /// As an 
e6d0: 65 78 61 6d 70 6c 65 2c 20 63 6f 6e 73 69 64 65  example, conside
e6e0: 72 20 61 20 76 69 72 74 75 61 6c 20 74 61 62 6c  r a virtual tabl
e6f0: 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
e700: 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20 2f   that..        /
e710: 2f 2f 20 70 72 6f 76 69 64 65 73 20 72 65 61 64  // provides read
e720: 2d 6f 6e 6c 79 20 61 63 63 65 73 73 20 74 6f 20  -only access to 
e730: 65 78 69 73 74 69 6e 67 20 63 6f 6d 6d 61 2d 73  existing comma-s
e740: 65 70 61 72 61 74 65 64 2d 76 61 6c 75 65 20 28  eparated-value (
e750: 43 53 56 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f  CSV)..        //
e760: 2f 20 66 69 6c 65 73 20 6f 6e 20 64 69 73 6b 2e  / files on disk.
e770: 20 54 68 65 72 65 20 69 73 20 6e 6f 20 62 61 63   There is no bac
e780: 6b 69 6e 67 20 73 74 6f 72 65 20 74 68 61 74 20  king store that 
e790: 6e 65 65 64 73 20 74 6f 20 62 65 20 63 72 65 61  needs to be crea
e7a0: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
e7b0: 20 6f 72 20 69 6e 69 74 69 61 6c 69 7a 65 64 20   or initialized 
e7c0: 66 6f 72 20 73 75 63 68 20 61 20 76 69 72 74 75  for such a virtu
e7d0: 61 6c 20 74 61 62 6c 65 20 28 73 69 6e 63 65 20  al table (since 
e7e0: 74 68 65 20 43 53 56 20 66 69 6c 65 73 0d 0a 20  the CSV files.. 
e7f0: 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 72 65 61         /// alrea
e800: 64 79 20 65 78 69 73 74 20 6f 6e 20 64 69 73 6b  dy exist on disk
e810: 29 20 73 6f 20 74 68 65 20 78 43 72 65 61 74 65  ) so the xCreate
e820: 20 61 6e 64 20 78 43 6f 6e 6e 65 63 74 20 6d 65   and xConnect me
e830: 74 68 6f 64 73 20 77 69 6c 6c 20 62 65 0d 0a 20  thods will be.. 
e840: 20 20 20 20 20 20 20 2f 2f 2f 20 69 64 65 6e 74         /// ident
e850: 69 63 61 6c 20 66 6f 72 20 74 68 61 74 20 6d 6f  ical for that mo
e860: 64 75 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  dule...        /
e870: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  //..        /// 
e880: 41 6e 6f 74 68 65 72 20 65 78 61 6d 70 6c 65 20  Another example 
e890: 69 73 20 61 20 76 69 72 74 75 61 6c 20 74 61 62  is a virtual tab
e8a0: 6c 65 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e  le that implemen
e8b0: 74 73 20 61 20 66 75 6c 6c 2d 74 65 78 74 0d 0a  ts a full-text..
e8c0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 65          /// inde
e8d0: 78 2e 20 54 68 65 20 78 43 72 65 61 74 65 20 6d  x. The xCreate m
e8e0: 65 74 68 6f 64 20 6d 75 73 74 20 63 72 65 61 74  ethod must creat
e8f0: 65 20 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 65  e and initialize
e900: 20 64 61 74 61 0d 0a 20 20 20 20 20 20 20 20 2f   data..        /
e910: 2f 2f 20 73 74 72 75 63 74 75 72 65 73 20 74 6f  // structures to
e920: 20 68 6f 6c 64 20 74 68 65 20 64 69 63 74 69 6f   hold the dictio
e930: 6e 61 72 79 20 61 6e 64 20 70 6f 73 74 69 6e 67  nary and posting
e940: 20 6c 69 73 74 73 20 66 6f 72 20 74 68 61 74 20   lists for that 
e950: 69 6e 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20  index...        
e960: 2f 2f 2f 20 54 68 65 20 78 43 6f 6e 6e 65 63 74  /// The xConnect
e970: 20 6d 65 74 68 6f 64 2c 20 6f 6e 20 74 68 65 20   method, on the 
e980: 6f 74 68 65 72 20 68 61 6e 64 2c 20 6f 6e 6c 79  other hand, only
e990: 20 68 61 73 20 74 6f 20 6c 6f 63 61 74 65 20 61   has to locate a
e9a0: 6e 64 20 75 73 65 0d 0a 20 20 20 20 20 20 20 20  nd use..        
e9b0: 2f 2f 2f 20 61 6e 20 65 78 69 73 74 69 6e 67 20  /// an existing 
e9c0: 64 69 63 74 69 6f 6e 61 72 79 20 61 6e 64 20 70  dictionary and p
e9d0: 6f 73 74 69 6e 67 20 6c 69 73 74 73 20 74 68 61  osting lists tha
e9e0: 74 20 77 65 72 65 20 63 72 65 61 74 65 64 20 62  t were created b
e9f0: 79 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  y a..        ///
ea00: 20 70 72 69 6f 72 20 78 43 72 65 61 74 65 20 63   prior xCreate c
ea10: 61 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  all...        //
ea20: 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  /..        /// T
ea30: 68 65 20 78 43 6f 6e 6e 65 63 74 20 6d 65 74 68  he xConnect meth
ea40: 6f 64 20 6d 75 73 74 20 72 65 74 75 72 6e 20 53  od must return S
ea50: 51 4c 49 54 45 5f 4f 4b 20 69 66 20 69 74 20 69  QLITE_OK if it i
ea60: 73 20 73 75 63 63 65 73 73 66 75 6c 20 69 6e 0d  s successful in.
ea70: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 65  .        /// cre
ea80: 61 74 69 6e 67 20 74 68 65 20 6e 65 77 20 76 69  ating the new vi
ea90: 72 74 75 61 6c 20 74 61 62 6c 65 2c 20 6f 72 20  rtual table, or 
eaa0: 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 69 66 20  SQLITE_ERROR if 
eab0: 69 74 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20  it is not..     
eac0: 20 20 20 2f 2f 2f 20 73 75 63 63 65 73 73 66 75     /// successfu
ead0: 6c 2e 20 49 66 20 6e 6f 74 20 73 75 63 63 65 73  l. If not succes
eae0: 73 66 75 6c 2c 20 74 68 65 20 73 71 6c 69 74 65  sful, the sqlite
eaf0: 33 5f 76 74 61 62 20 73 74 72 75 63 74 75 72 65  3_vtab structure
eb00: 20 6d 75 73 74 20 6e 6f 74 0d 0a 20 20 20 20 20   must not..     
eb10: 20 20 20 2f 2f 2f 20 62 65 20 61 6c 6c 6f 63 61     /// be alloca
eb20: 74 65 64 2e 20 41 6e 20 65 72 72 6f 72 20 6d 65  ted. An error me
eb30: 73 73 61 67 65 20 6d 61 79 20 6f 70 74 69 6f 6e  ssage may option
eb40: 61 6c 6c 79 20 62 65 20 72 65 74 75 72 6e 65 64  ally be returned
eb50: 20 69 6e 20 2a 70 7a 45 72 72 0d 0a 20 20 20 20   in *pzErr..    
eb60: 20 20 20 20 2f 2f 2f 20 69 66 20 75 6e 73 75 63      /// if unsuc
eb70: 63 65 73 73 66 75 6c 2e 20 53 70 61 63 65 20 74  cessful. Space t
eb80: 6f 20 68 6f 6c 64 20 74 68 65 20 65 72 72 6f 72  o hold the error
eb90: 20 6d 65 73 73 61 67 65 20 73 74 72 69 6e 67 20   message string 
eba0: 6d 75 73 74 20 62 65 0d 0a 20 20 20 20 20 20 20  must be..       
ebb0: 20 2f 2f 2f 20 61 6c 6c 6f 63 61 74 65 64 20 75   /// allocated u
ebc0: 73 69 6e 67 20 61 6e 20 53 51 4c 69 74 65 20 6d  sing an SQLite m
ebd0: 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
ebe0: 20 66 75 6e 63 74 69 6f 6e 20 6c 69 6b 65 0d 0a   function like..
ebf0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69          /// sqli
ec00: 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 6f 72 20  te3_malloc() or 
ec10: 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28  sqlite3_mprintf(
ec20: 29 20 61 73 20 74 68 65 20 53 51 4c 69 74 65 20  ) as the SQLite 
ec30: 63 6f 72 65 20 77 69 6c 6c 0d 0a 20 20 20 20 20  core will..     
ec40: 20 20 20 2f 2f 2f 20 61 74 74 65 6d 70 74 20 74     /// attempt t
ec50: 6f 20 66 72 65 65 20 74 68 65 20 73 70 61 63 65  o free the space
ec60: 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 66   using sqlite3_f
ec70: 72 65 65 28 29 20 61 66 74 65 72 20 74 68 65 20  ree() after the 
ec80: 65 72 72 6f 72 20 68 61 73 0d 0a 20 20 20 20 20  error has..     
ec90: 20 20 20 2f 2f 2f 20 62 65 65 6e 20 72 65 70 6f     /// been repo
eca0: 72 74 65 64 20 75 70 20 74 6f 20 74 68 65 20 61  rted up to the a
ecb0: 70 70 6c 69 63 61 74 69 6f 6e 2e 0d 0a 20 20 20  pplication...   
ecc0: 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20       ///..      
ecd0: 20 20 2f 2f 2f 20 54 68 65 20 78 43 6f 6e 6e 65    /// The xConne
ece0: 63 74 20 6d 65 74 68 6f 64 20 69 73 20 72 65 71  ct method is req
ecf0: 75 69 72 65 64 20 66 6f 72 20 65 76 65 72 79 20  uired for every 
ed00: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20  virtual table.. 
ed10: 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65         /// imple
ed20: 6d 65 6e 74 61 74 69 6f 6e 2c 20 74 68 6f 75 67  mentation, thoug
ed30: 68 20 74 68 65 20 78 43 72 65 61 74 65 20 61 6e  h the xCreate an
ed40: 64 20 78 43 6f 6e 6e 65 63 74 20 70 6f 69 6e 74  d xConnect point
ed50: 65 72 73 20 6f 66 20 74 68 65 0d 0a 20 20 20 20  ers of the..    
ed60: 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f      /// sqlite3_
ed70: 6d 6f 64 75 6c 65 20 6f 62 6a 65 63 74 20 6d 61  module object ma
ed80: 79 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 73  y point to the s
ed90: 61 6d 65 20 66 75 6e 63 74 69 6f 6e 20 74 68 65  ame function the
eda0: 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20 20   virtual..      
edb0: 20 20 2f 2f 2f 20 74 61 62 6c 65 20 64 6f 65 73    /// table does
edc0: 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20 69 6e 69   not need to ini
edd0: 74 69 61 6c 69 7a 65 20 62 61 63 6b 69 6e 67 20  tialize backing 
ede0: 73 74 6f 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  store...        
edf0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
ee00: 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
ee10: 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e 0d 0a  am name="pDb">..
ee20: 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
ee30: 6e 61 74 69 76 65 20 64 61 74 61 62 61 73 65 20  native database 
ee40: 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c  connection handl
ee50: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
ee60: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
ee70: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
ee80: 65 3d 22 70 41 75 78 22 3e 0d 0a 20 20 20 20 20  e="pAux">..     
ee90: 20 20 20 2f 2f 2f 20 54 68 65 20 6f 72 69 67 69     /// The origi
eea0: 6e 61 6c 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  nal native point
eeb0: 65 72 20 76 61 6c 75 65 20 74 68 61 74 20 77 61  er value that wa
eec0: 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  s provided to th
eed0: 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73  e..        /// s
eee0: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f  qlite3_create_mo
eef0: 64 75 6c 65 28 29 2c 20 73 71 6c 69 74 65 33 5f  dule(), sqlite3_
ef00: 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76 32  create_module_v2
ef10: 28 29 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  () or..        /
ef20: 2f 2f 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74  // sqlite3_creat
ef30: 65 5f 64 69 73 70 6f 73 61 62 6c 65 5f 6d 6f 64  e_disposable_mod
ef40: 75 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 73 2e  ule() functions.
ef50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
ef60: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
ef70: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
ef80: 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20 20  "argc">..       
ef90: 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20   /// The number 
efa0: 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f  of arguments fro
efb0: 6d 20 74 68 65 20 43 52 45 41 54 45 20 56 49 52  m the CREATE VIR
efc0: 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65  TUAL TABLE state
efd0: 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ment...        /
efe0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
eff0: 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
f000: 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20  name="argv">..  
f010: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72        /// The ar
f020: 72 61 79 20 6f 66 20 73 74 72 69 6e 67 20 61 72  ray of string ar
f030: 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 74 68 65  guments from the
f040: 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20   CREATE VIRTUAL 
f050: 54 41 42 4c 45 0d 0a 20 20 20 20 20 20 20 20 2f  TABLE..        /
f060: 2f 2f 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20  // statement... 
f070: 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
f080: 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
f090: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
f0a0: 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
f0b0: 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
f0c0: 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
f0d0: 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
f0e0: 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65   to point to the
f0f0: 20 6e 65 77 6c 79 0d 0a 20 20 20 20 20 20 20 20   newly..        
f100: 2f 2f 2f 20 63 72 65 61 74 65 64 20 6e 61 74 69  /// created nati
f110: 76 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  ve sqlite3_vtab 
f120: 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72  derived structur
f130: 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
f140: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
f150: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
f160: 65 3d 22 70 45 72 72 6f 72 22 3e 0d 0a 20 20 20  e="pError">..   
f170: 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61       /// Upon fa
f180: 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72 61  ilure, this para
f190: 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f  meter must be mo
f1a0: 64 69 66 69 65 64 20 74 6f 20 70 6f 69 6e 74 20  dified to point 
f1b0: 74 6f 20 74 68 65 20 65 72 72 6f 72 0d 0a 20 20  to the error..  
f1c0: 20 20 20 20 20 20 2f 2f 2f 20 6d 65 73 73 61 67        /// messag
f1d0: 65 2c 20 77 69 74 68 20 74 68 65 20 75 6e 64 65  e, with the unde
f1e0: 72 6c 79 69 6e 67 20 6d 65 6d 6f 72 79 20 68 61  rlying memory ha
f1f0: 76 69 6e 67 20 62 65 65 6e 20 6f 62 74 61 69 6e  ving been obtain
f200: 65 64 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  ed from the..   
f210: 20 20 20 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33       /// sqlite3
f220: 5f 6d 61 6c 6c 6f 63 28 29 20 66 75 6e 63 74 69  _malloc() functi
f230: 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
f240: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
f250: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
f260: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
f270: 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
f280: 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
f290: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
f2a0: 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
f2b0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
f2c0: 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20  onnect(..       
f2d0: 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 62 2c       IntPtr pDb,
f2e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
f2f0: 74 50 74 72 20 70 41 75 78 2c 0d 0a 20 20 20 20  tPtr pAux,..    
f300: 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63          int argc
f310: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ,..            I
f320: 6e 74 50 74 72 5b 5d 20 61 72 67 76 2c 0d 0a 20  ntPtr[] argv,.. 
f330: 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49             ref I
f340: 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
f350: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49 6e            ref In
f360: 74 50 74 72 20 70 45 72 72 6f 72 0d 0a 20 20 20  tPtr pError..   
f370: 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
f380: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
f390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
f3d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
f3e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
f3f0: 20 2f 2f 2f 20 53 51 4c 69 74 65 20 75 73 65 73   /// SQLite uses
f400: 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 20   the xBestIndex 
f410: 6d 65 74 68 6f 64 20 6f 66 20 61 20 76 69 72 74  method of a virt
f420: 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65  ual table module
f430: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
f440: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 62   determine the b
f450: 65 73 74 20 77 61 79 20 74 6f 20 61 63 63 65 73  est way to acces
f460: 73 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  s the virtual ta
f470: 62 6c 65 2e 20 54 68 65 20 78 42 65 73 74 49 6e  ble. The xBestIn
f480: 64 65 78 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  dex..        ///
f490: 20 6d 65 74 68 6f 64 20 68 61 73 20 61 20 70 72   method has a pr
f4a0: 6f 74 6f 74 79 70 65 20 6c 69 6b 65 20 74 68 69  ototype like thi
f4b0: 73 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d  s:..        ///.
f4c0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 69 6e  .        ///  in
f4d0: 74 20 28 2a 78 42 65 73 74 49 6e 64 65 78 29 28  t (*xBestIndex)(
f4e0: 73 71 6c 69 74 65 33 5f 76 74 61 62 20 2a 70 56  sqlite3_vtab *pV
f4f0: 54 61 62 2c 20 73 71 6c 69 74 65 33 5f 69 6e 64  Tab, sqlite3_ind
f500: 65 78 5f 69 6e 66 6f 2a 29 3b 0d 0a 20 20 20 20  ex_info*);..    
f510: 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20      ///..       
f520: 20 2f 2f 2f 20 54 68 65 20 53 51 4c 69 74 65 20   /// The SQLite 
f530: 63 6f 72 65 20 63 6f 6d 6d 75 6e 69 63 61 74 65  core communicate
f540: 73 20 77 69 74 68 20 74 68 65 20 78 42 65 73 74  s with the xBest
f550: 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 62 79 20  Index method by 
f560: 66 69 6c 6c 69 6e 67 0d 0a 20 20 20 20 20 20 20  filling..       
f570: 20 2f 2f 2f 20 69 6e 20 63 65 72 74 61 69 6e 20   /// in certain 
f580: 66 69 65 6c 64 73 20 6f 66 20 74 68 65 20 73 71  fields of the sq
f590: 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
f5a0: 20 73 74 72 75 63 74 75 72 65 20 61 6e 64 20 70   structure and p
f5b0: 61 73 73 69 6e 67 20 61 0d 0a 20 20 20 20 20 20  assing a..      
f5c0: 20 20 2f 2f 2f 20 70 6f 69 6e 74 65 72 20 74 6f    /// pointer to
f5d0: 20 74 68 61 74 20 73 74 72 75 63 74 75 72 65 20   that structure 
f5e0: 69 6e 74 6f 20 78 42 65 73 74 49 6e 64 65 78 20  into xBestIndex 
f5f0: 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20 70 61  as the second pa
f600: 72 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20 20 20  rameter...      
f610: 20 20 2f 2f 2f 20 54 68 65 20 78 42 65 73 74 49    /// The xBestI
f620: 6e 64 65 78 20 6d 65 74 68 6f 64 20 66 69 6c 6c  ndex method fill
f630: 73 20 6f 75 74 20 6f 74 68 65 72 20 66 69 65 6c  s out other fiel
f640: 64 73 20 6f 66 20 74 68 69 73 20 73 74 72 75 63  ds of this struc
f650: 74 75 72 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ture..        //
f660: 2f 20 77 68 69 63 68 20 66 6f 72 6d 73 20 74 68  / which forms th
f670: 65 20 72 65 70 6c 79 2e 20 54 68 65 20 73 71 6c  e reply. The sql
f680: 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20  ite3_index_info 
f690: 73 74 72 75 63 74 75 72 65 20 6c 6f 6f 6b 73 20  structure looks 
f6a0: 6c 69 6b 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  like..        //
f6b0: 2f 20 74 68 69 73 3a 0d 0a 20 20 20 20 20 20 20  / this:..       
f6c0: 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f   ///..        //
f6d0: 2f 20 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  /  struct sqlite
f6e0: 33 5f 69 6e 64 65 78 5f 69 6e 66 6f 20 7b 0d 0a  3_index_info {..
f6f0: 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 2f          ///    /
f700: 2a 20 49 6e 70 75 74 73 20 2a 2f 0d 0a 20 20 20  * Inputs */..   
f710: 20 20 20 20 20 2f 2f 2f 20 20 20 20 63 6f 6e 73       ///    cons
f720: 74 20 69 6e 74 20 6e 43 6f 6e 73 74 72 61 69 6e  t int nConstrain
f730: 74 3b 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f  t;   /* Number o
f740: 66 20 65 6e 74 72 69 65 73 20 69 6e 20 61 43 6f  f entries in aCo
f750: 6e 73 74 72 61 69 6e 74 20 2a 2f 0d 0a 20 20 20  nstraint */..   
f760: 20 20 20 20 20 2f 2f 2f 20 20 20 20 63 6f 6e 73       ///    cons
f770: 74 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  t struct sqlite3
f780: 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e  _index_constrain
f790: 74 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t {..        ///
f7a0: 20 20 20 20 20 20 20 69 6e 74 20 69 43 6f 6c 75         int iColu
f7b0: 6d 6e 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20  mn;          /* 
f7c0: 43 6f 6c 75 6d 6e 20 6f 6e 20 6c 65 66 74 2d 68  Column on left-h
f7d0: 61 6e 64 20 73 69 64 65 20 6f 66 0d 0a 20 20 20  and side of..   
f7e0: 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
f7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f800: 20 20 20 20 20 20 2a 20 63 6f 6e 73 74 72 61 69        * constrai
f810: 6e 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  nt */..        /
f820: 2f 2f 20 20 20 20 20 20 20 75 6e 73 69 67 6e 65  //       unsigne
f830: 64 20 63 68 61 72 20 6f 70 3b 20 20 20 20 20 2f  d char op;     /
f840: 2a 20 43 6f 6e 73 74 72 61 69 6e 74 20 6f 70 65  * Constraint ope
f850: 72 61 74 6f 72 20 2a 2f 0d 0a 20 20 20 20 20 20  rator */..      
f860: 20 20 2f 2f 2f 20 20 20 20 20 20 20 75 6e 73 69    ///       unsi
f870: 67 6e 65 64 20 63 68 61 72 20 75 73 61 62 6c 65  gned char usable
f880: 3b 20 2f 2a 20 54 72 75 65 20 69 66 20 74 68 69  ; /* True if thi
f890: 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 69 73 20  s constraint is 
f8a0: 75 73 61 62 6c 65 20 2a 2f 0d 0a 20 20 20 20 20  usable */..     
f8b0: 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 69 6e 74     ///       int
f8c0: 20 69 54 65 72 6d 4f 66 66 73 65 74 3b 20 20 20   iTermOffset;   
f8d0: 20 20 20 2f 2a 20 55 73 65 64 20 69 6e 74 65 72     /* Used inter
f8e0: 6e 61 6c 6c 79 20 2d 20 78 42 65 73 74 49 6e 64  nally - xBestInd
f8f0: 65 78 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20  ex should..     
f900: 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 20     ///          
f910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f920: 20 20 20 20 2a 20 69 67 6e 6f 72 65 20 2a 2f 0d      * ignore */.
f930: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
f940: 7d 20 2a 63 6f 6e 73 74 20 61 43 6f 6e 73 74 72  } *const aConstr
f950: 61 69 6e 74 3b 20 20 20 20 2f 2a 20 54 61 62 6c  aint;    /* Tabl
f960: 65 20 6f 66 20 57 48 45 52 45 20 63 6c 61 75 73  e of WHERE claus
f970: 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 2a 2f  e constraints */
f980: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
f990: 20 63 6f 6e 73 74 20 69 6e 74 20 6e 4f 72 64 65   const int nOrde
f9a0: 72 42 79 3b 20 20 20 20 20 20 2f 2a 20 4e 75 6d  rBy;      /* Num
f9b0: 62 65 72 20 6f 66 20 74 65 72 6d 73 20 69 6e 20  ber of terms in 
f9c0: 74 68 65 20 4f 52 44 45 52 20 42 59 0d 0a 20 20  the ORDER BY..  
f9d0: 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
f9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f9f0: 20 20 20 20 20 20 20 2a 20 63 6c 61 75 73 65 20         * clause 
fa00: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  */..        /// 
fa10: 20 20 20 63 6f 6e 73 74 20 73 74 72 75 63 74 20     const struct 
fa20: 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f 72  sqlite3_index_or
fa30: 64 65 72 62 79 20 7b 0d 0a 20 20 20 20 20 20 20  derby {..       
fa40: 20 2f 2f 2f 20 20 20 20 20 20 20 69 6e 74 20 69   ///       int i
fa50: 43 6f 6c 75 6d 6e 3b 20 20 20 20 20 20 20 20 20  Column;         
fa60: 20 2f 2a 20 43 6f 6c 75 6d 6e 20 6e 75 6d 62 65   /* Column numbe
fa70: 72 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  r */..        //
fa80: 2f 20 20 20 20 20 20 20 75 6e 73 69 67 6e 65 64  /       unsigned
fa90: 20 63 68 61 72 20 64 65 73 63 3b 20 20 20 2f 2a   char desc;   /*
faa0: 20 54 72 75 65 20 66 6f 72 20 44 45 53 43 2e 20   True for DESC. 
fab0: 20 46 61 6c 73 65 20 66 6f 72 20 41 53 43 2e 20   False for ASC. 
fac0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  */..        /// 
fad0: 20 20 20 7d 20 2a 63 6f 6e 73 74 20 61 4f 72 64     } *const aOrd
fae0: 65 72 42 79 3b 20 20 20 20 20 20 20 2f 2a 20 54  erBy;       /* T
faf0: 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75  he ORDER BY clau
fb00: 73 65 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f  se */..        /
fb10: 2f 2f 20 20 20 20 2f 2a 20 4f 75 74 70 75 74 73  //    /* Outputs
fb20: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   */..        ///
fb30: 20 20 20 20 73 74 72 75 63 74 20 73 71 6c 69 74      struct sqlit
fb40: 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
fb50: 69 6e 74 5f 75 73 61 67 65 20 7b 0d 0a 20 20 20  int_usage {..   
fb60: 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 69 6e       ///      in
fb70: 74 20 61 72 67 76 49 6e 64 65 78 3b 20 20 20 20  t argvIndex;    
fb80: 20 20 20 20 20 2f 2a 20 69 66 20 67 72 65 61 74       /* if great
fb90: 65 72 20 74 68 61 6e 20 7a 65 72 6f 2c 20 63 6f  er than zero, co
fba0: 6e 73 74 72 61 69 6e 74 20 69 73 0d 0a 20 20 20  nstraint is..   
fbb0: 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
fbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fbd0: 20 20 20 20 20 20 2a 20 70 61 72 74 20 6f 66 20        * part of 
fbe0: 61 72 67 76 20 74 6f 20 78 46 69 6c 74 65 72 20  argv to xFilter 
fbf0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  */..        /// 
fc00: 20 20 20 20 20 75 6e 73 69 67 6e 65 64 20 63 68       unsigned ch
fc10: 61 72 20 6f 6d 69 74 3b 20 20 20 20 2f 2a 20 44  ar omit;    /* D
fc20: 6f 20 6e 6f 74 20 63 6f 64 65 20 61 20 74 65 73  o not code a tes
fc30: 74 20 66 6f 72 20 74 68 69 73 0d 0a 20 20 20 20  t for this..    
fc40: 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20 20      ///         
fc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc60: 20 20 20 20 20 2a 20 63 6f 6e 73 74 72 61 69 6e       * constrain
fc70: 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f  t */..        //
fc80: 2f 20 20 20 20 7d 20 2a 63 6f 6e 73 74 20 61 43  /    } *const aC
fc90: 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 3b 0d  onstraintUsage;.
fca0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
fcb0: 69 6e 74 20 69 64 78 4e 75 6d 3b 20 20 20 20 20  int idxNum;     
fcc0: 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62           /* Numb
fcd0: 65 72 20 75 73 65 64 20 74 6f 20 69 64 65 6e 74  er used to ident
fce0: 69 66 79 20 74 68 65 20 69 6e 64 65 78 20 2a 2f  ify the index */
fcf0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
fd00: 20 63 68 61 72 20 2a 69 64 78 53 74 72 3b 20 20   char *idxStr;  
fd10: 20 20 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72            /* Str
fd20: 69 6e 67 2c 20 70 6f 73 73 69 62 6c 79 20 6f 62  ing, possibly ob
fd30: 74 61 69 6e 65 64 20 66 72 6f 6d 0d 0a 20 20 20  tained from..   
fd40: 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
fd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fd60: 20 20 20 20 20 20 2a 20 73 71 6c 69 74 65 33 5f        * sqlite3_
fd70: 6d 61 6c 6c 6f 63 28 29 20 2a 2f 0d 0a 20 20 20  malloc() */..   
fd80: 20 20 20 20 20 2f 2f 2f 20 20 20 20 69 6e 74 20       ///    int 
fd90: 6e 65 65 64 54 6f 46 72 65 65 49 64 78 53 74 72  needToFreeIdxStr
fda0: 3b 20 20 20 20 2f 2a 20 46 72 65 65 20 69 64 78  ;    /* Free idx
fdb0: 53 74 72 20 75 73 69 6e 67 20 73 71 6c 69 74 65  Str using sqlite
fdc0: 33 5f 66 72 65 65 28 29 20 69 66 0d 0a 20 20 20  3_free() if..   
fdd0: 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
fde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fdf0: 20 20 20 20 20 20 2a 20 74 72 75 65 20 2a 2f 0d        * true */.
fe00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
fe10: 69 6e 74 20 6f 72 64 65 72 42 79 43 6f 6e 73 75  int orderByConsu
fe20: 6d 65 64 3b 20 20 20 20 20 2f 2a 20 54 72 75 65  med;     /* True
fe30: 20 69 66 20 6f 75 74 70 75 74 20 69 73 20 61 6c   if output is al
fe40: 72 65 61 64 79 20 6f 72 64 65 72 65 64 20 2a 2f  ready ordered */
fe50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
fe60: 20 64 6f 75 62 6c 65 20 65 73 74 69 6d 61 74 65   double estimate
fe70: 64 43 6f 73 74 3b 20 20 20 20 2f 2a 20 45 73 74  dCost;    /* Est
fe80: 69 6d 61 74 65 64 20 63 6f 73 74 20 6f 66 20 75  imated cost of u
fe90: 73 69 6e 67 20 74 68 69 73 20 69 6e 64 65 78 20  sing this index 
fea0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  */..        /// 
feb0: 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   };..        ///
fec0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 6e  ..        /// In
fed0: 20 61 64 64 69 74 69 6f 6e 2c 20 74 68 65 72 65   addition, there
fee0: 20 61 72 65 20 73 6f 6d 65 20 64 65 66 69 6e 65   are some define
fef0: 64 20 63 6f 6e 73 74 61 6e 74 73 3a 0d 0a 20 20  d constants:..  
ff00: 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20        ///..     
ff10: 20 20 20 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20     ///  #define 
ff20: 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e  SQLITE_INDEX_CON
ff30: 53 54 52 41 49 4e 54 5f 45 51 20 20 20 20 32 0d  STRAINT_EQ    2.
ff40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 23 64  .        ///  #d
ff50: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 44  efine SQLITE_IND
ff60: 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 47 54  EX_CONSTRAINT_GT
ff70: 20 20 20 20 34 0d 0a 20 20 20 20 20 20 20 20 2f      4..        /
ff80: 2f 2f 20 20 23 64 65 66 69 6e 65 20 53 51 4c 49  //  #define SQLI
ff90: 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53 54 52 41  TE_INDEX_CONSTRA
ffa0: 49 4e 54 5f 4c 45 20 20 20 20 38 0d 0a 20 20 20  INT_LE    8..   
ffb0: 20 20 20 20 20 2f 2f 2f 20 20 23 64 65 66 69 6e       ///  #defin
ffc0: 65 20 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43  e SQLITE_INDEX_C
ffd0: 4f 4e 53 54 52 41 49 4e 54 5f 4c 54 20 20 20 20  ONSTRAINT_LT    
ffe0: 31 36 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  16..        /// 
fff0: 20 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f   #define SQLITE_
10000 49 4e 44 45 58 5f 43 4f 4e 53 54 52 41 49 4e 54  INDEX_CONSTRAINT
10010 5f 47 45 20 20 20 20 33 32 0d 0a 20 20 20 20 20  _GE    32..     
10020 20 20 20 2f 2f 2f 20 20 23 64 65 66 69 6e 65 20     ///  #define 
10030 53 51 4c 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e  SQLITE_INDEX_CON
10040 53 54 52 41 49 4e 54 5f 4d 41 54 43 48 20 36 34  STRAINT_MATCH 64
10050 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20  ..        ///.. 
10060 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 53         /// The S
10070 51 4c 69 74 65 20 63 6f 72 65 20 63 61 6c 6c 73  QLite core calls
10080 20 74 68 65 20 78 42 65 73 74 49 6e 64 65 78 20   the xBestIndex 
10090 6d 65 74 68 6f 64 20 77 68 65 6e 20 69 74 20 69  method when it i
100a0 73 20 63 6f 6d 70 69 6c 69 6e 67 20 61 0d 0a 20  s compiling a.. 
100b0 20 20 20 20 20 20 20 2f 2f 2f 20 71 75 65 72 79         /// query
100c0 20 74 68 61 74 20 69 6e 76 6f 6c 76 65 73 20 61   that involves a
100d0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20   virtual table. 
100e0 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20  In other words, 
100f0 53 51 4c 69 74 65 20 63 61 6c 6c 73 0d 0a 20 20  SQLite calls..  
10100 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 6d        /// this m
10110 65 74 68 6f 64 20 77 68 65 6e 20 69 74 20 69 73  ethod when it is
10120 20 72 75 6e 6e 69 6e 67 20 73 71 6c 69 74 65 33   running sqlite3
10130 5f 70 72 65 70 61 72 65 28 29 20 6f 72 20 74 68  _prepare() or th
10140 65 20 65 71 75 69 76 61 6c 65 6e 74 2e 0d 0a 20  e equivalent... 
10150 20 20 20 20 20 20 20 2f 2f 2f 20 42 79 20 63 61         /// By ca
10160 6c 6c 69 6e 67 20 74 68 69 73 20 6d 65 74 68 6f  lling this metho
10170 64 2c 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  d, the SQLite co
10180 72 65 20 69 73 20 73 61 79 69 6e 67 20 74 6f 20  re is saying to 
10190 74 68 65 20 76 69 72 74 75 61 6c 0d 0a 20 20 20  the virtual..   
101a0 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 74       /// table t
101b0 68 61 74 20 69 74 20 6e 65 65 64 73 20 74 6f 20  hat it needs to 
101c0 61 63 63 65 73 73 20 73 6f 6d 65 20 73 75 62 73  access some subs
101d0 65 74 20 6f 66 20 74 68 65 20 72 6f 77 73 20 69  et of the rows i
101e0 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
101f0 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  // virtual table
10200 20 61 6e 64 20 69 74 20 77 61 6e 74 73 20 74 6f   and it wants to
10210 20 6b 6e 6f 77 20 74 68 65 20 6d 6f 73 74 20 65   know the most e
10220 66 66 69 63 69 65 6e 74 20 77 61 79 20 74 6f 20  fficient way to 
10230 64 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  do..        /// 
10240 74 68 61 74 20 61 63 63 65 73 73 2e 20 54 68 65  that access. The
10250 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68   xBestIndex meth
10260 6f 64 20 72 65 70 6c 69 65 73 20 77 69 74 68 20  od replies with 
10270 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 68 61 74  information that
10280 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
10290 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 63 61  e SQLite core ca
102a0 6e 20 74 68 65 6e 20 75 73 65 20 74 6f 20 63 6f  n then use to co
102b0 6e 64 75 63 74 20 61 6e 20 65 66 66 69 63 69 65  nduct an efficie
102c0 6e 74 20 73 65 61 72 63 68 20 6f 66 20 74 68 65  nt search of the
102d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69  ..        /// vi
102e0 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
102f0 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20        ///..     
10300 20 20 20 2f 2f 2f 20 57 68 69 6c 65 20 63 6f 6d     /// While com
10310 70 69 6c 69 6e 67 20 61 20 73 69 6e 67 6c 65 20  piling a single 
10320 53 51 4c 20 71 75 65 72 79 2c 20 74 68 65 20 53  SQL query, the S
10330 51 4c 69 74 65 20 63 6f 72 65 20 6d 69 67 68 74  QLite core might
10340 20 63 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   call..        /
10350 2f 2f 20 78 42 65 73 74 49 6e 64 65 78 20 6d 75  // xBestIndex mu
10360 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 77 69 74  ltiple times wit
10370 68 20 64 69 66 66 65 72 65 6e 74 20 73 65 74 74  h different sett
10380 69 6e 67 73 20 69 6e 0d 0a 20 20 20 20 20 20 20  ings in..       
10390 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64   /// sqlite3_ind
103a0 65 78 5f 69 6e 66 6f 2e 20 54 68 65 20 53 51 4c  ex_info. The SQL
103b0 69 74 65 20 63 6f 72 65 20 77 69 6c 6c 20 74 68  ite core will th
103c0 65 6e 20 73 65 6c 65 63 74 20 74 68 65 0d 0a 20  en select the.. 
103d0 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6d 62 69         /// combi
103e0 6e 61 74 69 6f 6e 20 74 68 61 74 20 61 70 70 65  nation that appe
103f0 61 72 73 20 74 6f 20 67 69 76 65 20 74 68 65 20  ars to give the 
10400 62 65 73 74 20 70 65 72 66 6f 72 6d 61 6e 63 65  best performance
10410 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a  ...        ///..
10420 20 20 20 20 20 20 20 20 2f 2f 2f 20 42 65 66 6f          /// Befo
10430 72 65 20 63 61 6c 6c 69 6e 67 20 74 68 69 73 20  re calling this 
10440 6d 65 74 68 6f 64 2c 20 74 68 65 20 53 51 4c 69  method, the SQLi
10450 74 65 20 63 6f 72 65 20 69 6e 69 74 69 61 6c 69  te core initiali
10460 7a 65 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 0d  zes an instance.
10470 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20  .        /// of 
10480 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  the sqlite3_inde
10490 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65  x_info structure
104a0 20 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f   with informatio
104b0 6e 20 61 62 6f 75 74 20 74 68 65 0d 0a 20 20 20  n about the..   
104c0 20 20 20 20 20 2f 2f 2f 20 71 75 65 72 79 20 74       /// query t
104d0 68 61 74 20 69 74 20 69 73 20 63 75 72 72 65 6e  hat it is curren
104e0 74 6c 79 20 74 72 79 69 6e 67 20 74 6f 20 70 72  tly trying to pr
104f0 6f 63 65 73 73 2e 20 54 68 69 73 20 69 6e 66 6f  ocess. This info
10500 72 6d 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20  rmation..       
10510 20 2f 2f 2f 20 64 65 72 69 76 65 73 20 6d 61 69   /// derives mai
10520 6e 6c 79 20 66 72 6f 6d 20 74 68 65 20 57 48 45  nly from the WHE
10530 52 45 20 63 6c 61 75 73 65 20 61 6e 64 20 4f 52  RE clause and OR
10540 44 45 52 20 42 59 20 6f 72 20 47 52 4f 55 50 20  DER BY or GROUP 
10550 42 59 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  BY..        /// 
10560 63 6c 61 75 73 65 73 20 6f 66 20 74 68 65 20 71  clauses of the q
10570 75 65 72 79 2c 20 62 75 74 20 61 6c 73 6f 20 66  uery, but also f
10580 72 6f 6d 20 61 6e 79 20 4f 4e 20 6f 72 20 55 53  rom any ON or US
10590 49 4e 47 20 63 6c 61 75 73 65 73 20 69 66 20 74  ING clauses if t
105a0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
105b0 71 75 65 72 79 20 69 73 20 61 20 6a 6f 69 6e 2e  query is a join.
105c0 20 54 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e   The information
105d0 20 74 68 61 74 20 74 68 65 20 53 51 4c 69 74 65   that the SQLite
105e0 20 63 6f 72 65 20 70 72 6f 76 69 64 65 73 20 74   core provides t
105f0 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  o..        /// t
10600 68 65 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65  he xBestIndex me
10610 74 68 6f 64 20 69 73 20 68 65 6c 64 20 69 6e 20  thod is held in 
10620 74 68 65 20 70 61 72 74 20 6f 66 20 74 68 65 20  the part of the 
10630 73 74 72 75 63 74 75 72 65 20 74 68 61 74 20 69  structure that i
10640 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d  s..        /// m
10650 61 72 6b 65 64 20 61 73 20 22 49 6e 70 75 74 73  arked as "Inputs
10660 22 2e 20 54 68 65 20 22 4f 75 74 70 75 74 73 22  ". The "Outputs"
10670 20 73 65 63 74 69 6f 6e 20 69 73 20 69 6e 69 74   section is init
10680 69 61 6c 69 7a 65 64 20 74 6f 20 7a 65 72 6f 2e  ialized to zero.
10690 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20  ..        ///.. 
106a0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 69         /// The i
106b0 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 6e 20 74 68  nformation in th
106c0 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  e sqlite3_index_
106d0 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 20 69  info structure i
106e0 73 20 65 70 68 65 6d 65 72 61 6c 0d 0a 20 20 20  s ephemeral..   
106f0 20 20 20 20 20 2f 2f 2f 20 61 6e 64 20 6d 61 79       /// and may
10700 20 62 65 20 6f 76 65 72 77 72 69 74 74 65 6e 20   be overwritten 
10710 6f 72 20 64 65 61 6c 6c 6f 63 61 74 65 64 20 61  or deallocated a
10720 73 20 73 6f 6f 6e 20 61 73 20 74 68 65 20 78 42  s soon as the xB
10730 65 73 74 49 6e 64 65 78 0d 0a 20 20 20 20 20 20  estIndex..      
10740 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 72 65 74    /// method ret
10750 75 72 6e 73 2e 20 49 66 20 74 68 65 20 78 42 65  urns. If the xBe
10760 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 6e  stIndex method n
10770 65 65 64 73 20 74 6f 20 72 65 6d 65 6d 62 65 72  eeds to remember
10780 20 61 6e 79 20 70 61 72 74 0d 0a 20 20 20 20 20   any part..     
10790 20 20 20 2f 2f 2f 20 6f 66 20 74 68 65 20 73 71     /// of the sq
107a0 6c 69 74 65 33 5f 69 6e 64 65 78 5f 69 6e 66 6f  lite3_index_info
107b0 20 73 74 72 75 63 74 75 72 65 2c 20 69 74 20 73   structure, it s
107c0 68 6f 75 6c 64 20 6d 61 6b 65 20 61 20 63 6f 70  hould make a cop
107d0 79 2e 20 43 61 72 65 0d 0a 20 20 20 20 20 20 20  y. Care..       
107e0 20 2f 2f 2f 20 6d 75 73 74 20 62 65 20 74 61 6b   /// must be tak
107f0 65 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 63  e to store the c
10800 6f 70 79 20 69 6e 20 61 20 70 6c 61 63 65 20 77  opy in a place w
10810 68 65 72 65 20 69 74 20 77 69 6c 6c 20 62 65 0d  here it will be.
10820 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 61  .        /// dea
10830 6c 6c 6f 63 61 74 65 64 2c 20 73 75 63 68 20 61  llocated, such a
10840 73 20 69 6e 20 74 68 65 20 69 64 78 53 74 72 20  s in the idxStr 
10850 66 69 65 6c 64 20 77 69 74 68 20 6e 65 65 64 54  field with needT
10860 6f 46 72 65 65 49 64 78 53 74 72 20 73 65 74 0d  oFreeIdxStr set.
10870 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  .        /// to 
10880 31 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d  1...        ///.
10890 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 74  .        /// Not
108a0 65 20 74 68 61 74 20 78 42 65 73 74 49 6e 64 65  e that xBestInde
108b0 78 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65  x will always be
108c0 20 63 61 6c 6c 65 64 20 62 65 66 6f 72 65 20 78   called before x
108d0 46 69 6c 74 65 72 2c 20 73 69 6e 63 65 0d 0a 20  Filter, since.. 
108e0 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 69         /// the i
108f0 64 78 4e 75 6d 20 61 6e 64 20 69 64 78 53 74 72  dxNum and idxStr
10900 20 6f 75 74 70 75 74 73 20 66 72 6f 6d 20 78 42   outputs from xB
10910 65 73 74 49 6e 64 65 78 20 61 72 65 20 72 65 71  estIndex are req
10920 75 69 72 65 64 20 69 6e 70 75 74 73 0d 0a 20 20  uired inputs..  
10930 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 78 46 69        /// to xFi
10940 6c 74 65 72 2e 20 48 6f 77 65 76 65 72 2c 20 74  lter. However, t
10950 68 65 72 65 20 69 73 20 6e 6f 20 67 75 61 72 61  here is no guara
10960 6e 74 65 65 20 74 68 61 74 20 78 46 69 6c 74 65  ntee that xFilte
10970 72 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20  r will be..     
10980 20 20 20 2f 2f 2f 20 63 61 6c 6c 65 64 20 66 6f     /// called fo
10990 6c 6c 6f 77 69 6e 67 20 61 20 73 75 63 63 65 73  llowing a succes
109a0 73 66 75 6c 20 78 42 65 73 74 49 6e 64 65 78 2e  sful xBestIndex.
109b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20  ..        ///.. 
109c0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78         /// The x
109d0 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64  BestIndex method
109e0 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f 72   is required for
109f0 20 65 76 65 72 79 20 76 69 72 74 75 61 6c 20 74   every virtual t
10a00 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  able..        //
10a10 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  / implementation
10a20 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 0d  ...        /// .
10a30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 32 2e 33  .        /// 2.3
10a40 2e 31 20 49 6e 70 75 74 73 0d 0a 20 20 20 20 20  .1 Inputs..     
10a50 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20     ///..        
10a60 2f 2f 2f 20 54 68 65 20 6d 61 69 6e 20 74 68 69  /// The main thi
10a70 6e 67 20 74 68 61 74 20 74 68 65 20 53 51 4c 69  ng that the SQLi
10a80 74 65 20 63 6f 72 65 20 69 73 20 74 72 79 69 6e  te core is tryin
10a90 67 20 74 6f 20 63 6f 6d 6d 75 6e 69 63 61 74 65  g to communicate
10aa0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
10ab0 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62   /// virtual tab
10ac0 6c 65 20 69 73 20 74 68 65 20 63 6f 6e 73 74 72  le is the constr
10ad0 61 69 6e 74 73 20 74 68 61 74 20 61 72 65 20 61  aints that are a
10ae0 76 61 69 6c 61 62 6c 65 20 74 6f 20 6c 69 6d 69  vailable to limi
10af0 74 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  t the..        /
10b00 2f 2f 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  // number of row
10b10 73 20 74 68 61 74 20 6e 65 65 64 20 74 6f 20 62  s that need to b
10b20 65 20 73 65 61 72 63 68 65 64 2e 20 54 68 65 20  e searched. The 
10b30 61 43 6f 6e 73 74 72 61 69 6e 74 5b 5d 20 61 72  aConstraint[] ar
10b40 72 61 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ray..        ///
10b50 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 65 20 65 6e   contains one en
10b60 74 72 79 20 66 6f 72 20 65 61 63 68 20 63 6f 6e  try for each con
10b70 73 74 72 61 69 6e 74 2e 20 54 68 65 72 65 20 77  straint. There w
10b80 69 6c 6c 20 62 65 20 65 78 61 63 74 6c 79 0d 0a  ill be exactly..
10b90 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 43 6f 6e          /// nCon
10ba0 73 74 72 61 69 6e 74 20 65 6e 74 72 69 65 73 20  straint entries 
10bb0 69 6e 20 74 68 61 74 20 61 72 72 61 79 2e 0d 0a  in that array...
10bc0 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20          ///..   
10bd0 20 20 20 20 20 2f 2f 2f 20 45 61 63 68 20 63 6f       /// Each co
10be0 6e 73 74 72 61 69 6e 74 20 77 69 6c 6c 20 63 6f  nstraint will co
10bf0 72 72 65 73 70 6f 6e 64 20 74 6f 20 61 20 74 65  rrespond to a te
10c00 72 6d 20 69 6e 20 74 68 65 20 57 48 45 52 45 20  rm in the WHERE 
10c10 63 6c 61 75 73 65 20 6f 72 20 69 6e 0d 0a 20 20  clause or in..  
10c20 20 20 20 20 20 20 2f 2f 2f 20 61 20 55 53 49 4e        /// a USIN
10c30 47 20 6f 72 20 4f 4e 20 63 6c 61 75 73 65 20 74  G or ON clause t
10c40 68 61 74 20 69 73 20 6f 66 20 74 68 65 20 66 6f  hat is of the fo
10c50 72 6d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d  rm..        ///.
10c60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
10c70 20 63 6f 6c 75 6d 6e 20 4f 50 20 45 58 50 52 0d   column OP EXPR.
10c80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20  .        ///..  
10c90 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 72 65 20        /// Where 
10ca0 22 63 6f 6c 75 6d 6e 22 20 69 73 20 61 20 63 6f  "column" is a co
10cb0 6c 75 6d 6e 20 69 6e 20 74 68 65 20 76 69 72 74  lumn in the virt
10cc0 75 61 6c 20 74 61 62 6c 65 2c 20 4f 50 20 69 73  ual table, OP is
10cd0 20 61 6e 20 6f 70 65 72 61 74 6f 72 0d 0a 20 20   an operator..  
10ce0 20 20 20 20 20 20 2f 2f 2f 20 6c 69 6b 65 20 22        /// like "
10cf0 3d 22 20 6f 72 20 22 26 6c 74 3b 22 2c 20 61 6e  =" or "&lt;", an
10d00 64 20 45 58 50 52 20 69 73 20 61 6e 20 61 72 62  d EXPR is an arb
10d10 69 74 72 61 72 79 20 65 78 70 72 65 73 73 69 6f  itrary expressio
10d20 6e 2e 20 53 6f 2c 20 66 6f 72 0d 0a 20 20 20 20  n. So, for..    
10d30 20 20 20 20 2f 2f 2f 20 65 78 61 6d 70 6c 65 2c      /// example,
10d40 20 69 66 20 74 68 65 20 57 48 45 52 45 20 63 6c   if the WHERE cl
10d50 61 75 73 65 20 63 6f 6e 74 61 69 6e 65 64 20 61  ause contained a
10d60 20 74 65 72 6d 20 6c 69 6b 65 20 74 68 69 73 3a   term like this:
10d70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20  ..        ///.. 
10d80 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20         ///      
10d90 20 20 20 20 61 20 3d 20 35 0d 0a 20 20 20 20 20      a = 5..     
10da0 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20     ///..        
10db0 2f 2f 2f 20 54 68 65 6e 20 6f 6e 65 20 6f 66 20  /// Then one of 
10dc0 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  the constraints 
10dd0 77 6f 75 6c 64 20 62 65 20 6f 6e 20 74 68 65 20  would be on the 
10de0 22 61 22 20 63 6f 6c 75 6d 6e 20 77 69 74 68 0d  "a" column with.
10df0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f 70 65  .        /// ope
10e00 72 61 74 6f 72 20 22 3d 22 20 61 6e 64 20 61 6e  rator "=" and an
10e10 20 65 78 70 72 65 73 73 69 6f 6e 20 6f 66 20 22   expression of "
10e20 35 22 2e 20 43 6f 6e 73 74 72 61 69 6e 74 73 20  5". Constraints 
10e30 6e 65 65 64 20 6e 6f 74 20 68 61 76 65 20 61 0d  need not have a.
10e40 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 74  .        /// lit
10e50 65 72 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74  eral representat
10e60 69 6f 6e 20 6f 66 20 74 68 65 20 57 48 45 52 45  ion of the WHERE
10e70 20 63 6c 61 75 73 65 2e 20 54 68 65 20 71 75 65   clause. The que
10e80 72 79 20 6f 70 74 69 6d 69 7a 65 72 0d 0a 20 20  ry optimizer..  
10e90 20 20 20 20 20 20 2f 2f 2f 20 6d 69 67 68 74 20        /// might 
10ea0 6d 61 6b 65 20 74 72 61 6e 73 66 6f 72 6d 61 74  make transformat
10eb0 69 6f 6e 73 20 74 6f 20 74 68 65 20 57 48 45 52  ions to the WHER
10ec0 45 20 63 6c 61 75 73 65 20 69 6e 20 6f 72 64 65  E clause in orde
10ed0 72 20 74 6f 20 65 78 74 72 61 63 74 0d 0a 20 20  r to extract..  
10ee0 20 20 20 20 20 20 2f 2f 2f 20 61 73 20 6d 61 6e        /// as man
10ef0 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61 73  y constraints as
10f00 20 69 74 20 63 61 6e 2e 20 53 6f 2c 20 66 6f 72   it can. So, for
10f10 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 74 68 65   example, if the
10f20 20 57 48 45 52 45 20 63 6c 61 75 73 65 0d 0a 20   WHERE clause.. 
10f30 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61         /// conta
10f40 69 6e 65 64 20 73 6f 6d 65 74 68 69 6e 67 20 6c  ined something l
10f50 69 6b 65 20 74 68 69 73 3a 0d 0a 20 20 20 20 20  ike this:..     
10f60 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20     ///..        
10f70 2f 2f 2f 20 20 20 20 20 20 20 20 20 20 78 20 42  ///          x B
10f80 45 54 57 45 45 4e 20 31 30 20 41 4e 44 20 31 30  ETWEEN 10 AND 10
10f90 30 20 41 4e 44 20 39 39 39 26 67 74 3b 79 0d 0a  0 AND 999&gt;y..
10fa0 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20          ///..   
10fb0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 71 75 65       /// The que
10fc0 72 79 20 6f 70 74 69 6d 69 7a 65 72 20 6d 69 67  ry optimizer mig
10fd0 68 74 20 74 72 61 6e 73 6c 61 74 65 20 74 68 69  ht translate thi
10fe0 73 20 69 6e 74 6f 20 74 68 72 65 65 20 73 65 70  s into three sep
10ff0 61 72 61 74 65 0d 0a 20 20 20 20 20 20 20 20 2f  arate..        /
11000 2f 2f 20 63 6f 6e 73 74 72 61 69 6e 74 73 3a 0d  // constraints:.
11010 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20  .        ///..  
11020 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
11030 20 20 20 78 20 26 67 74 3b 3d 20 31 30 0d 0a 20     x &gt;= 10.. 
11040 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20         ///      
11050 20 20 20 20 78 20 26 6c 74 3b 3d 20 31 30 30 0d      x &lt;= 100.
11060 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
11070 20 20 20 20 20 20 79 20 26 6c 74 3b 20 39 39 39        y &lt; 999
11080 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20  ..        ///.. 
11090 20 20 20 20 20 20 20 2f 2f 2f 20 46 6f 72 20 65         /// For e
110a0 61 63 68 20 63 6f 6e 73 74 72 61 69 6e 74 2c 20  ach constraint, 
110b0 74 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b  the aConstraint[
110c0 5d 2e 69 43 6f 6c 75 6d 6e 20 66 69 65 6c 64 20  ].iColumn field 
110d0 69 6e 64 69 63 61 74 65 73 0d 0a 20 20 20 20 20  indicates..     
110e0 20 20 20 2f 2f 2f 20 77 68 69 63 68 20 63 6f 6c     /// which col
110f0 75 6d 6e 20 61 70 70 65 61 72 73 20 6f 6e 20 74  umn appears on t
11100 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64  he left-hand sid
11110 65 20 6f 66 20 74 68 65 20 63 6f 6e 73 74 72 61  e of the constra
11120 69 6e 74 2e 20 54 68 65 0d 0a 20 20 20 20 20 20  int. The..      
11130 20 20 2f 2f 2f 20 66 69 72 73 74 20 63 6f 6c 75    /// first colu
11140 6d 6e 20 6f 66 20 74 68 65 20 76 69 72 74 75 61  mn of the virtua
11150 6c 20 74 61 62 6c 65 20 69 73 20 63 6f 6c 75 6d  l table is colum
11160 6e 20 30 2e 20 54 68 65 20 72 6f 77 69 64 20 6f  n 0. The rowid o
11170 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  f the..        /
11180 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  // virtual table
11190 20 69 73 20 63 6f 6c 75 6d 6e 20 2d 31 2e 20 54   is column -1. T
111a0 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b 5d  he aConstraint[]
111b0 2e 6f 70 20 66 69 65 6c 64 20 69 6e 64 69 63 61  .op field indica
111c0 74 65 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  tes..        ///
111d0 20 77 68 69 63 68 20 6f 70 65 72 61 74 6f 72 20   which operator 
111e0 69 73 20 75 73 65 64 2e 20 54 68 65 20 53 51 4c  is used. The SQL
111f0 49 54 45 5f 49 4e 44 45 58 5f 43 4f 4e 53 54 52  ITE_INDEX_CONSTR
11200 41 49 4e 54 5f 2a 20 63 6f 6e 73 74 61 6e 74 73  AINT_* constants
11210 20 6d 61 70 0d 0a 20 20 20 20 20 20 20 20 2f 2f   map..        //
11220 2f 20 69 6e 74 65 67 65 72 20 63 6f 6e 73 74 61  / integer consta
11230 6e 74 73 20 69 6e 74 6f 20 6f 70 65 72 61 74 6f  nts into operato
11240 72 20 76 61 6c 75 65 73 2e 20 43 6f 6c 75 6d 6e  r values. Column
11250 73 20 6f 63 63 75 72 20 69 6e 20 74 68 65 20 6f  s occur in the o
11260 72 64 65 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rder..        //
11270 2f 20 74 68 65 79 20 77 65 72 65 20 64 65 66 69  / they were defi
11280 6e 65 64 20 62 79 20 74 68 65 20 63 61 6c 6c 20  ned by the call 
11290 74 6f 20 73 71 6c 69 74 65 33 5f 64 65 63 6c 61  to sqlite3_decla
112a0 72 65 5f 76 74 61 62 28 29 20 69 6e 20 74 68 65  re_vtab() in the
112b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43  ..        /// xC
112c0 72 65 61 74 65 20 6f 72 20 78 43 6f 6e 6e 65 63  reate or xConnec
112d0 74 20 6d 65 74 68 6f 64 2e 20 48 69 64 64 65 6e  t method. Hidden
112e0 20 63 6f 6c 75 6d 6e 73 20 61 72 65 20 63 6f 75   columns are cou
112f0 6e 74 65 64 20 77 68 65 6e 0d 0a 20 20 20 20 20  nted when..     
11300 20 20 20 2f 2f 2f 20 64 65 74 65 72 6d 69 6e 69     /// determini
11310 6e 67 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69 6e  ng the column in
11320 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dex...        //
11330 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  /..        /// T
11340 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b 5d  he aConstraint[]
11350 20 61 72 72 61 79 20 63 6f 6e 74 61 69 6e 73 20   array contains 
11360 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
11370 74 20 61 6c 6c 20 63 6f 6e 73 74 72 61 69 6e 74  t all constraint
11380 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  s..        /// t
11390 68 61 74 20 61 70 70 6c 79 20 74 6f 20 74 68 65  hat apply to the
113a0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20   virtual table. 
113b0 42 75 74 20 73 6f 6d 65 20 6f 66 20 74 68 65 20  But some of the 
113c0 63 6f 6e 73 74 72 61 69 6e 74 73 20 6d 69 67 68  constraints migh
113d0 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e  t..        /// n
113e0 6f 74 20 62 65 20 75 73 61 62 6c 65 20 62 65 63  ot be usable bec
113f0 61 75 73 65 20 6f 66 20 74 68 65 20 77 61 79 20  ause of the way 
11400 74 61 62 6c 65 73 20 61 72 65 20 6f 72 64 65 72  tables are order
11410 65 64 20 69 6e 20 61 20 6a 6f 69 6e 2e 20 54 68  ed in a join. Th
11420 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78  e..        /// x
11430 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f 64  BestIndex method
11440 20 6d 75 73 74 20 74 68 65 72 65 66 6f 72 65 20   must therefore 
11450 6f 6e 6c 79 20 63 6f 6e 73 69 64 65 72 20 63 6f  only consider co
11460 6e 73 74 72 61 69 6e 74 73 20 74 68 61 74 0d 0a  nstraints that..
11470 20 20 20 20 20 20 20 20 2f 2f 2f 20 68 61 76 65          /// have
11480 20 61 6e 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b   an aConstraint[
11490 5d 2e 75 73 61 62 6c 65 20 66 6c 61 67 20 77 68  ].usable flag wh
114a0 69 63 68 20 69 73 20 74 72 75 65 2e 0d 0a 20 20  ich is true...  
114b0 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20        ///..     
114c0 20 20 20 2f 2f 2f 20 49 6e 20 61 64 64 69 74 69     /// In additi
114d0 6f 6e 20 74 6f 20 57 48 45 52 45 20 63 6c 61 75  on to WHERE clau
114e0 73 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 2c 20  se constraints, 
114f0 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
11500 61 6c 73 6f 20 74 65 6c 6c 73 0d 0a 20 20 20 20  also tells..    
11510 20 20 20 20 2f 2f 2f 20 74 68 65 20 78 42 65 73      /// the xBes
11520 74 49 6e 64 65 78 20 6d 65 74 68 6f 64 20 61 62  tIndex method ab
11530 6f 75 74 20 74 68 65 20 4f 52 44 45 52 20 42 59  out the ORDER BY
11540 20 63 6c 61 75 73 65 2e 20 28 49 6e 20 61 6e 20   clause. (In an 
11550 61 67 67 72 65 67 61 74 65 0d 0a 20 20 20 20 20  aggregate..     
11560 20 20 20 2f 2f 2f 20 71 75 65 72 79 2c 20 74 68     /// query, th
11570 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6d 69  e SQLite core mi
11580 67 68 74 20 70 75 74 20 69 6e 20 47 52 4f 55 50  ght put in GROUP
11590 20 42 59 20 63 6c 61 75 73 65 20 69 6e 66 6f 72   BY clause infor
115a0 6d 61 74 69 6f 6e 20 69 6e 0d 0a 20 20 20 20 20  mation in..     
115b0 20 20 20 2f 2f 2f 20 70 6c 61 63 65 20 6f 66 20     /// place of 
115c0 74 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61  the ORDER BY cla
115d0 75 73 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c  use information,
115e0 20 62 75 74 20 74 68 69 73 20 66 61 63 74 20 73   but this fact s
115f0 68 6f 75 6c 64 20 6e 6f 74 0d 0a 20 20 20 20 20  hould not..     
11600 20 20 20 2f 2f 2f 20 6d 61 6b 65 20 61 6e 79 20     /// make any 
11610 64 69 66 66 65 72 65 6e 63 65 20 74 6f 20 74 68  difference to th
11620 65 20 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74  e xBestIndex met
11630 68 6f 64 2e 29 20 49 66 20 61 6c 6c 20 74 65 72  hod.) If all ter
11640 6d 73 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  ms of the..     
11650 20 20 20 2f 2f 2f 20 4f 52 44 45 52 20 42 59 20     /// ORDER BY 
11660 63 6c 61 75 73 65 20 61 72 65 20 63 6f 6c 75 6d  clause are colum
11670 6e 73 20 69 6e 20 74 68 65 20 76 69 72 74 75 61  ns in the virtua
11680 6c 20 74 61 62 6c 65 2c 20 74 68 65 6e 20 6e 4f  l table, then nO
11690 72 64 65 72 42 79 0d 0a 20 20 20 20 20 20 20 20  rderBy..        
116a0 2f 2f 2f 20 77 69 6c 6c 20 62 65 20 74 68 65 20  /// will be the 
116b0 6e 75 6d 62 65 72 20 6f 66 20 74 65 72 6d 73 20  number of terms 
116c0 69 6e 20 74 68 65 20 4f 52 44 45 52 20 42 59 20  in the ORDER BY 
116d0 63 6c 61 75 73 65 20 61 6e 64 20 74 68 65 0d 0a  clause and the..
116e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 4f 72 64          /// aOrd
116f0 65 72 42 79 5b 5d 20 61 72 72 61 79 20 77 69 6c  erBy[] array wil
11700 6c 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 63  l identify the c
11710 6f 6c 75 6d 6e 20 66 6f 72 20 65 61 63 68 20 74  olumn for each t
11720 65 72 6d 20 69 6e 20 74 68 65 0d 0a 20 20 20 20  erm in the..    
11730 20 20 20 20 2f 2f 2f 20 6f 72 64 65 72 20 62 79      /// order by
11740 20 63 6c 61 75 73 65 20 61 6e 64 20 77 68 65 74   clause and whet
11750 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 61 74 20  her or not that 
11760 63 6f 6c 75 6d 6e 20 69 73 20 41 53 43 20 6f 72  column is ASC or
11770 20 44 45 53 43 2e 0d 0a 20 20 20 20 20 20 20 20   DESC...        
11780 2f 2f 2f 20 0d 0a 20 20 20 20 20 20 20 20 2f 2f  /// ..        //
11790 2f 20 32 2e 33 2e 32 20 4f 75 74 70 75 74 73 0d  / 2.3.2 Outputs.
117a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20  .        ///..  
117b0 20 20 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20        /// Given 
117c0 61 6c 6c 20 6f 66 20 74 68 65 20 69 6e 66 6f 72  all of the infor
117d0 6d 61 74 69 6f 6e 20 61 62 6f 76 65 2c 20 74 68  mation above, th
117e0 65 20 6a 6f 62 20 6f 66 20 74 68 65 20 78 42 65  e job of the xBe
117f0 73 74 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20  stIndex..       
11800 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 69 74 20 74   /// method it t
11810 6f 20 66 69 67 75 72 65 20 6f 75 74 20 74 68 65  o figure out the
11820 20 62 65 73 74 20 77 61 79 20 74 6f 20 73 65 61   best way to sea
11830 72 63 68 20 74 68 65 20 76 69 72 74 75 61 6c 20  rch the virtual 
11840 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20  table...        
11850 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ///..        ///
11860 20 54 68 65 20 78 42 65 73 74 49 6e 64 65 78 20   The xBestIndex 
11870 6d 65 74 68 6f 64 20 66 69 6c 6c 73 20 74 68 65  method fills the
11880 20 69 64 78 4e 75 6d 20 61 6e 64 20 69 64 78 53   idxNum and idxS
11890 74 72 20 66 69 65 6c 64 73 20 77 69 74 68 0d 0a  tr fields with..
118a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 66 6f          /// info
118b0 72 6d 61 74 69 6f 6e 20 74 68 61 74 20 63 6f 6d  rmation that com
118c0 6d 75 6e 69 63 61 74 65 73 20 61 6e 20 69 6e 64  municates an ind
118d0 65 78 69 6e 67 20 73 74 72 61 74 65 67 79 20 74  exing strategy t
118e0 6f 20 74 68 65 20 78 46 69 6c 74 65 72 0d 0a 20  o the xFilter.. 
118f0 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68 6f         /// metho
11900 64 2e 20 54 68 65 20 69 6e 66 6f 72 6d 61 74 69  d. The informati
11910 6f 6e 20 69 6e 20 69 64 78 4e 75 6d 20 61 6e 64  on in idxNum and
11920 20 69 64 78 53 74 72 20 69 73 20 61 72 62 69 74   idxStr is arbit
11930 72 61 72 79 20 61 73 20 66 61 72 20 61 73 0d 0a  rary as far as..
11940 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
11950 53 51 4c 69 74 65 20 63 6f 72 65 20 69 73 20 63  SQLite core is c
11960 6f 6e 63 65 72 6e 65 64 2e 20 54 68 65 20 53 51  oncerned. The SQ
11970 4c 69 74 65 20 63 6f 72 65 20 6a 75 73 74 20 63  Lite core just c
11980 6f 70 69 65 73 20 74 68 65 0d 0a 20 20 20 20 20  opies the..     
11990 20 20 20 2f 2f 2f 20 69 6e 66 6f 72 6d 61 74 69     /// informati
119a0 6f 6e 20 74 68 72 6f 75 67 68 20 74 6f 20 74 68  on through to th
119b0 65 20 78 46 69 6c 74 65 72 20 6d 65 74 68 6f 64  e xFilter method
119c0 2e 20 41 6e 79 20 64 65 73 69 72 65 64 20 6d 65  . Any desired me
119d0 61 6e 69 6e 67 20 63 61 6e 0d 0a 20 20 20 20 20  aning can..     
119e0 20 20 20 2f 2f 2f 20 62 65 20 61 73 73 69 67 6e     /// be assign
119f0 65 64 20 74 6f 20 69 64 78 4e 75 6d 20 61 6e 64  ed to idxNum and
11a00 20 69 64 78 53 74 72 20 61 73 20 6c 6f 6e 67 20   idxStr as long 
11a10 61 73 20 78 42 65 73 74 49 6e 64 65 78 20 61 6e  as xBestIndex an
11a20 64 20 78 46 69 6c 74 65 72 0d 0a 20 20 20 20 20  d xFilter..     
11a30 20 20 20 2f 2f 2f 20 61 67 72 65 65 20 6f 6e 20     /// agree on 
11a40 77 68 61 74 20 74 68 61 74 20 6d 65 61 6e 69 6e  what that meanin
11a50 67 20 69 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f  g is...        /
11a60 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  //..        /// 
11a70 54 68 65 20 69 64 78 53 74 72 20 76 61 6c 75 65  The idxStr value
11a80 20 6d 61 79 20 62 65 20 61 20 73 74 72 69 6e 67   may be a string
11a90 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 61   obtained from a
11aa0 6e 20 53 51 4c 69 74 65 20 6d 65 6d 6f 72 79 0d  n SQLite memory.
11ab0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c  .        /// all
11ac0 6f 63 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e  ocation function
11ad0 20 73 75 63 68 20 61 73 20 73 71 6c 69 74 65 33   such as sqlite3
11ae0 5f 6d 70 72 69 6e 74 66 28 29 2e 20 49 66 20 74  _mprintf(). If t
11af0 68 69 73 20 69 73 20 74 68 65 20 63 61 73 65 2c  his is the case,
11b00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
11b10 65 6e 20 74 68 65 20 6e 65 65 64 54 6f 46 72 65  en the needToFre
11b20 65 49 64 78 53 74 72 20 66 6c 61 67 20 6d 75 73  eIdxStr flag mus
11b30 74 20 62 65 20 73 65 74 20 74 6f 20 74 72 75 65  t be set to true
11b40 20 73 6f 20 74 68 61 74 20 74 68 65 0d 0a 20 20   so that the..  
11b50 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65        /// SQLite
11b60 20 63 6f 72 65 20 77 69 6c 6c 20 6b 6e 6f 77 20   core will know 
11b70 74 6f 20 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  to call sqlite3_
11b80 66 72 65 65 28 29 20 6f 6e 20 74 68 61 74 20 73  free() on that s
11b90 74 72 69 6e 67 20 77 68 65 6e 20 69 74 0d 0a 20  tring when it.. 
11ba0 20 20 20 20 20 20 20 2f 2f 2f 20 68 61 73 20 66         /// has f
11bb0 69 6e 69 73 68 65 64 20 77 69 74 68 20 69 74 2c  inished with it,
11bc0 20 61 6e 64 20 74 68 75 73 20 61 76 6f 69 64 20   and thus avoid 
11bd0 61 20 6d 65 6d 6f 72 79 20 6c 65 61 6b 2e 0d 0a  a memory leak...
11be0 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20          ///..   
11bf0 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20       /// If the 
11c00 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69  virtual table wi
11c10 6c 6c 20 6f 75 74 70 75 74 20 72 6f 77 73 20 69  ll output rows i
11c20 6e 20 74 68 65 20 6f 72 64 65 72 20 73 70 65 63  n the order spec
11c30 69 66 69 65 64 20 62 79 20 74 68 65 0d 0a 20 20  ified by the..  
11c40 20 20 20 20 20 20 2f 2f 2f 20 4f 52 44 45 52 20        /// ORDER 
11c50 42 59 20 63 6c 61 75 73 65 2c 20 74 68 65 6e 20  BY clause, then 
11c60 74 68 65 20 6f 72 64 65 72 42 79 43 6f 6e 73 75  the orderByConsu
11c70 6d 65 64 20 66 6c 61 67 20 6d 61 79 20 62 65 20  med flag may be 
11c80 73 65 74 20 74 6f 20 74 72 75 65 2e 0d 0a 20 20  set to true...  
11c90 20 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65        /// If the
11ca0 20 6f 75 74 70 75 74 20 69 73 20 6e 6f 74 20 61   output is not a
11cb0 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69 6e 20  utomatically in 
11cc0 74 68 65 20 63 6f 72 72 65 63 74 20 6f 72 64 65  the correct orde
11cd0 72 20 74 68 65 6e 0d 0a 20 20 20 20 20 20 20 20  r then..        
11ce0 2f 2f 2f 20 6f 72 64 65 72 42 79 43 6f 6e 73 75  /// orderByConsu
11cf0 6d 65 64 20 6d 75 73 74 20 62 65 20 6c 65 66 74  med must be left
11d00 20 69 6e 20 69 74 73 20 64 65 66 61 75 6c 74 20   in its default 
11d10 66 61 6c 73 65 20 73 65 74 74 69 6e 67 2e 20 54  false setting. T
11d20 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  his..        ///
11d30 20 77 69 6c 6c 20 69 6e 64 69 63 61 74 65 20 74   will indicate t
11d40 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  o the SQLite cor
11d50 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 6e  e that it will n
11d60 65 65 64 20 74 6f 20 64 6f 20 61 20 73 65 70 61  eed to do a sepa
11d70 72 61 74 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rate..        //
11d80 2f 20 73 6f 72 74 69 6e 67 20 70 61 73 73 20 6f  / sorting pass o
11d90 76 65 72 20 74 68 65 20 64 61 74 61 20 61 66 74  ver the data aft
11da0 65 72 20 69 74 20 63 6f 6d 65 73 20 6f 75 74 20  er it comes out 
11db0 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  of the virtual t
11dc0 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
11dd0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  //..        /// 
11de0 54 68 65 20 65 73 74 69 6d 61 74 65 64 43 6f 73  The estimatedCos
11df0 74 20 66 69 65 6c 64 20 73 68 6f 75 6c 64 20 62  t field should b
11e00 65 20 73 65 74 20 74 6f 20 74 68 65 20 65 73 74  e set to the est
11e10 69 6d 61 74 65 64 20 6e 75 6d 62 65 72 20 6f 66  imated number of
11e20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 69  ..        /// di
11e30 73 6b 20 61 63 63 65 73 73 20 6f 70 65 72 61 74  sk access operat
11e40 69 6f 6e 73 20 72 65 71 75 69 72 65 64 20 74 6f  ions required to
11e50 20 65 78 65 63 75 74 65 20 74 68 69 73 20 71 75   execute this qu
11e60 65 72 79 20 61 67 61 69 6e 73 74 20 74 68 65 0d  ery against the.
11e70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
11e80 74 75 61 6c 20 74 61 62 6c 65 2e 20 54 68 65 20  tual table. The 
11e90 53 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c  SQLite core will
11ea0 20 6f 66 74 65 6e 20 63 61 6c 6c 20 78 42 65 73   often call xBes
11eb0 74 49 6e 64 65 78 20 6d 75 6c 74 69 70 6c 65 0d  tIndex multiple.
11ec0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 69 6d  .        /// tim
11ed0 65 73 20 77 69 74 68 20 64 69 66 66 65 72 65 6e  es with differen
11ee0 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 2c 20 6f  t constraints, o
11ef0 62 74 61 69 6e 20 6d 75 6c 74 69 70 6c 65 20 63  btain multiple c
11f00 6f 73 74 20 65 73 74 69 6d 61 74 65 73 2c 0d 0a  ost estimates,..
11f10 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 6e          /// then
11f20 20 63 68 6f 6f 73 65 20 74 68 65 20 71 75 65 72   choose the quer
11f30 79 20 70 6c 61 6e 20 74 68 61 74 20 67 69 76 65  y plan that give
11f40 73 20 74 68 65 20 6c 6f 77 65 73 74 20 65 73 74  s the lowest est
11f50 69 6d 61 74 65 2e 0d 0a 20 20 20 20 20 20 20 20  imate...        
11f60 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ///..        ///
11f70 20 54 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74   The aConstraint
11f80 55 73 61 67 65 5b 5d 20 61 72 72 61 79 20 63 6f  Usage[] array co
11f90 6e 74 61 69 6e 73 20 6f 6e 65 20 65 6c 65 6d 65  ntains one eleme
11fa0 6e 74 20 66 6f 72 20 65 61 63 68 20 6f 66 20 74  nt for each of t
11fb0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
11fc0 6e 43 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 73  nConstraint cons
11fd0 74 72 61 69 6e 74 73 20 69 6e 20 74 68 65 20 69  traints in the i
11fe0 6e 70 75 74 73 20 73 65 63 74 69 6f 6e 20 6f 66  nputs section of
11ff0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
12000 2f 20 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  / sqlite3_index_
12010 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65 2e 20  info structure. 
12020 54 68 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 55  The aConstraintU
12030 73 61 67 65 5b 5d 20 61 72 72 61 79 20 69 73 20  sage[] array is 
12040 75 73 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f  used..        //
12050 2f 20 62 79 20 78 42 65 73 74 49 6e 64 65 78 20  / by xBestIndex 
12060 74 6f 20 74 65 6c 6c 20 74 68 65 20 63 6f 72 65  to tell the core
12070 20 68 6f 77 20 69 74 20 69 73 20 75 73 69 6e 67   how it is using
12080 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 73   the constraints
12090 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a  ...        ///..
120a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
120b0 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f  xBestIndex metho
120c0 64 20 6d 61 79 20 73 65 74 20 61 43 6f 6e 73 74  d may set aConst
120d0 72 61 69 6e 74 55 73 61 67 65 5b 5d 2e 61 72 67  raintUsage[].arg
120e0 76 49 6e 64 65 78 20 65 6e 74 72 69 65 73 0d 0a  vIndex entries..
120f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20 76          /// to v
12100 61 6c 75 65 73 20 67 72 65 61 74 65 72 20 74 68  alues greater th
12110 61 6e 20 6f 6e 65 2e 20 45 78 61 63 74 6c 79 20  an one. Exactly 
12120 6f 6e 65 20 65 6e 74 72 79 20 73 68 6f 75 6c 64  one entry should
12130 20 62 65 20 73 65 74 20 74 6f 20 31 2c 0d 0a 20   be set to 1,.. 
12140 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e 6f 74 68         /// anoth
12150 65 72 20 74 6f 20 32 2c 20 61 6e 6f 74 68 65 72  er to 2, another
12160 20 74 6f 20 33 2c 20 61 6e 64 20 73 6f 20 66 6f   to 3, and so fo
12170 72 74 68 20 75 70 20 74 6f 20 61 73 20 6d 61 6e  rth up to as man
12180 79 20 6f 72 20 61 73 20 66 65 77 20 61 73 0d 0a  y or as few as..
12190 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
121a0 78 42 65 73 74 49 6e 64 65 78 20 6d 65 74 68 6f  xBestIndex metho
121b0 64 20 77 61 6e 74 73 2e 20 54 68 65 20 45 58 50  d wants. The EXP
121c0 52 20 6f 66 20 74 68 65 20 63 6f 72 72 65 73 70  R of the corresp
121d0 6f 6e 64 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  onding..        
121e0 2f 2f 2f 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  /// constraints 
121f0 77 69 6c 6c 20 74 68 65 6e 20 62 65 20 70 61 73  will then be pas
12200 73 65 64 20 69 6e 20 61 73 20 74 68 65 20 61 72  sed in as the ar
12210 67 76 5b 5d 20 70 61 72 61 6d 65 74 65 72 73 20  gv[] parameters 
12220 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  to..        /// 
12230 78 46 69 6c 74 65 72 2e 0d 0a 20 20 20 20 20 20  xFilter...      
12240 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f    ///..        /
12250 2f 2f 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20  // For example, 
12260 69 66 20 74 68 65 20 61 43 6f 6e 73 74 72 61 69  if the aConstrai
12270 6e 74 5b 33 5d 2e 61 72 67 76 49 6e 64 65 78 20  nt[3].argvIndex 
12280 69 73 20 73 65 74 20 74 6f 20 31 2c 20 74 68 65  is set to 1, the
12290 6e 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 20 20  n when..        
122a0 2f 2f 2f 20 78 46 69 6c 74 65 72 20 69 73 20 63  /// xFilter is c
122b0 61 6c 6c 65 64 2c 20 74 68 65 20 61 72 67 76 5b  alled, the argv[
122c0 30 5d 20 70 61 73 73 65 64 20 74 6f 20 78 46 69  0] passed to xFi
122d0 6c 74 65 72 20 77 69 6c 6c 20 68 61 76 65 20 74  lter will have t
122e0 68 65 20 45 58 50 52 0d 0a 20 20 20 20 20 20 20  he EXPR..       
122f0 20 2f 2f 2f 20 76 61 6c 75 65 20 6f 66 20 74 68   /// value of th
12300 65 20 61 43 6f 6e 73 74 72 61 69 6e 74 5b 33 5d  e aConstraint[3]
12310 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a 20 20   constraint...  
12320 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20        ///..     
12330 20 20 20 2f 2f 2f 20 42 79 20 64 65 66 61 75 6c     /// By defaul
12340 74 2c 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  t, the SQLite co
12350 72 65 20 64 6f 75 62 6c 65 20 63 68 65 63 6b 73  re double checks
12360 20 61 6c 6c 20 63 6f 6e 73 74 72 61 69 6e 74 73   all constraints
12370 20 6f 6e 20 65 61 63 68 0d 0a 20 20 20 20 20 20   on each..      
12380 20 20 2f 2f 2f 20 72 6f 77 20 6f 66 20 74 68 65    /// row of the
12390 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 74   virtual table t
123a0 68 61 74 20 69 74 20 72 65 63 65 69 76 65 73 2e  hat it receives.
123b0 20 49 66 20 73 75 63 68 20 61 20 63 68 65 63 6b   If such a check
123c0 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   is..        ///
123d0 20 72 65 64 75 6e 64 61 6e 74 2c 20 74 68 65 20   redundant, the 
123e0 78 42 65 73 74 46 69 6c 74 65 72 20 6d 65 74 68  xBestFilter meth
123f0 6f 64 20 63 61 6e 20 73 75 70 70 72 65 73 73 20  od can suppress 
12400 74 68 61 74 20 64 6f 75 62 6c 65 2d 63 68 65 63  that double-chec
12410 6b 20 62 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  k by..        //
12420 2f 20 73 65 74 74 69 6e 67 20 61 43 6f 6e 73 74  / setting aConst
12430 72 61 69 6e 74 55 73 61 67 65 5b 5d 2e 6f 6d 69  raintUsage[].omi
12440 74 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  t...        /// 
12450 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
12460 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
12470 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
12480 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
12490 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
124a0 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
124b0 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
124c0 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
124d0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
124e0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
124f0 6d 65 3d 22 70 49 6e 64 65 78 22 3e 0d 0a 20 20  me="pIndex">..  
12500 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
12510 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
12520 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 64 65  the sqlite3_inde
12530 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75 72 65  x_info structure
12540 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12550 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
12560 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
12570 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
12580 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
12590 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
125a0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
125b0 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
125c0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73  teErrorCode xBes
125d0 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
125e0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
125f0 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
12600 49 6e 74 50 74 72 20 70 49 6e 64 65 78 0d 0a 20  IntPtr pIndex.. 
12610 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
12620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
12630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12670 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
12680 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
12690 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
126a0 6f 64 20 72 65 6c 65 61 73 65 73 20 61 20 63 6f  od releases a co
126b0 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 61 20 76 69  nnection to a vi
126c0 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 4f 6e 6c  rtual table. Onl
126d0 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  y the..        /
126e0 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20  // sqlite3_vtab 
126f0 6f 62 6a 65 63 74 20 69 73 20 64 65 73 74 72 6f  object is destro
12700 79 65 64 2e 20 54 68 65 20 76 69 72 74 75 61 6c  yed. The virtual
12710 20 74 61 62 6c 65 20 69 73 20 6e 6f 74 0d 0a 20   table is not.. 
12720 20 20 20 20 20 20 20 2f 2f 2f 20 64 65 73 74 72         /// destr
12730 6f 79 65 64 20 61 6e 64 20 61 6e 79 20 62 61 63  oyed and any bac
12740 6b 69 6e 67 20 73 74 6f 72 65 20 61 73 73 6f 63  king store assoc
12750 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 76  iated with the v
12760 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20  irtual table..  
12770 20 20 20 20 20 20 2f 2f 2f 20 70 65 72 73 69 73        /// persis
12780 74 73 2e 20 54 68 69 73 20 6d 65 74 68 6f 64 20  ts. This method 
12790 75 6e 64 6f 65 73 20 74 68 65 20 77 6f 72 6b 20  undoes the work 
127a0 6f 66 20 78 43 6f 6e 6e 65 63 74 2e 0d 0a 20 20  of xConnect...  
127b0 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20        ///..     
127c0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
127d0 6f 64 20 69 73 20 61 20 64 65 73 74 72 75 63 74  od is a destruct
127e0 6f 72 20 66 6f 72 20 61 20 63 6f 6e 6e 65 63 74  or for a connect
127f0 69 6f 6e 20 74 6f 20 74 68 65 20 76 69 72 74 75  ion to the virtu
12800 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
12810 20 20 20 2f 2f 2f 20 43 6f 6e 74 72 61 73 74 20     /// Contrast 
12820 74 68 69 73 20 6d 65 74 68 6f 64 20 77 69 74 68  this method with
12830 20 78 44 65 73 74 72 6f 79 2e 20 54 68 65 20 78   xDestroy. The x
12840 44 65 73 74 72 6f 79 20 69 73 20 61 20 64 65 73  Destroy is a des
12850 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20  tructor..       
12860 20 2f 2f 2f 20 66 6f 72 20 74 68 65 20 65 6e 74   /// for the ent
12870 69 72 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ire virtual tabl
12880 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d  e...        ///.
12890 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
128a0 20 78 44 69 73 63 6f 6e 6e 65 63 74 20 6d 65 74   xDisconnect met
128b0 68 6f 64 20 69 73 20 72 65 71 75 69 72 65 64 20  hod is required 
128c0 66 6f 72 20 65 76 65 72 79 20 76 69 72 74 75 61  for every virtua
128d0 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20  l table..       
128e0 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   /// implementat
128f0 69 6f 6e 2c 20 74 68 6f 75 67 68 20 69 74 20 69  ion, though it i
12900 73 20 61 63 63 65 70 74 61 62 6c 65 20 66 6f 72  s acceptable for
12910 20 74 68 65 20 78 44 69 73 63 6f 6e 6e 65 63 74   the xDisconnect
12920 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f   and..        //
12930 2f 20 78 44 65 73 74 72 6f 79 20 6d 65 74 68 6f  / xDestroy metho
12940 64 73 20 74 6f 20 62 65 20 74 68 65 20 73 61 6d  ds to be the sam
12950 65 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 74 68  e function if th
12960 61 74 20 6d 61 6b 65 73 20 73 65 6e 73 65 20 66  at makes sense f
12970 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
12980 74 68 65 20 70 61 72 74 69 63 75 6c 61 72 20 76  the particular v
12990 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
129a0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
129b0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
129c0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
129d0 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
129e0 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
129f0 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
12a00 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
12a10 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
12a20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
12a30 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
12a40 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
12a50 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
12a60 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
12a70 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
12a80 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
12a90 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
12aa0 72 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e  rrorCode xDiscon
12ab0 6e 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  nect(..         
12ac0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
12ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
12ae0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
12af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b30 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
12b40 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
12b50 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
12b60 74 68 6f 64 20 72 65 6c 65 61 73 65 73 20 61 20  thod releases a 
12b70 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 61 20  connection to a 
12b80 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2c 20 6a  virtual table, j
12b90 75 73 74 20 6c 69 6b 65 20 74 68 65 0d 0a 20 20  ust like the..  
12ba0 20 20 20 20 20 20 2f 2f 2f 20 78 44 69 73 63 6f        /// xDisco
12bb0 6e 6e 65 63 74 20 6d 65 74 68 6f 64 2c 20 61 6e  nnect method, an
12bc0 64 20 69 74 20 61 6c 73 6f 20 64 65 73 74 72 6f  d it also destro
12bd0 79 73 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e  ys the underlyin
12be0 67 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20  g table..       
12bf0 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   /// implementat
12c00 69 6f 6e 2e 20 54 68 69 73 20 6d 65 74 68 6f 64  ion. This method
12c10 20 75 6e 64 6f 65 73 20 74 68 65 20 77 6f 72 6b   undoes the work
12c20 20 6f 66 20 78 43 72 65 61 74 65 2e 0d 0a 20 20   of xCreate...  
12c30 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20        ///..     
12c40 20 20 20 2f 2f 2f 20 54 68 65 20 78 44 69 73 63     /// The xDisc
12c50 6f 6e 6e 65 63 74 20 6d 65 74 68 6f 64 20 69 73  onnect method is
12c60 20 63 61 6c 6c 65 64 20 77 68 65 6e 65 76 65 72   called whenever
12c70 20 61 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e   a database conn
12c80 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20  ection..        
12c90 2f 2f 2f 20 74 68 61 74 20 75 73 65 73 20 61 20  /// that uses a 
12ca0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73  virtual table is
12cb0 20 63 6c 6f 73 65 64 2e 20 54 68 65 20 78 44 65   closed. The xDe
12cc0 73 74 72 6f 79 20 6d 65 74 68 6f 64 20 69 73 20  stroy method is 
12cd0 6f 6e 6c 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f  only..        //
12ce0 2f 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 61 20  / called when a 
12cf0 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65  DROP TABLE state
12d00 6d 65 6e 74 20 69 73 20 65 78 65 63 75 74 65 64  ment is executed
12d10 20 61 67 61 69 6e 73 74 20 74 68 65 20 76 69 72   against the vir
12d20 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  tual..        //
12d30 2f 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  / table...      
12d40 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f    ///..        /
12d50 2f 2f 20 54 68 65 20 78 44 65 73 74 72 6f 79 20  // The xDestroy 
12d60 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72  method is requir
12d70 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72  ed for every vir
12d80 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
12d90 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
12da0 74 61 74 69 6f 6e 2c 20 74 68 6f 75 67 68 20 69  tation, though i
12db0 74 20 69 73 20 61 63 63 65 70 74 61 62 6c 65 20  t is acceptable 
12dc0 66 6f 72 20 74 68 65 20 78 44 69 73 63 6f 6e 6e  for the xDisconn
12dd0 65 63 74 20 61 6e 64 0d 0a 20 20 20 20 20 20 20  ect and..       
12de0 20 2f 2f 2f 20 78 44 65 73 74 72 6f 79 20 6d 65   /// xDestroy me
12df0 74 68 6f 64 73 20 74 6f 20 62 65 20 74 68 65 20  thods to be the 
12e00 73 61 6d 65 20 66 75 6e 63 74 69 6f 6e 20 69 66  same function if
12e10 20 74 68 61 74 20 6d 61 6b 65 73 20 73 65 6e 73   that makes sens
12e20 65 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  e for..        /
12e30 2f 2f 20 74 68 65 20 70 61 72 74 69 63 75 6c 61  // the particula
12e40 72 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  r virtual table.
12e50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
12e60 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
12e70 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
12e80 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20  e="pVtab">..    
12e90 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
12ea0 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
12eb0 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64  e sqlite3_vtab d
12ec0 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
12ed0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
12ee0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
12ef0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
12f00 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
12f10 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
12f20 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
12f30 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
12f40 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
12f50 74 65 45 72 72 6f 72 43 6f 64 65 20 78 44 65 73  teErrorCode xDes
12f60 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20 20  troy(..         
12f70 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d     IntPtr pVtab.
12f80 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
12f90 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
12fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12fe0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
12ff0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
13000 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 4f 70       /// The xOp
13010 65 6e 20 6d 65 74 68 6f 64 20 63 72 65 61 74 65  en method create
13020 73 20 61 20 6e 65 77 20 63 75 72 73 6f 72 20 75  s a new cursor u
13030 73 65 64 20 66 6f 72 20 61 63 63 65 73 73 69 6e  sed for accessin
13040 67 20 28 72 65 61 64 0d 0a 20 20 20 20 20 20 20  g (read..       
13050 20 2f 2f 2f 20 61 6e 64 2f 6f 72 20 77 72 69 74   /// and/or writ
13060 69 6e 67 29 20 61 20 76 69 72 74 75 61 6c 20 74  ing) a virtual t
13070 61 62 6c 65 2e 20 41 20 73 75 63 63 65 73 73 66  able. A successf
13080 75 6c 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f 66  ul invocation of
13090 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 2f   this..        /
130a0 2f 2f 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 61  // method will a
130b0 6c 6c 6f 63 61 74 65 20 74 68 65 20 6d 65 6d 6f  llocate the memo
130c0 72 79 20 66 6f 72 20 74 68 65 20 73 71 6c 69 74  ry for the sqlit
130d0 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 28  e3_vtab_cursor (
130e0 6f 72 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f  or a..        //
130f0 2f 20 73 75 62 63 6c 61 73 73 29 2c 20 69 6e 69  / subclass), ini
13100 74 69 61 6c 69 7a 65 20 74 68 65 20 6e 65 77 20  tialize the new 
13110 6f 62 6a 65 63 74 2c 20 61 6e 64 20 6d 61 6b 65  object, and make
13120 20 2a 70 70 43 75 72 73 6f 72 20 70 6f 69 6e 74   *ppCursor point
13130 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   to..        ///
13140 20 74 68 65 20 6e 65 77 20 6f 62 6a 65 63 74 2e   the new object.
13150 20 54 68 65 20 73 75 63 63 65 73 73 66 75 6c 20   The successful 
13160 63 61 6c 6c 20 74 68 65 6e 20 72 65 74 75 72 6e  call then return
13170 73 20 53 51 4c 49 54 45 5f 4f 4b 2e 0d 0a 20 20  s SQLITE_OK...  
13180 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20        ///..     
13190 20 20 20 2f 2f 2f 20 46 6f 72 20 65 76 65 72 79     /// For every
131a0 20 73 75 63 63 65 73 73 66 75 6c 20 63 61 6c 6c   successful call
131b0 20 74 6f 20 74 68 69 73 20 6d 65 74 68 6f 64 2c   to this method,
131c0 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
131d0 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f   will..        /
131e0 2f 2f 20 6c 61 74 65 72 20 69 6e 76 6f 6b 65 20  // later invoke 
131f0 74 68 65 20 78 43 6c 6f 73 65 20 6d 65 74 68 6f  the xClose metho
13200 64 20 74 6f 20 64 65 73 74 72 6f 79 20 74 68 65  d to destroy the
13210 20 61 6c 6c 6f 63 61 74 65 64 20 63 75 72 73 6f   allocated curso
13220 72 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d  r...        ///.
13230 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
13240 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64 20 6e 65   xOpen method ne
13250 65 64 20 6e 6f 74 20 69 6e 69 74 69 61 6c 69 7a  ed not initializ
13260 65 20 74 68 65 20 70 56 74 61 62 20 66 69 65 6c  e the pVtab fiel
13270 64 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20  d of the..      
13280 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74    /// sqlite3_vt
13290 61 62 5f 63 75 72 73 6f 72 20 73 74 72 75 63 74  ab_cursor struct
132a0 75 72 65 2e 20 54 68 65 20 53 51 4c 69 74 65 20  ure. The SQLite 
132b0 63 6f 72 65 20 77 69 6c 6c 20 74 61 6b 65 20 63  core will take c
132c0 61 72 65 20 6f 66 0d 0a 20 20 20 20 20 20 20 20  are of..        
132d0 2f 2f 2f 20 74 68 61 74 20 63 68 6f 72 65 20 61  /// that chore a
132e0 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0d 0a 20  utomatically... 
132f0 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20         ///..    
13300 20 20 20 20 2f 2f 2f 20 41 20 76 69 72 74 75 61      /// A virtua
13310 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e  l table implemen
13320 74 61 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 61  tation must be a
13330 62 6c 65 20 74 6f 20 73 75 70 70 6f 72 74 20 61  ble to support a
13340 6e 20 61 72 62 69 74 72 61 72 79 0d 0a 20 20 20  n arbitrary..   
13350 20 20 20 20 20 2f 2f 2f 20 6e 75 6d 62 65 72 20       /// number 
13360 6f 66 20 73 69 6d 75 6c 74 61 6e 65 6f 75 73 6c  of simultaneousl
13370 79 20 6f 70 65 6e 20 63 75 72 73 6f 72 73 2e 0d  y open cursors..
13380 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20  .        ///..  
13390 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 69        /// When i
133a0 6e 69 74 69 61 6c 6c 79 20 6f 70 65 6e 65 64 2c  nitially opened,
133b0 20 74 68 65 20 63 75 72 73 6f 72 20 69 73 20 69   the cursor is i
133c0 6e 20 61 6e 20 75 6e 64 65 66 69 6e 65 64 20 73  n an undefined s
133d0 74 61 74 65 2e 20 54 68 65 0d 0a 20 20 20 20 20  tate. The..     
133e0 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 63 6f     /// SQLite co
133f0 72 65 20 77 69 6c 6c 20 69 6e 76 6f 6b 65 20 74  re will invoke t
13400 68 65 20 78 46 69 6c 74 65 72 20 6d 65 74 68 6f  he xFilter metho
13410 64 20 6f 6e 20 74 68 65 20 63 75 72 73 6f 72 20  d on the cursor 
13420 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20 20 20 20  prior to..      
13430 20 20 2f 2f 2f 20 61 6e 79 20 61 74 74 65 6d 70    /// any attemp
13440 74 20 74 6f 20 70 6f 73 69 74 69 6f 6e 20 6f 72  t to position or
13450 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20 63   read from the c
13460 75 72 73 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20  ursor...        
13470 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ///..        ///
13480 20 54 68 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f   The xOpen metho
13490 64 20 69 73 20 72 65 71 75 69 72 65 64 20 66 6f  d is required fo
134a0 72 20 65 76 65 72 79 20 76 69 72 74 75 61 6c 20  r every virtual 
134b0 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f  table..        /
134c0 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  // implementatio
134d0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  n...        /// 
134e0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
134f0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
13500 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20  ame="pVtab">..  
13510 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
13520 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
13530 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
13540 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74 75   derived structu
13550 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  re...        ///
13560 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
13570 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
13580 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
13590 20 20 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20         /// Upon 
135a0 73 75 63 63 65 73 73 2c 20 74 68 69 73 20 70 61  success, this pa
135b0 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
135c0 6d 6f 64 69 66 69 65 64 20 74 6f 20 70 6f 69 6e  modified to poin
135d0 74 20 74 6f 20 74 68 65 20 6e 65 77 6c 79 0d 0a  t to the newly..
135e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 72 65 61          /// crea
135f0 74 65 64 20 6e 61 74 69 76 65 20 73 71 6c 69 74  ted native sqlit
13600 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
13610 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
13620 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
13630 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
13640 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
13650 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
13660 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
13670 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
13680 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
13690 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
136a0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f 70 65  teErrorCode xOpe
136b0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
136c0 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20  IntPtr pVtab,.. 
136d0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 49             ref I
136e0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20  ntPtr pCursor.. 
136f0 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
13700 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
13710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13750 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
13760 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
13770 20 20 20 2f 2f 2f 20 54 68 65 20 78 43 6c 6f 73     /// The xClos
13780 65 20 6d 65 74 68 6f 64 20 63 6c 6f 73 65 73 20  e method closes 
13790 61 20 63 75 72 73 6f 72 20 70 72 65 76 69 6f 75  a cursor previou
137a0 73 6c 79 20 6f 70 65 6e 65 64 20 62 79 20 78 4f  sly opened by xO
137b0 70 65 6e 2e 20 54 68 65 0d 0a 20 20 20 20 20 20  pen. The..      
137c0 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 63 6f 72    /// SQLite cor
137d0 65 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 63 61  e will always ca
137e0 6c 6c 20 78 43 6c 6f 73 65 20 6f 6e 63 65 20 66  ll xClose once f
137f0 6f 72 20 65 61 63 68 20 63 75 72 73 6f 72 20 6f  or each cursor o
13800 70 65 6e 65 64 0d 0a 20 20 20 20 20 20 20 20 2f  pened..        /
13810 2f 2f 20 75 73 69 6e 67 20 78 4f 70 65 6e 2e 0d  // using xOpen..
13820 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20  .        ///..  
13830 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
13840 65 74 68 6f 64 20 6d 75 73 74 20 72 65 6c 65 61  ethod must relea
13850 73 65 20 61 6c 6c 20 72 65 73 6f 75 72 63 65 73  se all resources
13860 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 20 74 68   allocated by th
13870 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63  e..        /// c
13880 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 78 4f 70  orresponding xOp
13890 65 6e 20 63 61 6c 6c 2e 20 54 68 65 20 72 6f 75  en call. The rou
138a0 74 69 6e 65 20 77 69 6c 6c 20 6e 6f 74 20 62 65  tine will not be
138b0 20 63 61 6c 6c 65 64 20 61 67 61 69 6e 20 65 76   called again ev
138c0 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  en..        /// 
138d0 69 66 20 69 74 20 72 65 74 75 72 6e 73 20 61 6e  if it returns an
138e0 20 65 72 72 6f 72 2e 20 54 68 65 20 53 51 4c 69   error. The SQLi
138f0 74 65 20 63 6f 72 65 20 77 69 6c 6c 20 6e 6f 74  te core will not
13900 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20   use the..      
13910 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 76 74    /// sqlite3_vt
13920 61 62 5f 63 75 72 73 6f 72 20 61 67 61 69 6e 20  ab_cursor again 
13930 61 66 74 65 72 20 69 74 20 68 61 73 20 62 65 65  after it has bee
13940 6e 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20  n closed...     
13950 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20     ///..        
13960 2f 2f 2f 20 54 68 65 20 78 43 6c 6f 73 65 20 6d  /// The xClose m
13970 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72 65  ethod is require
13980 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72 74  d for every virt
13990 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20  ual table..     
139a0 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74     /// implement
139b0 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ation...        
139c0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
139d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
139e0 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
139f0 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
13a00 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
13a10 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
13a20 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65  3_vtab_cursor de
13a30 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e  rived structure.
13a40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
13a50 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
13a60 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
13a70 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
13a80 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
13a90 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
13aa0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
13ab0 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
13ac0 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73  eErrorCode xClos
13ad0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
13ae0 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
13af0 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
13b00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
13b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b50 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
13b60 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
13b70 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
13b80 68 6f 64 20 62 65 67 69 6e 73 20 61 20 73 65 61  hod begins a sea
13b90 72 63 68 20 6f 66 20 61 20 76 69 72 74 75 61 6c  rch of a virtual
13ba0 20 74 61 62 6c 65 2e 20 54 68 65 20 66 69 72 73   table. The firs
13bb0 74 20 61 72 67 75 6d 65 6e 74 0d 0a 20 20 20 20  t argument..    
13bc0 20 20 20 20 2f 2f 2f 20 69 73 20 61 20 63 75 72      /// is a cur
13bd0 73 6f 72 20 6f 70 65 6e 65 64 20 62 79 20 78 4f  sor opened by xO
13be0 70 65 6e 2e 20 54 68 65 20 6e 65 78 74 20 74 77  pen. The next tw
13bf0 6f 20 61 72 67 75 6d 65 6e 74 20 64 65 66 69 6e  o argument defin
13c00 65 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  e a..        ///
13c10 20 70 61 72 74 69 63 75 6c 61 72 20 73 65 61 72   particular sear
13c20 63 68 20 69 6e 64 65 78 20 70 72 65 76 69 6f 75  ch index previou
13c30 73 6c 79 20 63 68 6f 73 65 6e 20 62 79 20 78 42  sly chosen by xB
13c40 65 73 74 49 6e 64 65 78 2e 20 54 68 65 0d 0a 20  estIndex. The.. 
13c50 20 20 20 20 20 20 20 2f 2f 2f 20 73 70 65 63 69         /// speci
13c60 66 69 63 20 6d 65 61 6e 69 6e 67 73 20 6f 66 20  fic meanings of 
13c70 69 64 78 4e 75 6d 20 61 6e 64 20 69 64 78 53 74  idxNum and idxSt
13c80 72 20 61 72 65 20 75 6e 69 6d 70 6f 72 74 61 6e  r are unimportan
13c90 74 20 61 73 20 6c 6f 6e 67 20 61 73 0d 0a 20 20  t as long as..  
13ca0 20 20 20 20 20 20 2f 2f 2f 20 78 46 69 6c 74 65        /// xFilte
13cb0 72 20 61 6e 64 20 78 42 65 73 74 49 6e 64 65 78  r and xBestIndex
13cc0 20 61 67 72 65 65 20 6f 6e 20 77 68 61 74 20 74   agree on what t
13cd0 68 61 74 20 6d 65 61 6e 69 6e 67 20 69 73 2e 0d  hat meaning is..
13ce0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20  .        ///..  
13cf0 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 42        /// The xB
13d00 65 73 74 49 6e 64 65 78 20 66 75 6e 63 74 69 6f  estIndex functio
13d10 6e 20 6d 61 79 20 68 61 76 65 20 72 65 71 75 65  n may have reque
13d20 73 74 65 64 20 74 68 65 20 76 61 6c 75 65 73 20  sted the values 
13d30 6f 66 20 63 65 72 74 61 69 6e 0d 0a 20 20 20 20  of certain..    
13d40 20 20 20 20 2f 2f 2f 20 65 78 70 72 65 73 73 69      /// expressi
13d50 6f 6e 73 20 75 73 69 6e 67 20 74 68 65 20 61 43  ons using the aC
13d60 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 5b 5d  onstraintUsage[]
13d70 2e 61 72 67 76 49 6e 64 65 78 20 76 61 6c 75 65  .argvIndex value
13d80 73 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20  s of the..      
13d90 20 20 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e    /// sqlite3_in
13da0 64 65 78 5f 69 6e 66 6f 20 73 74 72 75 63 74 75  dex_info structu
13db0 72 65 2e 20 54 68 6f 73 65 20 76 61 6c 75 65 73  re. Those values
13dc0 20 61 72 65 20 70 61 73 73 65 64 20 74 6f 20 78   are passed to x
13dd0 46 69 6c 74 65 72 0d 0a 20 20 20 20 20 20 20 20  Filter..        
13de0 2f 2f 2f 20 75 73 69 6e 67 20 74 68 65 20 61 72  /// using the ar
13df0 67 63 20 61 6e 64 20 61 72 67 76 20 70 61 72 61  gc and argv para
13e00 6d 65 74 65 72 73 2e 0d 0a 20 20 20 20 20 20 20  meters...       
13e10 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f   ///..        //
13e20 2f 20 49 66 20 74 68 65 20 76 69 72 74 75 61 6c  / If the virtual
13e30 20 74 61 62 6c 65 20 63 6f 6e 74 61 69 6e 73 20   table contains 
13e40 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73  one or more rows
13e50 20 74 68 61 74 20 6d 61 74 63 68 20 74 68 65 0d   that match the.
13e60 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 65 61  .        /// sea
13e70 72 63 68 20 63 72 69 74 65 72 69 61 2c 20 74 68  rch criteria, th
13e80 65 6e 20 74 68 65 20 63 75 72 73 6f 72 20 6d 75  en the cursor mu
13e90 73 74 20 62 65 20 6c 65 66 74 20 70 6f 69 6e 74  st be left point
13ea0 20 61 74 20 74 68 65 20 66 69 72 73 74 0d 0a 20   at the first.. 
13eb0 20 20 20 20 20 20 20 2f 2f 2f 20 72 6f 77 2e 20         /// row. 
13ec0 53 75 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 73  Subsequent calls
13ed0 20 74 6f 20 78 45 6f 66 20 6d 75 73 74 20 72 65   to xEof must re
13ee0 74 75 72 6e 20 66 61 6c 73 65 20 28 7a 65 72 6f  turn false (zero
13ef0 29 2e 20 49 66 20 74 68 65 72 65 0d 0a 20 20 20  ). If there..   
13f00 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 6e 6f 20       /// are no 
13f10 72 6f 77 73 20 6d 61 74 63 68 2c 20 74 68 65 6e  rows match, then
13f20 20 74 68 65 20 63 75 72 73 6f 72 20 6d 75 73 74   the cursor must
13f30 20 62 65 20 6c 65 66 74 20 69 6e 20 61 20 73 74   be left in a st
13f40 61 74 65 20 74 68 61 74 0d 0a 20 20 20 20 20 20  ate that..      
13f50 20 20 2f 2f 2f 20 77 69 6c 6c 20 63 61 75 73 65    /// will cause
13f60 20 74 68 65 20 78 45 6f 66 20 74 6f 20 72 65 74   the xEof to ret
13f70 75 72 6e 20 74 72 75 65 20 28 6e 6f 6e 2d 7a 65  urn true (non-ze
13f80 72 6f 29 2e 20 54 68 65 20 53 51 4c 69 74 65 20  ro). The SQLite 
13f90 65 6e 67 69 6e 65 0d 0a 20 20 20 20 20 20 20 20  engine..        
13fa0 2f 2f 2f 20 77 69 6c 6c 20 75 73 65 20 74 68 65  /// will use the
13fb0 20 78 43 6f 6c 75 6d 6e 20 61 6e 64 20 78 52 6f   xColumn and xRo
13fc0 77 69 64 20 6d 65 74 68 6f 64 73 20 74 6f 20 61  wid methods to a
13fd0 63 63 65 73 73 20 74 68 61 74 20 72 6f 77 20 63  ccess that row c
13fe0 6f 6e 74 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  ontent...       
13ff0 20 2f 2f 2f 20 54 68 65 20 78 4e 65 78 74 20 6d   /// The xNext m
14000 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 75 73  ethod will be us
14010 65 64 20 74 6f 20 61 64 76 61 6e 63 65 20 74 6f  ed to advance to
14020 20 74 68 65 20 6e 65 78 74 20 72 6f 77 2e 0d 0a   the next row...
14030 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20          ///..   
14040 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
14050 74 68 6f 64 20 6d 75 73 74 20 72 65 74 75 72 6e  thod must return
14060 20 53 51 4c 49 54 45 5f 4f 4b 20 69 66 20 73 75   SQLITE_OK if su
14070 63 63 65 73 73 66 75 6c 2c 20 6f 72 20 61 6e 20  ccessful, or an 
14080 73 71 6c 69 74 65 20 65 72 72 6f 72 0d 0a 20 20  sqlite error..  
14090 20 20 20 20 20 20 2f 2f 2f 20 63 6f 64 65 20 69        /// code i
140a0 66 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72  f an error occur
140b0 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d  s...        ///.
140c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
140d0 20 78 46 69 6c 74 65 72 20 6d 65 74 68 6f 64 20   xFilter method 
140e0 69 73 20 72 65 71 75 69 72 65 64 20 66 6f 72 20  is required for 
140f0 65 76 65 72 79 20 76 69 72 74 75 61 6c 20 74 61  every virtual ta
14100 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ble..        ///
14110 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
14120 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
14130 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14140 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
14150 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20 20  e="pCursor">..  
14160 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61        /// The na
14170 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  tive pointer to 
14180 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62  the sqlite3_vtab
14190 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64 20  _cursor derived 
141a0 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20  structure...    
141b0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
141c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
141d0 61 72 61 6d 20 6e 61 6d 65 3d 22 69 64 78 4e 75  aram name="idxNu
141e0 6d 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  m">..        ///
141f0 20 4e 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20   Number used to 
14200 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68  help identify th
14210 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78  e selected index
14220 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
14230 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
14240 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
14250 3d 22 69 64 78 53 74 72 22 3e 0d 0a 20 20 20 20  ="idxStr">..    
14260 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
14270 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
14280 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20  e UTF-8 encoded 
14290 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e  string containin
142a0 67 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  g the..        /
142b0 2f 2f 20 73 74 72 69 6e 67 20 75 73 65 64 20 74  // string used t
142c0 6f 20 68 65 6c 70 20 69 64 65 6e 74 69 66 79 20  o help identify 
142d0 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e 64  the selected ind
142e0 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ex...        ///
142f0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
14300 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
14310 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20  me="argc">..    
14320 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62      /// The numb
14330 65 72 20 6f 66 20 6e 61 74 69 76 65 20 70 6f 69  er of native poi
14340 6e 74 65 72 73 20 74 6f 20 73 71 6c 69 74 65 33  nters to sqlite3
14350 5f 76 61 6c 75 65 20 73 74 72 75 63 74 75 72 65  _value structure
14360 73 20 73 70 65 63 69 66 69 65 64 0d 0a 20 20 20  s specified..   
14370 20 20 20 20 20 2f 2f 2f 20 69 6e 20 3c 70 61 72       /// in <par
14380 61 6d 72 65 66 20 6e 61 6d 65 3d 22 61 72 67 76  amref name="argv
14390 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f  " />...        /
143a0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
143b0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
143c0 6e 61 6d 65 3d 22 61 72 67 76 22 3e 0d 0a 20 20  name="argv">..  
143d0 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72        /// An arr
143e0 61 79 20 6f 66 20 6e 61 74 69 76 65 20 70 6f 69  ay of native poi
143f0 6e 74 65 72 73 20 74 6f 20 73 71 6c 69 74 65 33  nters to sqlite3
14400 5f 76 61 6c 75 65 20 73 74 72 75 63 74 75 72 65  _value structure
14410 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20  s containing..  
14420 20 20 20 20 20 20 2f 2f 2f 20 66 69 6c 74 65 72        /// filter
14430 69 6e 67 20 63 72 69 74 65 72 69 61 20 66 6f 72  ing criteria for
14440 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 69 6e   the selected in
14450 64 65 78 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  dex...        //
14460 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
14470 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
14480 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
14490 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
144a0 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
144b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
144c0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
144d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
144e0 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20  Filter(..       
144f0 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
14500 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  sor,..          
14510 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20    int idxNum,.. 
14520 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
14530 72 20 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20  r idxStr,..     
14540 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
14550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
14560 74 50 74 72 5b 5d 20 61 72 67 76 0d 0a 20 20 20  tPtr[] argv..   
14570 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
14580 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
14590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
145d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
145e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
145f0 20 2f 2f 2f 20 54 68 65 20 78 4e 65 78 74 20 6d   /// The xNext m
14600 65 74 68 6f 64 20 61 64 76 61 6e 63 65 73 20 61  ethod advances a
14610 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63   virtual table c
14620 75 72 73 6f 72 20 74 6f 20 74 68 65 20 6e 65 78  ursor to the nex
14630 74 20 72 6f 77 20 6f 66 0d 0a 20 20 20 20 20 20  t row of..      
14640 20 20 2f 2f 2f 20 61 20 72 65 73 75 6c 74 20 73    /// a result s
14650 65 74 20 69 6e 69 74 69 61 74 65 64 20 62 79 20  et initiated by 
14660 78 46 69 6c 74 65 72 2e 20 49 66 20 74 68 65 20  xFilter. If the 
14670 63 75 72 73 6f 72 20 69 73 20 61 6c 72 65 61 64  cursor is alread
14680 79 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  y..        /// p
14690 6f 69 6e 74 69 6e 67 20 61 74 20 74 68 65 20 6c  ointing at the l
146a0 61 73 74 20 72 6f 77 20 77 68 65 6e 20 74 68 69  ast row when thi
146b0 73 20 72 6f 75 74 69 6e 65 20 69 73 20 63 61 6c  s routine is cal
146c0 6c 65 64 2c 20 74 68 65 6e 20 74 68 65 0d 0a 20  led, then the.. 
146d0 20 20 20 20 20 20 20 2f 2f 2f 20 63 75 72 73 6f         /// curso
146e0 72 20 6e 6f 20 6c 6f 6e 67 65 72 20 70 6f 69 6e  r no longer poin
146f0 74 73 20 74 6f 20 76 61 6c 69 64 20 64 61 74 61  ts to valid data
14700 20 61 6e 64 20 61 20 73 75 62 73 65 71 75 65 6e   and a subsequen
14710 74 20 63 61 6c 6c 20 74 6f 20 74 68 65 0d 0a 20  t call to the.. 
14720 20 20 20 20 20 20 20 2f 2f 2f 20 78 45 6f 66 20         /// xEof 
14730 6d 65 74 68 6f 64 20 6d 75 73 74 20 72 65 74 75  method must retu
14740 72 6e 20 74 72 75 65 20 28 6e 6f 6e 2d 7a 65 72  rn true (non-zer
14750 6f 29 2e 20 49 66 20 74 68 65 20 63 75 72 73 6f  o). If the curso
14760 72 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  r is..        //
14770 2f 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 61  / successfully a
14780 64 76 61 6e 63 65 64 20 74 6f 20 61 6e 6f 74 68  dvanced to anoth
14790 65 72 20 72 6f 77 20 6f 66 20 63 6f 6e 74 65 6e  er row of conten
147a0 74 2c 20 74 68 65 6e 20 73 75 62 73 65 71 75 65  t, then subseque
147b0 6e 74 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  nt..        /// 
147c0 63 61 6c 6c 73 20 74 6f 20 78 45 6f 66 20 6d 75  calls to xEof mu
147d0 73 74 20 72 65 74 75 72 6e 20 66 61 6c 73 65 20  st return false 
147e0 28 7a 65 72 6f 29 2e 0d 0a 20 20 20 20 20 20 20  (zero)...       
147f0 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f   ///..        //
14800 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 6d 75  / This method mu
14810 73 74 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45  st return SQLITE
14820 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 73 66 75  _OK if successfu
14830 6c 2c 20 6f 72 20 61 6e 20 73 71 6c 69 74 65 20  l, or an sqlite 
14840 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f  error..        /
14850 2f 2f 20 63 6f 64 65 20 69 66 20 61 6e 20 65 72  // code if an er
14860 72 6f 72 20 6f 63 63 75 72 73 2e 0d 0a 20 20 20  ror occurs...   
14870 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20       ///..      
14880 20 20 2f 2f 2f 20 54 68 65 20 78 4e 65 78 74 20    /// The xNext 
14890 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72  method is requir
148a0 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72  ed for every vir
148b0 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
148c0 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
148d0 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
148e0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
148f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
14900 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f  ram name="pCurso
14910 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
14920 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e   The native poin
14930 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
14940 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 64  e3_vtab_cursor d
14950 65 72 69 76 65 64 20 73 74 72 75 63 74 75 72 65  erived structure
14960 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
14970 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
14980 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
14990 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
149a0 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
149b0 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
149c0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
149d0 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
149e0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78  teErrorCode xNex
149f0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
14a00 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a  IntPtr pCursor..
14a10 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
14a20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
14a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a70 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
14a80 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14a90 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 45 6f 66      /// The xEof
14aa0 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 72 65 74   method must ret
14ab0 75 72 6e 20 66 61 6c 73 65 20 28 7a 65 72 6f 29  urn false (zero)
14ac0 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65   if the specifie
14ad0 64 20 63 75 72 73 6f 72 0d 0a 20 20 20 20 20 20  d cursor..      
14ae0 20 20 2f 2f 2f 20 63 75 72 72 65 6e 74 6c 79 20    /// currently 
14af0 70 6f 69 6e 74 73 20 74 6f 20 61 20 76 61 6c 69  points to a vali
14b00 64 20 72 6f 77 20 6f 66 20 64 61 74 61 2c 20 6f  d row of data, o
14b10 72 20 74 72 75 65 20 28 6e 6f 6e 2d 7a 65 72 6f  r true (non-zero
14b20 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  )..        /// o
14b30 74 68 65 72 77 69 73 65 2e 20 54 68 69 73 20 6d  therwise. This m
14b40 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
14b50 62 79 20 74 68 65 20 53 51 4c 20 65 6e 67 69 6e  by the SQL engin
14b60 65 20 69 6d 6d 65 64 69 61 74 65 6c 79 0d 0a 20  e immediately.. 
14b70 20 20 20 20 20 20 20 2f 2f 2f 20 61 66 74 65 72         /// after
14b80 20 65 61 63 68 20 78 46 69 6c 74 65 72 20 61 6e   each xFilter an
14b90 64 20 78 4e 65 78 74 20 69 6e 76 6f 63 61 74 69  d xNext invocati
14ba0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
14bb0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
14bc0 65 20 78 45 6f 66 20 6d 65 74 68 6f 64 20 69 73  e xEof method is
14bd0 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65 76   required for ev
14be0 65 72 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ery virtual tabl
14bf0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
14c00 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
14c10 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
14c20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
14c30 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a 20  me="pCursor">.. 
14c40 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
14c50 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
14c60 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
14c70 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76 65 64  b_cursor derived
14c80 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
14c90 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
14ca0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
14cb0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
14cc0 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69    /// Non-zero i
14cd0 66 20 6e 6f 20 6d 6f 72 65 20 72 6f 77 73 20 61  f no more rows a
14ce0 72 65 20 61 76 61 69 6c 61 62 6c 65 3b 20 7a 65  re available; ze
14cf0 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20  ro otherwise... 
14d00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
14d10 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69  urns>..        i
14d20 6e 74 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20  nt xEof(..      
14d30 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75        IntPtr pCu
14d40 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rsor..          
14d50 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
14d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14da0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
14db0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14dc0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
14dd0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 69 6e  e SQLite core in
14de0 76 6f 6b 65 73 20 74 68 69 73 20 6d 65 74 68 6f  vokes this metho
14df0 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 66 69  d in order to fi
14e00 6e 64 20 74 68 65 20 76 61 6c 75 65 20 66 6f 72  nd the value for
14e10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
14e20 65 20 4e 2d 74 68 20 63 6f 6c 75 6d 6e 20 6f 66  e N-th column of
14e30 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77   the current row
14e40 2e 20 4e 20 69 73 20 7a 65 72 6f 2d 62 61 73 65  . N is zero-base
14e50 64 20 73 6f 20 74 68 65 20 66 69 72 73 74 0d 0a  d so the first..
14e60 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6c 75          /// colu
14e70 6d 6e 20 69 73 20 6e 75 6d 62 65 72 65 64 20 30  mn is numbered 0
14e80 2e 20 54 68 65 20 78 43 6f 6c 75 6d 6e 20 6d 65  . The xColumn me
14e90 74 68 6f 64 20 6d 61 79 20 72 65 74 75 72 6e 20  thod may return 
14ea0 69 74 73 20 72 65 73 75 6c 74 20 62 61 63 6b 0d  its result back.
14eb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  .        /// to 
14ec0 53 51 4c 69 74 65 20 75 73 69 6e 67 20 6f 6e 65  SQLite using one
14ed0 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e   of the followin
14ee0 67 20 69 6e 74 65 72 66 61 63 65 3a 0d 0a 20 20  g interface:..  
14ef0 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20        ///..     
14f00 20 20 20 2f 2f 2f 20 20 20 20 20 2a 20 73 71 6c     ///     * sql
14f10 69 74 65 33 5f 72 65 73 75 6c 74 5f 62 6c 6f 62  ite3_result_blob
14f20 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ()..        /// 
14f30 20 20 20 20 2a 20 73 71 6c 69 74 65 33 5f 72 65      * sqlite3_re
14f40 73 75 6c 74 5f 64 6f 75 62 6c 65 28 29 0d 0a 20  sult_double().. 
14f50 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 2a         ///     *
14f60 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f   sqlite3_result_
14f70 69 6e 74 28 29 0d 0a 20 20 20 20 20 20 20 20 2f  int()..        /
14f80 2f 2f 20 20 20 20 20 2a 20 73 71 6c 69 74 65 33  //     * sqlite3
14f90 5f 72 65 73 75 6c 74 5f 69 6e 74 36 34 28 29 0d  _result_int64().
14fa0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20  .        ///    
14fb0 20 2a 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c   * sqlite3_resul
14fc0 74 5f 6e 75 6c 6c 28 29 0d 0a 20 20 20 20 20 20  t_null()..      
14fd0 20 20 2f 2f 2f 20 20 20 20 20 2a 20 73 71 6c 69    ///     * sqli
14fe0 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74 28  te3_result_text(
14ff0 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20  )..        ///  
15000 20 20 20 2a 20 73 71 6c 69 74 65 33 5f 72 65 73     * sqlite3_res
15010 75 6c 74 5f 74 65 78 74 31 36 28 29 0d 0a 20 20  ult_text16()..  
15020 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 2a 20        ///     * 
15030 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 74  sqlite3_result_t
15040 65 78 74 31 36 6c 65 28 29 0d 0a 20 20 20 20 20  ext16le()..     
15050 20 20 20 2f 2f 2f 20 20 20 20 20 2a 20 73 71 6c     ///     * sql
15060 69 74 65 33 5f 72 65 73 75 6c 74 5f 74 65 78 74  ite3_result_text
15070 31 36 62 65 28 29 0d 0a 20 20 20 20 20 20 20 20  16be()..        
15080 2f 2f 2f 20 20 20 20 20 2a 20 73 71 6c 69 74 65  ///     * sqlite
15090 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f  3_result_zeroblo
150a0 62 28 29 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  b()..        ///
150b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 49 66  ..        /// If
150c0 20 74 68 65 20 78 43 6f 6c 75 6d 6e 20 6d 65 74   the xColumn met
150d0 68 6f 64 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  hod implementati
150e0 6f 6e 20 63 61 6c 6c 73 20 6e 6f 6e 65 20 6f 66  on calls none of
150f0 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 73 0d 0a   the functions..
15100 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 62 6f 76          /// abov
15110 65 2c 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75  e, then the valu
15120 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20  e of the column 
15130 64 65 66 61 75 6c 74 73 20 74 6f 20 61 6e 20 53  defaults to an S
15140 51 4c 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20 20  QL NULL...      
15150 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f    ///..        /
15160 2f 2f 20 54 6f 20 72 61 69 73 65 20 61 6e 20 65  // To raise an e
15170 72 72 6f 72 2c 20 74 68 65 20 78 43 6f 6c 75 6d  rror, the xColum
15180 6e 20 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64 20  n method should 
15190 75 73 65 20 6f 6e 65 20 6f 66 20 74 68 65 0d 0a  use one of the..
151a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 73 75          /// resu
151b0 6c 74 5f 74 65 78 74 28 29 20 6d 65 74 68 6f 64  lt_text() method
151c0 73 20 74 6f 20 73 65 74 20 74 68 65 20 65 72 72  s to set the err
151d0 6f 72 20 6d 65 73 73 61 67 65 20 74 65 78 74 2c  or message text,
151e0 20 74 68 65 6e 20 72 65 74 75 72 6e 20 61 6e 0d   then return an.
151f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 70 70  .        /// app
15200 72 6f 70 72 69 61 74 65 20 65 72 72 6f 72 20 63  ropriate error c
15210 6f 64 65 2e 20 54 68 65 20 78 43 6f 6c 75 6d 6e  ode. The xColumn
15220 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 72 65 74   method must ret
15230 75 72 6e 20 53 51 4c 49 54 45 5f 4f 4b 20 6f 6e  urn SQLITE_OK on
15240 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75  ..        /// su
15250 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20  ccess...        
15260 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ///..        ///
15270 20 54 68 65 20 78 43 6f 6c 75 6d 6e 20 6d 65 74   The xColumn met
15280 68 6f 64 20 69 73 20 72 65 71 75 69 72 65 64 20  hod is required 
15290 66 6f 72 20 65 76 65 72 79 20 76 69 72 74 75 61  for every virtua
152a0 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20  l table..       
152b0 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   /// implementat
152c0 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
152d0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
152e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
152f0 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
15300 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
15310 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  e native pointer
15320 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
15330 76 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69  vtab_cursor deri
15340 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
15350 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
15360 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
15370 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
15380 43 6f 6e 74 65 78 74 22 3e 0d 0a 20 20 20 20 20  Context">..     
15390 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76     /// The nativ
153a0 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
153b0 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74   sqlite3_context
153c0 20 73 74 72 75 63 74 75 72 65 20 74 6f 20 62 65   structure to be
153d0 20 75 73 65 64 0d 0a 20 20 20 20 20 20 20 20 2f   used..        /
153e0 2f 2f 20 66 6f 72 20 72 65 74 75 72 6e 69 6e 67  // for returning
153f0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63   the specified c
15400 6f 6c 75 6d 6e 20 76 61 6c 75 65 20 74 6f 20 74  olumn value to t
15410 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 0d 0a  he SQLite core..
15420 20 20 20 20 20 20 20 20 2f 2f 2f 20 6c 69 62 72          /// libr
15430 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary...        //
15440 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
15450 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
15460 61 6d 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20  ame="index">..  
15470 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 7a 65        /// The ze
15480 72 6f 2d 62 61 73 65 64 20 69 6e 64 65 78 20 63  ro-based index c
15490 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20  orresponding to 
154a0 74 68 65 20 63 6f 6c 75 6d 6e 20 63 6f 6e 74 61  the column conta
154b0 69 6e 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  ining the..     
154c0 20 20 20 2f 2f 2f 20 76 61 6c 75 65 20 74 6f 20     /// value to 
154d0 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20  be returned...  
154e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
154f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
15500 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
15510 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
15520 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
15530 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
15540 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
15550 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
15560 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28 0d  orCode xColumn(.
15570 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
15580 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20  Ptr pCursor,..  
15590 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
155a0 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20   pContext,..    
155b0 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
155c0 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  x..            )
155d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
155e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
155f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15620 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
15630 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15640 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 75 63         /// A suc
15650 63 65 73 73 66 75 6c 20 69 6e 76 6f 63 61 74 69  cessful invocati
15660 6f 6e 20 6f 66 20 74 68 69 73 20 6d 65 74 68 6f  on of this metho
15670 64 20 77 69 6c 6c 20 63 61 75 73 65 20 2a 70 52  d will cause *pR
15680 6f 77 69 64 20 74 6f 20 62 65 0d 0a 20 20 20 20  owid to be..    
15690 20 20 20 20 2f 2f 2f 20 66 69 6c 6c 65 64 20 77      /// filled w
156a0 69 74 68 20 74 68 65 20 72 6f 77 69 64 20 6f 66  ith the rowid of
156b0 20 72 6f 77 20 74 68 61 74 20 74 68 65 20 76 69   row that the vi
156c0 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75 72 73  rtual table curs
156d0 6f 72 20 70 43 75 72 20 69 73 0d 0a 20 20 20 20  or pCur is..    
156e0 20 20 20 20 2f 2f 2f 20 63 75 72 72 65 6e 74 6c      /// currentl
156f0 79 20 70 6f 69 6e 74 69 6e 67 20 61 74 2e 20 54  y pointing at. T
15700 68 69 73 20 6d 65 74 68 6f 64 20 72 65 74 75 72  his method retur
15710 6e 73 20 53 51 4c 49 54 45 5f 4f 4b 20 6f 6e 20  ns SQLITE_OK on 
15720 73 75 63 63 65 73 73 2e 20 49 74 0d 0a 20 20 20  success. It..   
15730 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e 73       /// returns
15740 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20   an appropriate 
15750 65 72 72 6f 72 20 63 6f 64 65 20 6f 6e 20 66 61  error code on fa
15760 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  ilure...        
15770 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ///..        ///
15780 20 54 68 65 20 78 52 6f 77 69 64 20 6d 65 74 68   The xRowid meth
15790 6f 64 20 69 73 20 72 65 71 75 69 72 65 64 20 66  od is required f
157a0 6f 72 20 65 76 65 72 79 20 76 69 72 74 75 61 6c  or every virtual
157b0 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20   table..        
157c0 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  /// implementati
157d0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  on...        ///
157e0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
157f0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
15800 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
15810 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
15820 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
15830 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
15840 74 61 62 5f 63 75 72 73 6f 72 20 64 65 72 69 76  tab_cursor deriv
15850 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20  ed structure... 
15860 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
15870 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
15880 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72 6f   <param name="ro
15890 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  wId">..        /
158a0 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c  // Upon success,
158b0 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
158c0 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
158d0 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 20   to contain the 
158e0 75 6e 69 71 75 65 0d 0a 20 20 20 20 20 20 20 20  unique..        
158f0 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72 6f 77 20  /// integer row 
15900 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20 74  identifier for t
15910 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 20 66  he current row f
15920 6f 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  or the specified
15930 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20 20 20   cursor...      
15940 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
15950 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
15960 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
15970 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
15980 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
15990 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
159a0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
159b0 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
159c0 64 65 20 78 52 6f 77 49 64 28 0d 0a 20 20 20 20  de xRowId(..    
159d0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
159e0 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
159f0 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f       ref long ro
15a00 77 49 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  wId..           
15a10 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
15a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a60 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
15a70 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15a80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 6c 6c  .        /// All
15a90 20 63 68 61 6e 67 65 73 20 74 6f 20 61 20 76 69   changes to a vi
15aa0 72 74 75 61 6c 20 74 61 62 6c 65 20 61 72 65 20  rtual table are 
15ab0 6d 61 64 65 20 75 73 69 6e 67 20 74 68 65 20 78  made using the x
15ac0 55 70 64 61 74 65 20 6d 65 74 68 6f 64 2e 0d 0a  Update method...
15ad0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
15ae0 20 6f 6e 65 20 6d 65 74 68 6f 64 20 63 61 6e 20   one method can 
15af0 62 65 20 75 73 65 64 20 74 6f 20 69 6e 73 65 72  be used to inser
15b00 74 2c 20 64 65 6c 65 74 65 2c 20 6f 72 20 75 70  t, delete, or up
15b10 64 61 74 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  date...        /
15b20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  //..        /// 
15b30 54 68 65 20 61 72 67 63 20 70 61 72 61 6d 65 74  The argc paramet
15b40 65 72 20 73 70 65 63 69 66 69 65 73 20 74 68 65  er specifies the
15b50 20 6e 75 6d 62 65 72 20 6f 66 20 65 6e 74 72 69   number of entri
15b60 65 73 20 69 6e 20 74 68 65 20 61 72 67 76 0d 0a  es in the argv..
15b70 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 72 72 61          /// arra
15b80 79 2e 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20  y. The value of 
15b90 61 72 67 63 20 77 69 6c 6c 20 62 65 20 31 20 66  argc will be 1 f
15ba0 6f 72 20 61 20 70 75 72 65 20 64 65 6c 65 74 65  or a pure delete
15bb0 20 6f 70 65 72 61 74 69 6f 6e 20 6f 72 0d 0a 20   operation or.. 
15bc0 20 20 20 20 20 20 20 2f 2f 2f 20 4e 2b 32 20 66         /// N+2 f
15bd0 6f 72 20 61 6e 20 69 6e 73 65 72 74 20 6f 72 20  or an insert or 
15be0 72 65 70 6c 61 63 65 20 6f 72 20 75 70 64 61 74  replace or updat
15bf0 65 20 77 68 65 72 65 20 4e 20 69 73 20 74 68 65  e where N is the
15c00 20 6e 75 6d 62 65 72 20 6f 66 0d 0a 20 20 20 20   number of..    
15c10 20 20 20 20 2f 2f 2f 20 63 6f 6c 75 6d 6e 73 20      /// columns 
15c20 69 6e 20 74 68 65 20 74 61 62 6c 65 2e 20 49 6e  in the table. In
15c30 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 73 65   the previous se
15c40 6e 74 65 6e 63 65 2c 20 4e 20 69 6e 63 6c 75 64  ntence, N includ
15c50 65 73 20 61 6e 79 0d 0a 20 20 20 20 20 20 20 20  es any..        
15c60 2f 2f 2f 20 68 69 64 64 65 6e 20 63 6f 6c 75 6d  /// hidden colum
15c70 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns...        ///
15c80 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 45 76  ..        /// Ev
15c90 65 72 79 20 61 72 67 76 20 65 6e 74 72 79 20 77  ery argv entry w
15ca0 69 6c 6c 20 68 61 76 65 20 61 20 6e 6f 6e 2d 4e  ill have a non-N
15cb0 55 4c 4c 20 76 61 6c 75 65 20 69 6e 20 43 20 62  ULL value in C b
15cc0 75 74 20 6d 61 79 20 63 6f 6e 74 61 69 6e 0d 0a  ut may contain..
15cd0 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20          /// the 
15ce0 53 51 4c 20 76 61 6c 75 65 20 4e 55 4c 4c 2e 20  SQL value NULL. 
15cf0 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20  In other words, 
15d00 69 74 20 69 73 20 61 6c 77 61 79 73 20 74 72 75  it is always tru
15d10 65 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20  e that..        
15d20 2f 2f 2f 20 61 72 67 76 5b 69 5d 21 3d 30 20 66  /// argv[i]!=0 f
15d30 6f 72 20 69 20 62 65 74 77 65 65 6e 20 30 20 61  or i between 0 a
15d40 6e 64 20 61 72 67 63 2d 31 2e 20 48 6f 77 65 76  nd argc-1. Howev
15d50 65 72 2c 20 69 74 20 6d 69 67 68 74 20 62 65 20  er, it might be 
15d60 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
15d70 20 63 61 73 65 20 74 68 61 74 20 73 71 6c 69 74   case that sqlit
15d80 65 33 5f 76 61 6c 75 65 5f 74 79 70 65 28 61 72  e3_value_type(ar
15d90 67 76 5b 69 5d 29 3d 3d 53 51 4c 49 54 45 5f 4e  gv[i])==SQLITE_N
15da0 55 4c 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ULL...        //
15db0 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  /..        /// T
15dc0 68 65 20 61 72 67 76 5b 30 5d 20 70 61 72 61 6d  he argv[0] param
15dd0 65 74 65 72 20 69 73 20 74 68 65 20 72 6f 77 69  eter is the rowi
15de0 64 20 6f 66 20 61 20 72 6f 77 20 69 6e 20 74 68  d of a row in th
15df0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d  e virtual table.
15e00 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 6f 20  .        /// to 
15e10 62 65 20 64 65 6c 65 74 65 64 2e 20 49 66 20 61  be deleted. If a
15e20 72 67 76 5b 30 5d 20 69 73 20 61 6e 20 53 51 4c  rgv[0] is an SQL
15e30 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 6e 6f 20 64   NULL, then no d
15e40 65 6c 65 74 69 6f 6e 20 6f 63 63 75 72 73 2e 0d  eletion occurs..
15e50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20  .        ///..  
15e60 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 72        /// The ar
15e70 67 76 5b 31 5d 20 70 61 72 61 6d 65 74 65 72 20  gv[1] parameter 
15e80 69 73 20 74 68 65 20 72 6f 77 69 64 20 6f 66 20  is the rowid of 
15e90 61 20 6e 65 77 20 72 6f 77 20 74 6f 20 62 65 20  a new row to be 
15ea0 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 0d 0a 20  inserted into.. 
15eb0 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76         /// the v
15ec0 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 49 66  irtual table. If
15ed0 20 61 72 67 76 5b 31 5d 20 69 73 20 61 6e 20 53   argv[1] is an S
15ee0 51 4c 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 74 68  QL NULL, then th
15ef0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69  e..        /// i
15f00 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6d 75  mplementation mu
15f10 73 74 20 63 68 6f 6f 73 65 20 61 20 72 6f 77 69  st choose a rowi
15f20 64 20 66 6f 72 20 74 68 65 20 6e 65 77 6c 79 20  d for the newly 
15f30 69 6e 73 65 72 74 65 64 20 72 6f 77 2e 0d 0a 20  inserted row... 
15f40 20 20 20 20 20 20 20 2f 2f 2f 20 53 75 62 73 65         /// Subse
15f50 71 75 65 6e 74 20 61 72 67 76 5b 5d 20 65 6e 74  quent argv[] ent
15f60 72 69 65 73 20 63 6f 6e 74 61 69 6e 20 76 61 6c  ries contain val
15f70 75 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  ues of the colum
15f80 6e 73 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20  ns of the..     
15f90 20 20 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74     /// virtual t
15fa0 61 62 6c 65 2c 20 69 6e 20 74 68 65 20 6f 72 64  able, in the ord
15fb0 65 72 20 74 68 61 74 20 74 68 65 20 63 6f 6c 75  er that the colu
15fc0 6d 6e 73 20 77 65 72 65 20 64 65 63 6c 61 72 65  mns were declare
15fd0 64 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20 20  d. The..        
15fe0 2f 2f 2f 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  /// number of co
15ff0 6c 75 6d 6e 73 20 77 69 6c 6c 20 6d 61 74 63 68  lumns will match
16000 20 74 68 65 20 74 61 62 6c 65 20 64 65 63 6c 61   the table decla
16010 72 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 0d  ration that the.
16020 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43 6f  .        /// xCo
16030 6e 6e 65 63 74 20 6f 72 20 78 43 72 65 61 74 65  nnect or xCreate
16040 20 6d 65 74 68 6f 64 20 6d 61 64 65 20 75 73 69   method made usi
16050 6e 67 20 74 68 65 20 73 71 6c 69 74 65 33 5f 64  ng the sqlite3_d
16060 65 63 6c 61 72 65 5f 76 74 61 62 28 29 0d 0a 20  eclare_vtab().. 
16070 20 20 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 2e         /// call.
16080 20 41 6c 6c 20 68 69 64 64 65 6e 20 63 6f 6c 75   All hidden colu
16090 6d 6e 73 20 61 72 65 20 69 6e 63 6c 75 64 65 64  mns are included
160a0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a  ...        ///..
160b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e          /// When
160c0 20 64 6f 69 6e 67 20 61 6e 20 69 6e 73 65 72 74   doing an insert
160d0 20 77 69 74 68 6f 75 74 20 61 20 72 6f 77 69 64   without a rowid
160e0 20 28 61 72 67 63 3e 31 2c 20 61 72 67 76 5b 31   (argc>1, argv[1
160f0 5d 20 69 73 20 61 6e 20 53 51 4c 0d 0a 20 20 20  ] is an SQL..   
16100 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 4c 29 2c 20       /// NULL), 
16110 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  the implementati
16120 6f 6e 20 6d 75 73 74 20 73 65 74 20 2a 70 52 6f  on must set *pRo
16130 77 69 64 20 74 6f 20 74 68 65 20 72 6f 77 69 64  wid to the rowid
16140 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   of the..       
16150 20 2f 2f 2f 20 6e 65 77 6c 79 20 69 6e 73 65 72   /// newly inser
16160 74 65 64 20 72 6f 77 3b 20 74 68 69 73 20 77 69  ted row; this wi
16170 6c 6c 20 62 65 63 6f 6d 65 20 74 68 65 20 76 61  ll become the va
16180 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79 20  lue returned by 
16190 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
161a0 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e   sqlite3_last_in
161b0 73 65 72 74 5f 72 6f 77 69 64 28 29 20 66 75 6e  sert_rowid() fun
161c0 63 74 69 6f 6e 2e 20 53 65 74 74 69 6e 67 20 74  ction. Setting t
161d0 68 69 73 20 76 61 6c 75 65 20 69 6e 20 61 6c 6c  his value in all
161e0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
161f0 2f 20 6f 74 68 65 72 20 63 61 73 65 73 20 69 73  / other cases is
16200 20 61 20 68 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f   a harmless no-o
16210 70 3b 20 74 68 65 20 53 51 4c 69 74 65 20 65 6e  p; the SQLite en
16220 67 69 6e 65 20 69 67 6e 6f 72 65 73 20 74 68 65  gine ignores the
16230 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 2a 70  ..        /// *p
16240 52 6f 77 69 64 20 72 65 74 75 72 6e 20 76 61 6c  Rowid return val
16250 75 65 20 69 66 20 61 72 67 63 3d 3d 31 20 6f 72  ue if argc==1 or
16260 20 61 72 67 76 5b 31 5d 20 69 73 20 6e 6f 74 20   argv[1] is not 
16270 61 6e 20 53 51 4c 20 4e 55 4c 4c 2e 0d 0a 20 20  an SQL NULL...  
16280 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20        ///..     
16290 20 20 20 2f 2f 2f 20 45 61 63 68 20 63 61 6c 6c     /// Each call
162a0 20 74 6f 20 78 55 70 64 61 74 65 20 77 69 6c 6c   to xUpdate will
162b0 20 66 61 6c 6c 20 69 6e 74 6f 20 6f 6e 65 20 6f   fall into one o
162c0 66 20 63 61 73 65 73 20 73 68 6f 77 6e 20 62 65  f cases shown be
162d0 6c 6f 77 2e 20 4e 6f 74 65 0d 0a 20 20 20 20 20  low. Note..     
162e0 20 20 20 2f 2f 2f 20 74 68 61 74 20 72 65 66 65     /// that refe
162f0 72 65 6e 63 65 73 20 74 6f 20 61 72 67 76 5b 69  rences to argv[i
16300 5d 20 6d 65 61 6e 20 74 68 65 20 53 51 4c 20 76  ] mean the SQL v
16310 61 6c 75 65 20 68 65 6c 64 20 77 69 74 68 69 6e  alue held within
16320 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
16330 2f 20 61 72 67 76 5b 69 5d 20 6f 62 6a 65 63 74  / argv[i] object
16340 2c 20 6e 6f 74 20 74 68 65 20 61 72 67 76 5b 69  , not the argv[i
16350 5d 20 6f 62 6a 65 63 74 20 69 74 73 65 6c 66 2e  ] object itself.
16360 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20  ..        ///.. 
16370 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 61         ///     a
16380 72 67 63 20 3d 20 31 0d 0a 20 20 20 20 20 20 20  rgc = 1..       
16390 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f   ///..        //
163a0 2f 20 20 20 20 20 20 20 20 20 54 68 65 20 73 69  /         The si
163b0 6e 67 6c 65 20 72 6f 77 20 77 69 74 68 20 72 6f  ngle row with ro
163c0 77 69 64 20 65 71 75 61 6c 20 74 6f 20 61 72 67  wid equal to arg
163d0 76 5b 30 5d 20 69 73 20 64 65 6c 65 74 65 64 2e  v[0] is deleted.
163e0 20 4e 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   No..        ///
163f0 20 20 20 20 20 20 20 20 20 69 6e 73 65 72 74 20           insert 
16400 6f 63 63 75 72 73 2e 0d 0a 20 20 20 20 20 20 20  occurs...       
16410 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f   ///..        //
16420 2f 20 20 20 20 20 61 72 67 63 20 3e 20 31 0d 0a  /     argc > 1..
16430 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
16440 61 72 67 76 5b 30 5d 20 3d 20 4e 55 4c 4c 0d 0a  argv[0] = NULL..
16450 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20          ///..   
16460 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
16470 20 41 20 6e 65 77 20 72 6f 77 20 69 73 20 69 6e   A new row is in
16480 73 65 72 74 65 64 20 77 69 74 68 20 61 20 72 6f  serted with a ro
16490 77 69 64 20 61 72 67 76 5b 31 5d 20 61 6e 64 20  wid argv[1] and 
164a0 63 6f 6c 75 6d 6e 0d 0a 20 20 20 20 20 20 20 20  column..        
164b0 2f 2f 2f 20 20 20 20 20 20 20 20 20 76 61 6c 75  ///         valu
164c0 65 73 20 69 6e 20 61 72 67 76 5b 32 5d 20 61 6e  es in argv[2] an
164d0 64 20 66 6f 6c 6c 6f 77 69 6e 67 2e 20 49 66 20  d following. If 
164e0 61 72 67 76 5b 31 5d 20 69 73 20 61 6e 20 53 51  argv[1] is an SQ
164f0 4c 20 4e 55 4c 4c 2c 0d 0a 20 20 20 20 20 20 20  L NULL,..       
16500 20 2f 2f 2f 20 20 20 20 20 20 20 20 20 74 68 65   ///         the
16510 20 61 20 6e 65 77 20 75 6e 69 71 75 65 20 72 6f   a new unique ro
16520 77 69 64 20 69 73 20 67 65 6e 65 72 61 74 65 64  wid is generated
16530 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0d   automatically..
16540 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20  .        ///..  
16550 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 61 72        ///     ar
16560 67 63 20 3e 20 31 0d 0a 20 20 20 20 20 20 20 20  gc > 1..        
16570 2f 2f 2f 20 20 20 20 20 61 72 67 76 5b 30 5d 20  ///     argv[0] 
16580 3f 20 4e 55 4c 4c 0d 0a 20 20 20 20 20 20 20 20  ? NULL..        
16590 2f 2f 2f 20 20 20 20 20 61 72 67 76 5b 30 5d 20  ///     argv[0] 
165a0 3d 20 61 72 67 76 5b 31 5d 0d 0a 20 20 20 20 20  = argv[1]..     
165b0 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20     ///..        
165c0 2f 2f 2f 20 20 20 20 20 20 20 20 20 54 68 65 20  ///         The 
165d0 72 6f 77 20 77 69 74 68 20 72 6f 77 69 64 20 61  row with rowid a
165e0 72 67 76 5b 30 5d 20 69 73 20 75 70 64 61 74 65  rgv[0] is update
165f0 64 20 77 69 74 68 20 6e 65 77 20 76 61 6c 75 65  d with new value
16600 73 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s in..        //
16610 2f 20 20 20 20 20 20 20 20 20 61 72 67 76 5b 32  /         argv[2
16620 5d 20 61 6e 64 20 66 6f 6c 6c 6f 77 69 6e 67 20  ] and following 
16630 70 61 72 61 6d 65 74 65 72 73 2e 0d 0a 20 20 20  parameters...   
16640 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20       ///..      
16650 20 20 2f 2f 2f 20 20 20 20 20 61 72 67 63 20 3e    ///     argc >
16660 20 31 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   1..        /// 
16670 20 20 20 20 61 72 67 76 5b 30 5d 20 3f 20 4e 55      argv[0] ? NU
16680 4c 4c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  LL..        /// 
16690 20 20 20 20 61 72 67 76 5b 30 5d 20 3f 20 61 72      argv[0] ? ar
166a0 67 76 5b 31 5d 0d 0a 20 20 20 20 20 20 20 20 2f  gv[1]..        /
166b0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  //..        /// 
166c0 20 20 20 20 20 20 20 20 54 68 65 20 72 6f 77 20          The row 
166d0 77 69 74 68 20 72 6f 77 69 64 20 61 72 67 76 5b  with rowid argv[
166e0 30 5d 20 69 73 20 75 70 64 61 74 65 64 20 77 69  0] is updated wi
166f0 74 68 20 72 6f 77 69 64 20 61 72 67 76 5b 31 5d  th rowid argv[1]
16700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20  ..        ///   
16710 20 20 20 20 20 20 61 6e 64 20 6e 65 77 20 76 61        and new va
16720 6c 75 65 73 20 69 6e 20 61 72 67 76 5b 32 5d 20  lues in argv[2] 
16730 61 6e 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61  and following pa
16740 72 61 6d 65 74 65 72 73 2e 20 54 68 69 73 0d 0a  rameters. This..
16750 20 20 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20          ///     
16760 20 20 20 20 77 69 6c 6c 20 6f 63 63 75 72 20 77      will occur w
16770 68 65 6e 20 61 6e 20 53 51 4c 20 73 74 61 74 65  hen an SQL state
16780 6d 65 6e 74 20 75 70 64 61 74 65 73 20 61 20 72  ment updates a r
16790 6f 77 69 64 2c 20 61 73 20 69 6e 0d 0a 20 20 20  owid, as in..   
167a0 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20 20       ///        
167b0 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 3a 0d   the statement:.
167c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20  .        ///..  
167d0 20 20 20 20 20 20 2f 2f 2f 20 20 20 20 20 20 20        ///       
167e0 20 20 20 20 20 20 55 50 44 41 54 45 20 74 61 62        UPDATE tab
167f0 6c 65 20 53 45 54 20 72 6f 77 69 64 3d 72 6f 77  le SET rowid=row
16800 69 64 2b 31 20 57 48 45 52 45 20 2e 2e 2e 3b 0d  id+1 WHERE ...;.
16810 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20  .        ///..  
16820 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 55        /// The xU
16830 70 64 61 74 65 20 6d 65 74 68 6f 64 20 6d 75 73  pdate method mus
16840 74 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f  t return SQLITE_
16850 4f 4b 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69  OK if and only i
16860 66 20 69 74 20 69 73 0d 0a 20 20 20 20 20 20 20  f it is..       
16870 20 2f 2f 2f 20 73 75 63 63 65 73 73 66 75 6c 2e   /// successful.
16880 20 49 66 20 61 20 66 61 69 6c 75 72 65 20 6f 63   If a failure oc
16890 63 75 72 73 2c 20 74 68 65 20 78 55 70 64 61 74  curs, the xUpdat
168a0 65 20 6d 75 73 74 20 72 65 74 75 72 6e 20 61 6e  e must return an
168b0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 70  ..        /// ap
168c0 70 72 6f 70 72 69 61 74 65 20 65 72 72 6f 72 20  propriate error 
168d0 63 6f 64 65 2e 20 4f 6e 20 61 20 66 61 69 6c 75  code. On a failu
168e0 72 65 2c 20 74 68 65 20 70 56 54 61 62 2d 3e 7a  re, the pVTab->z
168f0 45 72 72 4d 73 67 20 65 6c 65 6d 65 6e 74 0d 0a  ErrMsg element..
16900 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 61 79 20          /// may 
16910 6f 70 74 69 6f 6e 61 6c 6c 79 20 62 65 20 72 65  optionally be re
16920 70 6c 61 63 65 64 20 77 69 74 68 20 65 72 72 6f  placed with erro
16930 72 20 6d 65 73 73 61 67 65 20 74 65 78 74 20 73  r message text s
16940 74 6f 72 65 64 20 69 6e 20 6d 65 6d 6f 72 79 0d  tored in memory.
16950 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c  .        /// all
16960 6f 63 61 74 65 64 20 66 72 6f 6d 20 53 51 4c 69  ocated from SQLi
16970 74 65 20 75 73 69 6e 67 20 66 75 6e 63 74 69 6f  te using functio
16980 6e 73 20 73 75 63 68 20 61 73 20 73 71 6c 69 74  ns such as sqlit
16990 65 33 5f 6d 70 72 69 6e 74 66 28 29 20 6f 72 0d  e3_mprintf() or.
169a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 71 6c  .        /// sql
169b0 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 2e 0d 0a  ite3_malloc()...
169c0 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20          ///..   
169d0 20 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20       /// If the 
169e0 78 55 70 64 61 74 65 20 6d 65 74 68 6f 64 20 76  xUpdate method v
169f0 69 6f 6c 61 74 65 73 20 73 6f 6d 65 20 63 6f 6e  iolates some con
16a00 73 74 72 61 69 6e 74 20 6f 66 20 74 68 65 20 76  straint of the v
16a10 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20  irtual table..  
16a20 20 20 20 20 20 20 2f 2f 2f 20 28 69 6e 63 6c 75        /// (inclu
16a30 64 69 6e 67 2c 20 62 75 74 20 6e 6f 74 20 6c 69  ding, but not li
16a40 6d 69 74 65 64 20 74 6f 2c 20 61 74 74 65 6d 70  mited to, attemp
16a50 74 69 6e 67 20 74 6f 20 73 74 6f 72 65 20 61 20  ting to store a 
16a60 76 61 6c 75 65 20 6f 66 20 74 68 65 0d 0a 20 20  value of the..  
16a70 20 20 20 20 20 20 2f 2f 2f 20 77 72 6f 6e 67 20        /// wrong 
16a80 64 61 74 61 74 79 70 65 2c 20 61 74 74 65 6d 70  datatype, attemp
16a90 74 69 6e 67 20 74 6f 20 73 74 6f 72 65 20 61 20  ting to store a 
16aa0 76 61 6c 75 65 20 74 68 61 74 20 69 73 20 74 6f  value that is to
16ab0 6f 20 6c 61 72 67 65 20 6f 72 0d 0a 20 20 20 20  o large or..    
16ac0 20 20 20 20 2f 2f 2f 20 74 6f 6f 20 73 6d 61 6c      /// too smal
16ad0 6c 2c 20 6f 72 20 61 74 74 65 6d 70 74 69 6e 67  l, or attempting
16ae0 20 74 6f 20 63 68 61 6e 67 65 20 61 20 72 65 61   to change a rea
16af0 64 2d 6f 6e 6c 79 20 76 61 6c 75 65 29 20 74 68  d-only value) th
16b00 65 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  en the..        
16b10 2f 2f 2f 20 78 55 70 64 61 74 65 20 6d 75 73 74  /// xUpdate must
16b20 20 66 61 69 6c 20 77 69 74 68 20 61 6e 20 61 70   fail with an ap
16b30 70 72 6f 70 72 69 61 74 65 20 65 72 72 6f 72 20  propriate error 
16b40 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
16b50 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  //..        /// 
16b60 54 68 65 72 65 20 6d 69 67 68 74 20 62 65 20 6f  There might be o
16b70 6e 65 20 6f 72 20 6d 6f 72 65 20 73 71 6c 69 74  ne or more sqlit
16b80 65 33 5f 76 74 61 62 5f 63 75 72 73 6f 72 20 6f  e3_vtab_cursor o
16b90 62 6a 65 63 74 73 20 6f 70 65 6e 20 61 6e 64 20  bjects open and 
16ba0 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  in..        /// 
16bb0 75 73 65 20 6f 6e 20 74 68 65 20 76 69 72 74 75  use on the virtu
16bc0 61 6c 20 74 61 62 6c 65 20 69 6e 73 74 61 6e 63  al table instanc
16bd0 65 20 61 6e 64 20 70 65 72 68 61 70 73 20 65 76  e and perhaps ev
16be0 65 6e 20 6f 6e 20 74 68 65 20 72 6f 77 20 6f 66  en on the row of
16bf0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
16c00 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
16c10 77 68 65 6e 20 74 68 65 20 78 55 70 64 61 74 65  when the xUpdate
16c20 20 6d 65 74 68 6f 64 20 69 73 20 69 6e 76 6f 6b   method is invok
16c30 65 64 2e 20 54 68 65 0d 0a 20 20 20 20 20 20 20  ed. The..       
16c40 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   /// implementat
16c50 69 6f 6e 20 6f 66 20 78 55 70 64 61 74 65 20 6d  ion of xUpdate m
16c60 75 73 74 20 62 65 20 70 72 65 70 61 72 65 64 20  ust be prepared 
16c70 66 6f 72 20 61 74 74 65 6d 70 74 73 20 74 6f 20  for attempts to 
16c80 64 65 6c 65 74 65 0d 0a 20 20 20 20 20 20 20 20  delete..        
16c90 2f 2f 2f 20 6f 72 20 6d 6f 64 69 66 79 20 72 6f  /// or modify ro
16ca0 77 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  ws of the table 
16cb0 6f 75 74 20 66 72 6f 6d 20 6f 74 68 65 72 20 65  out from other e
16cc0 78 69 73 74 69 6e 67 20 63 75 72 73 6f 72 73 2e  xisting cursors.
16cd0 20 49 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20   If the..       
16ce0 20 2f 2f 2f 20 76 69 72 74 75 61 6c 20 74 61 62   /// virtual tab
16cf0 6c 65 20 63 61 6e 6e 6f 74 20 61 63 63 6f 6d 6d  le cannot accomm
16d00 6f 64 61 74 65 20 73 75 63 68 20 63 68 61 6e 67  odate such chang
16d10 65 73 2c 20 74 68 65 20 78 55 70 64 61 74 65 20  es, the xUpdate 
16d20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20 20 20 20  method..        
16d30 2f 2f 2f 20 6d 75 73 74 20 72 65 74 75 72 6e 20  /// must return 
16d40 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 2e 0d 0a  an error code...
16d50 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20          ///..   
16d60 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 78 55 70       /// The xUp
16d70 64 61 74 65 20 6d 65 74 68 6f 64 20 69 73 20 6f  date method is o
16d80 70 74 69 6f 6e 61 6c 2e 20 49 66 20 74 68 65 20  ptional. If the 
16d90 78 55 70 64 61 74 65 20 70 6f 69 6e 74 65 72 20  xUpdate pointer 
16da0 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
16db0 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  /// sqlite3_modu
16dc0 6c 65 20 66 6f 72 20 61 20 76 69 72 74 75 61 6c  le for a virtual
16dd0 20 74 61 62 6c 65 20 69 73 20 61 20 4e 55 4c 4c   table is a NULL
16de0 20 70 6f 69 6e 74 65 72 2c 20 74 68 65 6e 20 74   pointer, then t
16df0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
16e00 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73  virtual table is
16e10 20 72 65 61 64 2d 6f 6e 6c 79 2e 0d 0a 20 20 20   read-only...   
16e20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
16e30 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
16e40 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56   <param name="pV
16e50 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  tab">..        /
16e60 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f  // The native po
16e70 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  inter to the sql
16e80 69 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65  ite3_vtab derive
16e90 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20  d structure...  
16ea0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
16eb0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
16ec0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
16ed0 63 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  c">..        ///
16ee0 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6e   The number of n
16ef0 65 77 20 6f 72 20 6d 6f 64 69 66 69 65 64 20 63  ew or modified c
16f00 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 63 6f 6e  olumn values con
16f10 74 61 69 6e 65 64 20 69 6e 0d 0a 20 20 20 20 20  tained in..     
16f20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66     /// <paramref
16f30 20 6e 61 6d 65 3d 22 61 72 67 76 22 20 2f 3e 2e   name="argv" />.
16f40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
16f50 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
16f60 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
16f70 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
16f80 20 2f 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f   /// The array o
16f90 66 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72  f native pointer
16fa0 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 76 61 6c  s to sqlite3_val
16fb0 75 65 20 73 74 72 75 63 74 75 72 65 73 20 63 6f  ue structures co
16fc0 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20  ntaining..      
16fd0 20 20 2f 2f 2f 20 74 68 65 20 6e 65 77 20 6f 72    /// the new or
16fe0 20 6d 6f 64 69 66 69 65 64 20 63 6f 6c 75 6d 6e   modified column
16ff0 20 76 61 6c 75 65 73 2c 20 69 66 20 61 6e 79 2e   values, if any.
17000 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
17010 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
17020 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
17030 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20  "rowId">..      
17040 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65    /// Upon succe
17050 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  ss, this paramet
17060 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66  er must be modif
17070 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74  ied to contain t
17080 68 65 20 75 6e 69 71 75 65 0d 0a 20 20 20 20 20  he unique..     
17090 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72     /// integer r
170a0 6f 77 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f  ow identifier fo
170b0 72 20 74 68 65 20 72 6f 77 20 74 68 61 74 20 77  r the row that w
170c0 61 73 20 69 6e 73 65 72 74 65 64 2c 20 69 66 20  as inserted, if 
170d0 61 6e 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  any...        //
170e0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
170f0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
17100 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
17110 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
17120 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
17130 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
17140 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
17150 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
17160 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20  Update(..       
17170 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
17180 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
17190 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20 20 20 20  int argc,..     
171a0 20 20 20 20 20 20 20 49 6e 74 50 74 72 5b 5d 20         IntPtr[] 
171b0 61 72 67 76 2c 0d 0a 20 20 20 20 20 20 20 20 20  argv,..         
171c0 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49     ref long rowI
171d0 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  d..            )
171e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
171f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17230 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
17240 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17250 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
17260 6d 65 74 68 6f 64 20 62 65 67 69 6e 73 20 61 20  method begins a 
17270 74 72 61 6e 73 61 63 74 69 6f 6e 20 6f 6e 20 61  transaction on a
17280 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20   virtual table. 
17290 54 68 69 73 20 69 73 20 6d 65 74 68 6f 64 0d 0a  This is method..
172a0 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 6f          /// is o
172b0 70 74 69 6f 6e 61 6c 2e 20 54 68 65 20 78 42 65  ptional. The xBe
172c0 67 69 6e 20 70 6f 69 6e 74 65 72 20 6f 66 20 73  gin pointer of s
172d0 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 61  qlite3_module ma
172e0 79 20 62 65 20 4e 55 4c 4c 2e 0d 0a 20 20 20 20  y be NULL...    
172f0 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20      ///..       
17300 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
17310 20 69 73 20 61 6c 77 61 79 73 20 66 6f 6c 6c 6f   is always follo
17320 77 65 64 20 62 79 20 6f 6e 65 20 63 61 6c 6c 20  wed by one call 
17330 74 6f 20 65 69 74 68 65 72 20 74 68 65 20 78 43  to either the xC
17340 6f 6d 6d 69 74 20 6f 72 0d 0a 20 20 20 20 20 20  ommit or..      
17350 20 20 2f 2f 2f 20 78 52 6f 6c 6c 62 61 63 6b 20    /// xRollback 
17360 6d 65 74 68 6f 64 2e 20 56 69 72 74 75 61 6c 20  method. Virtual 
17370 74 61 62 6c 65 20 74 72 61 6e 73 61 63 74 69 6f  table transactio
17380 6e 73 20 64 6f 20 6e 6f 74 20 6e 65 73 74 2c 20  ns do not nest, 
17390 73 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  so the..        
173a0 2f 2f 2f 20 78 42 65 67 69 6e 20 6d 65 74 68 6f  /// xBegin metho
173b0 64 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 69 6e  d will not be in
173c0 76 6f 6b 65 64 20 6d 6f 72 65 20 74 68 61 6e 20  voked more than 
173d0 6f 6e 63 65 20 6f 6e 20 61 20 73 69 6e 67 6c 65  once on a single
173e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69  ..        /// vi
173f0 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69 74 68  rtual table with
17400 6f 75 74 20 61 6e 20 69 6e 74 65 72 76 65 6e 69  out an interveni
17410 6e 67 20 63 61 6c 6c 20 74 6f 20 65 69 74 68 65  ng call to eithe
17420 72 20 78 43 6f 6d 6d 69 74 20 6f 72 0d 0a 20 20  r xCommit or..  
17430 20 20 20 20 20 20 2f 2f 2f 20 78 52 6f 6c 6c 62        /// xRollb
17440 61 63 6b 2e 20 4d 75 6c 74 69 70 6c 65 20 63 61  ack. Multiple ca
17450 6c 6c 73 20 74 6f 20 6f 74 68 65 72 20 6d 65 74  lls to other met
17460 68 6f 64 73 20 63 61 6e 20 61 6e 64 20 6c 69 6b  hods can and lik
17470 65 6c 79 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20  ely will..      
17480 20 20 2f 2f 2f 20 6f 63 63 75 72 20 69 6e 20 62    /// occur in b
17490 65 74 77 65 65 6e 20 74 68 65 20 78 42 65 67 69  etween the xBegi
174a0 6e 20 61 6e 64 20 74 68 65 20 63 6f 72 72 65 73  n and the corres
174b0 70 6f 6e 64 69 6e 67 20 78 43 6f 6d 6d 69 74 20  ponding xCommit 
174c0 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  or..        /// 
174d0 78 52 6f 6c 6c 62 61 63 6b 2e 0d 0a 20 20 20 20  xRollback...    
174e0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
174f0 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
17500 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74  <param name="pVt
17510 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ab">..        //
17520 2f 20 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69  / The native poi
17530 6e 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69  nter to the sqli
17540 74 65 33 5f 76 74 61 62 20 64 65 72 69 76 65 64  te3_vtab derived
17550 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20   structure...   
17560 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
17570 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
17580 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
17590 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
175a0 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
175b0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
175c0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
175d0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
175e0 72 43 6f 64 65 20 78 42 65 67 69 6e 28 0d 0a 20  rCode xBegin(.. 
175f0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
17600 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
17610 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
17620 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
17630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
17670 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
17680 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
17690 20 54 68 69 73 20 6d 65 74 68 6f 64 20 73 69 67   This method sig
176a0 6e 61 6c 73 20 74 68 65 20 73 74 61 72 74 20 6f  nals the start o
176b0 66 20 61 20 74 77 6f 2d 70 68 61 73 65 20 63 6f  f a two-phase co
176c0 6d 6d 69 74 20 6f 6e 20 61 20 76 69 72 74 75 61  mmit on a virtua
176d0 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74  l..        /// t
176e0 61 62 6c 65 2e 20 54 68 69 73 20 69 73 20 6d 65  able. This is me
176f0 74 68 6f 64 20 69 73 20 6f 70 74 69 6f 6e 61 6c  thod is optional
17700 2e 20 54 68 65 20 78 53 79 6e 63 20 70 6f 69 6e  . The xSync poin
17710 74 65 72 20 6f 66 0d 0a 20 20 20 20 20 20 20 20  ter of..        
17720 2f 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 6f 64 75  /// sqlite3_modu
17730 6c 65 20 6d 61 79 20 62 65 20 4e 55 4c 4c 2e 0d  le may be NULL..
17740 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20  .        ///..  
17750 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
17760 65 74 68 6f 64 20 69 73 20 6f 6e 6c 79 20 69 6e  ethod is only in
17770 76 6f 6b 65 64 20 61 66 74 65 72 20 63 61 6c 6c  voked after call
17780 20 74 6f 20 74 68 65 20 78 42 65 67 69 6e 20 6d   to the xBegin m
17790 65 74 68 6f 64 20 61 6e 64 0d 0a 20 20 20 20 20  ethod and..     
177a0 20 20 20 2f 2f 2f 20 70 72 69 6f 72 20 74 6f 20     /// prior to 
177b0 61 6e 20 78 43 6f 6d 6d 69 74 20 6f 72 20 78 52  an xCommit or xR
177c0 6f 6c 6c 62 61 63 6b 2e 20 49 6e 20 6f 72 64 65  ollback. In orde
177d0 72 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74  r to implement t
177e0 77 6f 2d 70 68 61 73 65 0d 0a 20 20 20 20 20 20  wo-phase..      
177f0 20 20 2f 2f 2f 20 63 6f 6d 6d 69 74 2c 20 74 68    /// commit, th
17800 65 20 78 53 79 6e 63 20 6d 65 74 68 6f 64 20 6f  e xSync method o
17810 6e 20 61 6c 6c 20 76 69 72 74 75 61 6c 20 74 61  n all virtual ta
17820 62 6c 65 73 20 69 73 20 69 6e 76 6f 6b 65 64 20  bles is invoked 
17830 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20 20 20 20  prior to..      
17840 20 20 2f 2f 2f 20 69 6e 76 6f 6b 69 6e 67 20 74    /// invoking t
17850 68 65 20 78 43 6f 6d 6d 69 74 20 6d 65 74 68 6f  he xCommit metho
17860 64 20 6f 6e 20 61 6e 79 20 76 69 72 74 75 61 6c  d on any virtual
17870 20 74 61 62 6c 65 2e 20 49 66 20 61 6e 79 20 6f   table. If any o
17880 66 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  f the..        /
17890 2f 2f 20 78 53 79 6e 63 20 6d 65 74 68 6f 64 73  // xSync methods
178a0 20 66 61 69 6c 2c 20 74 68 65 20 65 6e 74 69 72   fail, the entir
178b0 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73  e transaction is
178c0 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 0d 0a 20   rolled back... 
178d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
178e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
178f0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
17900 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20  pVtab">..       
17910 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65 20   /// The native 
17920 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 73  pointer to the s
17930 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72 69  qlite3_vtab deri
17940 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d 0a  ved structure...
17950 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
17960 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
17970 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
17980 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
17990 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
179a0 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
179b0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
179c0 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
179d0 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d  rrorCode xSync(.
179e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
179f0 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20  Ptr pVtab..     
17a00 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
17a10 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
17a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17a60 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
17a70 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
17a80 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 63  // This method c
17a90 61 75 73 65 73 20 61 20 76 69 72 74 75 61 6c 20  auses a virtual 
17aa0 74 61 62 6c 65 20 74 72 61 6e 73 61 63 74 69 6f  table transactio
17ab0 6e 20 74 6f 20 63 6f 6d 6d 69 74 2e 20 54 68 69  n to commit. Thi
17ac0 73 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f  s is..        //
17ad0 2f 20 6d 65 74 68 6f 64 20 69 73 20 6f 70 74 69  / method is opti
17ae0 6f 6e 61 6c 2e 20 54 68 65 20 78 43 6f 6d 6d 69  onal. The xCommi
17af0 74 20 70 6f 69 6e 74 65 72 20 6f 66 20 73 71 6c  t pointer of sql
17b00 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6d 61 79 20  ite3_module may 
17b10 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  be..        /// 
17b20 4e 55 4c 4c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  NULL...        /
17b30 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  //..        /// 
17b40 41 20 63 61 6c 6c 20 74 6f 20 74 68 69 73 20 6d  A call to this m
17b50 65 74 68 6f 64 20 61 6c 77 61 79 73 20 66 6f 6c  ethod always fol
17b60 6c 6f 77 73 20 61 20 70 72 69 6f 72 20 63 61 6c  lows a prior cal
17b70 6c 20 74 6f 20 78 42 65 67 69 6e 20 61 6e 64 0d  l to xBegin and.
17b80 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 53 79  .        /// xSy
17b90 6e 63 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  nc...        ///
17ba0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
17bb0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
17bc0 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
17bd0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
17be0 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74 6f  ative pointer to
17bf0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74 61   the sqlite3_vta
17c00 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63 74  b derived struct
17c10 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ure...        //
17c20 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
17c30 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
17c40 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
17c50 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
17c60 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
17c70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
17c80 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
17c90 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
17ca0 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20 20  Commit(..       
17cb0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
17cc0 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  b..            )
17cd0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
17ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d20 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
17d30 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17d40 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
17d50 6d 65 74 68 6f 64 20 63 61 75 73 65 73 20 61 20  method causes a 
17d60 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 74 72  virtual table tr
17d70 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20 72 6f 6c  ansaction to rol
17d80 6c 62 61 63 6b 2e 20 54 68 69 73 20 69 73 0d 0a  lback. This is..
17d90 20 20 20 20 20 20 20 20 2f 2f 2f 20 6d 65 74 68          /// meth
17da0 6f 64 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20  od is optional. 
17db0 54 68 65 20 78 52 6f 6c 6c 62 61 63 6b 20 70 6f  The xRollback po
17dc0 69 6e 74 65 72 20 6f 66 20 73 71 6c 69 74 65 33  inter of sqlite3
17dd0 5f 6d 6f 64 75 6c 65 20 6d 61 79 20 62 65 0d 0a  _module may be..
17de0 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e 55 4c 4c          /// NULL
17df0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a  ...        ///..
17e00 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 63 61          /// A ca
17e10 6c 6c 20 74 6f 20 74 68 69 73 20 6d 65 74 68 6f  ll to this metho
17e20 64 20 61 6c 77 61 79 73 20 66 6f 6c 6c 6f 77 73  d always follows
17e30 20 61 20 70 72 69 6f 72 20 63 61 6c 6c 20 74 6f   a prior call to
17e40 20 78 42 65 67 69 6e 2e 0d 0a 20 20 20 20 20 20   xBegin...      
17e50 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
17e60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
17e70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
17e80 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
17e90 54 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74  The native point
17ea0 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  er to the sqlite
17eb0 33 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73  3_vtab derived s
17ec0 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
17ed0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
17ee0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65  .        /// <re
17ef0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
17f00 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53  /// A standard S
17f10 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64  QLite return cod
17f20 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
17f30 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
17f40 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
17f50 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a  ode xRollback(..
17f60 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
17f70 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
17f80 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
17f90 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
17fe0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
17ff0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
18000 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 70 72  / This method pr
18010 6f 76 69 64 65 73 20 6e 6f 74 69 66 69 63 61 74  ovides notificat
18020 69 6f 6e 20 74 68 61 74 20 74 68 65 20 76 69 72  ion that the vir
18030 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
18040 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
18050 74 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20  tation that the 
18060 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69  virtual table wi
18070 6c 6c 20 62 65 20 67 69 76 65 6e 20 61 20 6e 65  ll be given a ne
18080 77 20 6e 61 6d 65 2e 20 49 66 0d 0a 20 20 20 20  w name. If..    
18090 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 6d 65 74      /// this met
180a0 68 6f 64 20 72 65 74 75 72 6e 73 20 53 51 4c 49  hod returns SQLI
180b0 54 45 5f 4f 4b 20 74 68 65 6e 20 53 51 4c 69 74  TE_OK then SQLit
180c0 65 20 72 65 6e 61 6d 65 73 20 74 68 65 20 74 61  e renames the ta
180d0 62 6c 65 2e 20 49 66 0d 0a 20 20 20 20 20 20 20  ble. If..       
180e0 20 2f 2f 2f 20 74 68 69 73 20 6d 65 74 68 6f 64   /// this method
180f0 20 72 65 74 75 72 6e 73 20 61 6e 20 65 72 72 6f   returns an erro
18100 72 20 63 6f 64 65 20 74 68 65 6e 20 74 68 65 20  r code then the 
18110 72 65 6e 61 6d 69 6e 67 20 69 73 20 70 72 65 76  renaming is prev
18120 65 6e 74 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  ented...        
18130 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ///..        ///
18140 20 54 68 65 20 78 52 65 6e 61 6d 65 20 6d 65 74   The xRename met
18150 68 6f 64 20 69 73 20 72 65 71 75 69 72 65 64 20  hod is required 
18160 66 6f 72 20 65 76 65 72 79 20 76 69 72 74 75 61  for every virtua
18170 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20 20  l table..       
18180 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   /// implementat
18190 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
181a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
181b0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
181c0 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
181d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
181e0 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
181f0 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
18200 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
18210 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
18220 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
18230 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
18240 6e 61 6d 65 3d 22 6e 41 72 67 22 3e 0d 0a 20 20  name="nArg">..  
18250 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75        /// The nu
18260 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74  mber of argument
18270 73 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69 6f  s to the functio
18280 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74 2e 0d  n being sought..
18290 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
182a0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
182b0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
182c0 7a 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20  zName">..       
182d0 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
182e0 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 62 65   the function be
182f0 69 6e 67 20 73 6f 75 67 68 74 2e 0d 0a 20 20 20  ing sought...   
18300 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
18310 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
18320 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 61 6c 6c  param name="call
18330 62 61 63 6b 22 3e 0d 0a 20 20 20 20 20 20 20 20  back">..        
18340 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
18350 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
18360 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
18370 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
18380 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 65  ..        /// de
18390 6c 65 67 61 74 65 20 72 65 73 70 6f 6e 73 69 62  legate responsib
183a0 6c 65 20 66 6f 72 20 69 6d 70 6c 65 6d 65 6e 74  le for implement
183b0 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65  ing the specifie
183c0 64 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20  d function...   
183d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
183e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
183f0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69  param name="pCli
18400 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20  entData">..     
18410 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
18420 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
18430 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
18440 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20  fied to contain 
18450 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
18460 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61 74   native user-dat
18470 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63 69  a pointer associ
18480 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20  ated with..     
18490 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72 65 66     /// <paramref
184a0 20 6e 61 6d 65 3d 22 63 61 6c 6c 62 61 63 6b 22   name="callback"
184b0 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f   />...        //
184c0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
184d0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
184e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
184f0 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73  on-zero if the s
18500 70 65 63 69 66 69 65 64 20 66 75 6e 63 74 69 6f  pecified functio
18510 6e 20 77 61 73 20 66 6f 75 6e 64 3b 20 7a 65 72  n was found; zer
18520 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20  o otherwise...  
18530 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
18540 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 69 6e  rns>..        in
18550 74 20 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  t xFindFunction(
18560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
18570 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
18580 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 41 72           int nAr
18590 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g,..            
185a0 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20  IntPtr zName,.. 
185b0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53             ref S
185c0 51 4c 69 74 65 43 61 6c 6c 62 61 63 6b 20 63 61  QLiteCallback ca
185d0 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
185e0 20 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20       ref IntPtr 
185f0 70 43 6c 69 65 6e 74 44 61 74 61 0d 0a 20 20 20  pClientData..   
18600 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
18610 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
18620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
18660 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
18670 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
18680 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
18690 20 70 72 6f 76 69 64 65 73 20 6e 6f 74 69 66 69   provides notifi
186a0 63 61 74 69 6f 6e 20 74 68 61 74 20 74 68 65 20  cation that the 
186b0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20  virtual table.. 
186c0 20 20 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65         /// imple
186d0 6d 65 6e 74 61 74 69 6f 6e 20 74 68 61 74 20 74  mentation that t
186e0 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
186f0 20 77 69 6c 6c 20 62 65 20 67 69 76 65 6e 20 61   will be given a
18700 20 6e 65 77 20 6e 61 6d 65 2e 20 49 66 0d 0a 20   new name. If.. 
18710 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 69 73 20         /// this 
18720 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20 53  method returns S
18730 51 4c 49 54 45 5f 4f 4b 20 74 68 65 6e 20 53 51  QLITE_OK then SQ
18740 4c 69 74 65 20 72 65 6e 61 6d 65 73 20 74 68 65  Lite renames the
18750 20 74 61 62 6c 65 2e 20 49 66 0d 0a 20 20 20 20   table. If..    
18760 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 6d 65 74      /// this met
18770 68 6f 64 20 72 65 74 75 72 6e 73 20 61 6e 20 65  hod returns an e
18780 72 72 6f 72 20 63 6f 64 65 20 74 68 65 6e 20 74  rror code then t
18790 68 65 20 72 65 6e 61 6d 69 6e 67 20 69 73 20 70  he renaming is p
187a0 72 65 76 65 6e 74 65 64 2e 0d 0a 20 20 20 20 20  revented...     
187b0 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20     ///..        
187c0 2f 2f 2f 20 54 68 65 20 78 52 65 6e 61 6d 65 20  /// The xRename 
187d0 6d 65 74 68 6f 64 20 69 73 20 72 65 71 75 69 72  method is requir
187e0 65 64 20 66 6f 72 20 65 76 65 72 79 20 76 69 72  ed for every vir
187f0 74 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20  tual table..    
18800 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65 6e      /// implemen
18810 74 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  tation...       
18820 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
18830 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
18840 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
18850 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
18860 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
18870 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
18880 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
18890 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
188a0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
188b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
188c0 61 6d 20 6e 61 6d 65 3d 22 7a 4e 65 77 22 3e 0d  am name="zNew">.
188d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
188e0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
188f0 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63  to the UTF-8 enc
18900 6f 64 65 64 20 73 74 72 69 6e 67 20 63 6f 6e 74  oded string cont
18910 61 69 6e 69 6e 67 20 74 68 65 20 6e 65 77 0d 0a  aining the new..
18920 20 20 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65          /// name
18930 20 66 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c   for the virtual
18940 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
18950 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
18960 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75         /// <retu
18970 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rns>..        //
18980 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c  / A standard SQL
18990 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
189a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
189b0 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
189c0 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
189d0 65 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20  e xRename(..    
189e0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
189f0 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20  Vtab,..         
18a00 20 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a     IntPtr zNew..
18a10 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
18a20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
18a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a70 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
18a80 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
18a90 20 20 20 20 2f 2f 2f 20 54 68 65 73 65 20 6d 65      /// These me
18aa0 74 68 6f 64 73 20 70 72 6f 76 69 64 65 20 74 68  thods provide th
18ab0 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
18ac0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 61  implementation a
18ad0 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 6f  n..        /// o
18ae0 70 70 6f 72 74 75 6e 69 74 79 20 74 6f 20 69 6d  pportunity to im
18af0 70 6c 65 6d 65 6e 74 20 6e 65 73 74 65 64 20 74  plement nested t
18b00 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 54 68 65  ransactions. The
18b10 79 20 61 72 65 20 61 6c 77 61 79 73 0d 0a 20 20  y are always..  
18b20 20 20 20 20 20 20 2f 2f 2f 20 6f 70 74 69 6f 6e        /// option
18b30 61 6c 20 61 6e 64 20 77 69 6c 6c 20 6f 6e 6c 79  al and will only
18b40 20 62 65 20 63 61 6c 6c 65 64 20 69 6e 20 53 51   be called in SQ
18b50 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37  Lite version 3.7
18b60 2e 37 20 61 6e 64 20 6c 61 74 65 72 2e 0d 0a 20  .7 and later... 
18b70 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20         ///..    
18b80 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 78 53 61      /// When xSa
18b90 76 65 70 6f 69 6e 74 28 58 2c 4e 29 20 69 73 20  vepoint(X,N) is 
18ba0 69 6e 76 6f 6b 65 64 2c 20 74 68 61 74 20 69 73  invoked, that is
18bb0 20 61 20 73 69 67 6e 61 6c 20 74 6f 20 74 68 65   a signal to the
18bc0 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20 20   virtual..      
18bd0 20 20 2f 2f 2f 20 74 61 62 6c 65 20 58 20 74 68    /// table X th
18be0 61 74 20 69 74 20 73 68 6f 75 6c 64 20 73 61 76  at it should sav
18bf0 65 20 69 74 73 20 63 75 72 72 65 6e 74 20 73 74  e its current st
18c00 61 74 65 20 61 73 20 73 61 76 65 70 6f 69 6e 74  ate as savepoint
18c10 20 4e 2e 20 41 0d 0a 20 20 20 20 20 20 20 20 2f   N. A..        /
18c20 2f 2f 20 73 75 62 73 65 71 75 65 6e 74 20 63 61  // subsequent ca
18c30 6c 6c 20 74 6f 20 78 52 6f 6c 6c 62 61 63 6b 54  ll to xRollbackT
18c40 6f 28 58 2c 52 29 20 6d 65 61 6e 73 20 74 68 61  o(X,R) means tha
18c50 74 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74  t the state of t
18c60 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
18c70 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 73 68  virtual table sh
18c80 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 6f 20 77  ould return to w
18c90 68 61 74 20 69 74 20 77 61 73 20 77 68 65 6e 20  hat it was when 
18ca0 78 53 61 76 65 70 6f 69 6e 74 28 58 2c 52 29 20  xSavepoint(X,R) 
18cb0 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  was..        ///
18cc0 20 6c 61 73 74 20 63 61 6c 6c 65 64 2e 20 54 68   last called. Th
18cd0 65 20 63 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c 62  e call to xRollb
18ce0 61 63 6b 54 6f 28 58 2c 52 29 20 77 69 6c 6c 20  ackTo(X,R) will 
18cf0 69 6e 76 61 6c 69 64 61 74 65 20 61 6c 6c 0d 0a  invalidate all..
18d00 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 61 76 65          /// save
18d10 70 6f 69 6e 74 73 20 77 69 74 68 20 4e 3e 52 3b  points with N>R;
18d20 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 69 6e 76   none of the inv
18d30 61 6c 69 64 65 64 20 73 61 76 65 70 6f 69 6e 74  alided savepoint
18d40 73 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20  s will be..     
18d50 20 20 20 2f 2f 2f 20 72 6f 6c 6c 65 64 20 62 61     /// rolled ba
18d60 63 6b 20 6f 72 20 72 65 6c 65 61 73 65 64 20 77  ck or released w
18d70 69 74 68 6f 75 74 20 66 69 72 73 74 20 62 65 69  ithout first bei
18d80 6e 67 20 72 65 69 6e 69 74 69 61 6c 69 7a 65 64  ng reinitialized
18d90 20 62 79 20 61 20 63 61 6c 6c 0d 0a 20 20 20 20   by a call..    
18da0 20 20 20 20 2f 2f 2f 20 74 6f 20 78 53 61 76 65      /// to xSave
18db0 70 6f 69 6e 74 28 29 2e 20 41 20 63 61 6c 6c 20  point(). A call 
18dc0 74 6f 20 78 52 65 6c 65 61 73 65 28 58 2c 4d 29  to xRelease(X,M)
18dd0 20 69 6e 76 61 6c 69 64 61 74 65 73 20 61 6c 6c   invalidates all
18de0 20 73 61 76 65 70 6f 69 6e 74 73 0d 0a 20 20 20   savepoints..   
18df0 20 20 20 20 20 2f 2f 2f 20 77 68 65 72 65 20 4e       /// where N
18e00 3e 3d 4d 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  >=M...        //
18e10 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  /..        /// N
18e20 6f 6e 65 20 6f 66 20 74 68 65 20 78 53 61 76 65  one of the xSave
18e30 70 6f 69 6e 74 28 29 2c 20 78 52 65 6c 65 61 73  point(), xReleas
18e40 65 28 29 2c 20 6f 72 20 78 52 6f 6c 6c 62 61 63  e(), or xRollbac
18e50 6b 54 6f 28 29 20 6d 65 74 68 6f 64 73 20 77 69  kTo() methods wi
18e60 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ll..        /// 
18e70 65 76 65 72 20 62 65 20 63 61 6c 6c 65 64 20 65  ever be called e
18e80 78 63 65 70 74 20 69 6e 20 62 65 74 77 65 65 6e  xcept in between
18e90 20 63 61 6c 6c 73 20 74 6f 20 78 42 65 67 69 6e   calls to xBegin
18ea0 28 29 20 61 6e 64 20 65 69 74 68 65 72 0d 0a 20  () and either.. 
18eb0 20 20 20 20 20 20 20 2f 2f 2f 20 78 43 6f 6d 6d         /// xComm
18ec0 69 74 28 29 20 6f 72 20 78 52 6f 6c 6c 62 61 63  it() or xRollbac
18ed0 6b 28 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  k()...        //
18ee0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
18ef0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
18f00 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a   name="pVtab">..
18f10 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
18f20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20 74  native pointer t
18f30 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 74  o the sqlite3_vt
18f40 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75 63  ab derived struc
18f50 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ture...        /
18f60 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
18f70 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
18f80 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e 74  name="iSavepoint
18f90 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ">..        /// 
18fa0 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67  This is an integ
18fb0 65 72 20 69 64 65 6e 74 69 66 69 65 72 20 75 6e  er identifier un
18fc0 64 65 72 20 77 68 69 63 68 20 74 68 65 20 74 68  der which the th
18fd0 65 20 63 75 72 72 65 6e 74 20 73 74 61 74 65 20  e current state 
18fe0 6f 66 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  of..        /// 
18ff0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
19000 65 20 73 68 6f 75 6c 64 20 62 65 20 73 61 76 65  e should be save
19010 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
19020 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
19030 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
19040 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
19050 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
19060 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
19070 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
19080 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
19090 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 53 61  iteErrorCode xSa
190a0 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20 20 20  vepoint(..      
190b0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
190c0 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
190d0 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d   int iSavepoint.
190e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
190f0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
19100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19140 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
19150 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
19160 20 20 20 20 20 2f 2f 2f 20 54 68 65 73 65 20 6d       /// These m
19170 65 74 68 6f 64 73 20 70 72 6f 76 69 64 65 20 74  ethods provide t
19180 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
19190 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
191a0 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  an..        /// 
191b0 6f 70 70 6f 72 74 75 6e 69 74 79 20 74 6f 20 69  opportunity to i
191c0 6d 70 6c 65 6d 65 6e 74 20 6e 65 73 74 65 64 20  mplement nested 
191d0 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 54 68  transactions. Th
191e0 65 79 20 61 72 65 20 61 6c 77 61 79 73 0d 0a 20  ey are always.. 
191f0 20 20 20 20 20 20 20 2f 2f 2f 20 6f 70 74 69 6f         /// optio
19200 6e 61 6c 20 61 6e 64 20 77 69 6c 6c 20 6f 6e 6c  nal and will onl
19210 79 20 62 65 20 63 61 6c 6c 65 64 20 69 6e 20 53  y be called in S
19220 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e  QLite version 3.
19230 37 2e 37 20 61 6e 64 20 6c 61 74 65 72 2e 0d 0a  7.7 and later...
19240 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20          ///..   
19250 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 78 53       /// When xS
19260 61 76 65 70 6f 69 6e 74 28 58 2c 4e 29 20 69 73  avepoint(X,N) is
19270 20 69 6e 76 6f 6b 65 64 2c 20 74 68 61 74 20 69   invoked, that i
19280 73 20 61 20 73 69 67 6e 61 6c 20 74 6f 20 74 68  s a signal to th
19290 65 20 76 69 72 74 75 61 6c 0d 0a 20 20 20 20 20  e virtual..     
192a0 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 58 20 74     /// table X t
192b0 68 61 74 20 69 74 20 73 68 6f 75 6c 64 20 73 61  hat it should sa
192c0 76 65 20 69 74 73 20 63 75 72 72 65 6e 74 20 73  ve its current s
192d0 74 61 74 65 20 61 73 20 73 61 76 65 70 6f 69 6e  tate as savepoin
192e0 74 20 4e 2e 20 41 0d 0a 20 20 20 20 20 20 20 20  t N. A..        
192f0 2f 2f 2f 20 73 75 62 73 65 71 75 65 6e 74 20 63  /// subsequent c
19300 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c 62 61 63 6b  all to xRollback
19310 54 6f 28 58 2c 52 29 20 6d 65 61 6e 73 20 74 68  To(X,R) means th
19320 61 74 20 74 68 65 20 73 74 61 74 65 20 6f 66 20  at the state of 
19330 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
19340 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 73   virtual table s
19350 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 6f 20  hould return to 
19360 77 68 61 74 20 69 74 20 77 61 73 20 77 68 65 6e  what it was when
19370 20 78 53 61 76 65 70 6f 69 6e 74 28 58 2c 52 29   xSavepoint(X,R)
19380 20 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f   was..        //
19390 2f 20 6c 61 73 74 20 63 61 6c 6c 65 64 2e 20 54  / last called. T
193a0 68 65 20 63 61 6c 6c 20 74 6f 20 78 52 6f 6c 6c  he call to xRoll
193b0 62 61 63 6b 54 6f 28 58 2c 52 29 20 77 69 6c 6c  backTo(X,R) will
193c0 20 69 6e 76 61 6c 69 64 61 74 65 20 61 6c 6c 0d   invalidate all.
193d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 61 76  .        /// sav
193e0 65 70 6f 69 6e 74 73 20 77 69 74 68 20 4e 3e 52  epoints with N>R
193f0 3b 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 69 6e  ; none of the in
19400 76 61 6c 69 64 65 64 20 73 61 76 65 70 6f 69 6e  valided savepoin
19410 74 73 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20  ts will be..    
19420 20 20 20 20 2f 2f 2f 20 72 6f 6c 6c 65 64 20 62      /// rolled b
19430 61 63 6b 20 6f 72 20 72 65 6c 65 61 73 65 64 20  ack or released 
19440 77 69 74 68 6f 75 74 20 66 69 72 73 74 20 62 65  without first be
19450 69 6e 67 20 72 65 69 6e 69 74 69 61 6c 69 7a 65  ing reinitialize
19460 64 20 62 79 20 61 20 63 61 6c 6c 0d 0a 20 20 20  d by a call..   
19470 20 20 20 20 20 2f 2f 2f 20 74 6f 20 78 53 61 76       /// to xSav
19480 65 70 6f 69 6e 74 28 29 2e 20 41 20 63 61 6c 6c  epoint(). A call
19490 20 74 6f 20 78 52 65 6c 65 61 73 65 28 58 2c 4d   to xRelease(X,M
194a0 29 20 69 6e 76 61 6c 69 64 61 74 65 73 20 61 6c  ) invalidates al
194b0 6c 20 73 61 76 65 70 6f 69 6e 74 73 0d 0a 20 20  l savepoints..  
194c0 20 20 20 20 20 20 2f 2f 2f 20 77 68 65 72 65 20        /// where 
194d0 4e 3e 3d 4d 2e 0d 0a 20 20 20 20 20 20 20 20 2f  N>=M...        /
194e0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  //..        /// 
194f0 4e 6f 6e 65 20 6f 66 20 74 68 65 20 78 53 61 76  None of the xSav
19500 65 70 6f 69 6e 74 28 29 2c 20 78 52 65 6c 65 61  epoint(), xRelea
19510 73 65 28 29 2c 20 6f 72 20 78 52 6f 6c 6c 62 61  se(), or xRollba
19520 63 6b 54 6f 28 29 20 6d 65 74 68 6f 64 73 20 77  ckTo() methods w
19530 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ill..        ///
19540 20 65 76 65 72 20 62 65 20 63 61 6c 6c 65 64 20   ever be called 
19550 65 78 63 65 70 74 20 69 6e 20 62 65 74 77 65 65  except in betwee
19560 6e 20 63 61 6c 6c 73 20 74 6f 20 78 42 65 67 69  n calls to xBegi
19570 6e 28 29 20 61 6e 64 20 65 69 74 68 65 72 0d 0a  n() and either..
19580 20 20 20 20 20 20 20 20 2f 2f 2f 20 78 43 6f 6d          /// xCom
19590 6d 69 74 28 29 20 6f 72 20 78 52 6f 6c 6c 62 61  mit() or xRollba
195a0 63 6b 28 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f  ck()...        /
195b0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
195c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
195d0 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d  m name="pVtab">.
195e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
195f0 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65 72 20   native pointer 
19600 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
19610 74 61 62 20 64 65 72 69 76 65 64 20 73 74 72 75  tab derived stru
19620 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20 20 20  cture...        
19630 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
19640 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
19650 20 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f 69 6e   name="iSavepoin
19660 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  t">..        ///
19670 20 54 68 69 73 20 69 73 20 61 6e 20 69 6e 74 65   This is an inte
19680 67 65 72 20 75 73 65 64 20 74 6f 20 69 6e 64 69  ger used to indi
19690 63 61 74 65 20 74 68 61 74 20 61 6e 79 20 73 61  cate that any sa
196a0 76 65 64 20 73 74 61 74 65 73 20 77 69 74 68 20  ved states with 
196b0 61 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  an..        /// 
196c0 69 64 65 6e 74 69 66 69 65 72 20 67 72 65 61 74  identifier great
196d0 65 72 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c  er than or equal
196e0 20 74 6f 20 74 68 69 73 20 73 68 6f 75 6c 64 20   to this should 
196f0 62 65 20 64 65 6c 65 74 65 64 20 62 79 20 74 68  be deleted by th
19700 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  e..        /// v
19710 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
19720 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
19730 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
19740 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
19750 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
19760 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
19770 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
19780 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
19790 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
197a0 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61 73 65  rorCode xRelease
197b0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
197c0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
197d0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 53            int iS
197e0 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20  avepoint..      
197f0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
19800 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
19850 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
19860 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
19870 2f 20 54 68 65 73 65 20 6d 65 74 68 6f 64 73 20  / These methods 
19880 70 72 6f 76 69 64 65 20 74 68 65 20 76 69 72 74  provide the virt
19890 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d  ual table implem
198a0 65 6e 74 61 74 69 6f 6e 20 61 6e 0d 0a 20 20 20  entation an..   
198b0 20 20 20 20 20 2f 2f 2f 20 6f 70 70 6f 72 74 75       /// opportu
198c0 6e 69 74 79 20 74 6f 20 69 6d 70 6c 65 6d 65 6e  nity to implemen
198d0 74 20 6e 65 73 74 65 64 20 74 72 61 6e 73 61 63  t nested transac
198e0 74 69 6f 6e 73 2e 20 54 68 65 79 20 61 72 65 20  tions. They are 
198f0 61 6c 77 61 79 73 0d 0a 20 20 20 20 20 20 20 20  always..        
19900 2f 2f 2f 20 6f 70 74 69 6f 6e 61 6c 20 61 6e 64  /// optional and
19910 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 65 20 63 61   will only be ca
19920 6c 6c 65 64 20 69 6e 20 53 51 4c 69 74 65 20 76  lled in SQLite v
19930 65 72 73 69 6f 6e 20 33 2e 37 2e 37 20 61 6e 64  ersion 3.7.7 and
19940 20 6c 61 74 65 72 2e 0d 0a 20 20 20 20 20 20 20   later...       
19950 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f   ///..        //
19960 2f 20 57 68 65 6e 20 78 53 61 76 65 70 6f 69 6e  / When xSavepoin
19970 74 28 58 2c 4e 29 20 69 73 20 69 6e 76 6f 6b 65  t(X,N) is invoke
19980 64 2c 20 74 68 61 74 20 69 73 20 61 20 73 69 67  d, that is a sig
19990 6e 61 6c 20 74 6f 20 74 68 65 20 76 69 72 74 75  nal to the virtu
199a0 61 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  al..        /// 
199b0 74 61 62 6c 65 20 58 20 74 68 61 74 20 69 74 20  table X that it 
199c0 73 68 6f 75 6c 64 20 73 61 76 65 20 69 74 73 20  should save its 
199d0 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 61 73  current state as
199e0 20 73 61 76 65 70 6f 69 6e 74 20 4e 2e 20 41 0d   savepoint N. A.
199f0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 73 75 62  .        /// sub
19a00 73 65 71 75 65 6e 74 20 63 61 6c 6c 20 74 6f 20  sequent call to 
19a10 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 58 2c 52 29  xRollbackTo(X,R)
19a20 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20   means that the 
19a30 73 74 61 74 65 20 6f 66 20 74 68 65 0d 0a 20 20  state of the..  
19a40 20 20 20 20 20 20 2f 2f 2f 20 76 69 72 74 75 61        /// virtua
19a50 6c 20 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 72  l table should r
19a60 65 74 75 72 6e 20 74 6f 20 77 68 61 74 20 69 74  eturn to what it
19a70 20 77 61 73 20 77 68 65 6e 20 78 53 61 76 65 70   was when xSavep
19a80 6f 69 6e 74 28 58 2c 52 29 20 77 61 73 0d 0a 20  oint(X,R) was.. 
19a90 20 20 20 20 20 20 20 2f 2f 2f 20 6c 61 73 74 20         /// last 
19aa0 63 61 6c 6c 65 64 2e 20 54 68 65 20 63 61 6c 6c  called. The call
19ab0 20 74 6f 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28   to xRollbackTo(
19ac0 58 2c 52 29 20 77 69 6c 6c 20 69 6e 76 61 6c 69  X,R) will invali
19ad0 64 61 74 65 20 61 6c 6c 0d 0a 20 20 20 20 20 20  date all..      
19ae0 20 20 2f 2f 2f 20 73 61 76 65 70 6f 69 6e 74 73    /// savepoints
19af0 20 77 69 74 68 20 4e 3e 52 3b 20 6e 6f 6e 65 20   with N>R; none 
19b00 6f 66 20 74 68 65 20 69 6e 76 61 6c 69 64 65 64  of the invalided
19b10 20 73 61 76 65 70 6f 69 6e 74 73 20 77 69 6c 6c   savepoints will
19b20 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f   be..        ///
19b30 20 72 6f 6c 6c 65 64 20 62 61 63 6b 20 6f 72 20   rolled back or 
19b40 72 65 6c 65 61 73 65 64 20 77 69 74 68 6f 75 74  released without
19b50 20 66 69 72 73 74 20 62 65 69 6e 67 20 72 65 69   first being rei
19b60 6e 69 74 69 61 6c 69 7a 65 64 20 62 79 20 61 20  nitialized by a 
19b70 63 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 2f 2f  call..        //
19b80 2f 20 74 6f 20 78 53 61 76 65 70 6f 69 6e 74 28  / to xSavepoint(
19b90 29 2e 20 41 20 63 61 6c 6c 20 74 6f 20 78 52 65  ). A call to xRe
19ba0 6c 65 61 73 65 28 58 2c 4d 29 20 69 6e 76 61 6c  lease(X,M) inval
19bb0 69 64 61 74 65 73 20 61 6c 6c 20 73 61 76 65 70  idates all savep
19bc0 6f 69 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 2f  oints..        /
19bd0 2f 2f 20 77 68 65 72 65 20 4e 3e 3d 4d 2e 0d 0a  // where N>=M...
19be0 20 20 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20          ///..   
19bf0 20 20 20 20 20 2f 2f 2f 20 4e 6f 6e 65 20 6f 66       /// None of
19c00 20 74 68 65 20 78 53 61 76 65 70 6f 69 6e 74 28   the xSavepoint(
19c10 29 2c 20 78 52 65 6c 65 61 73 65 28 29 2c 20 6f  ), xRelease(), o
19c20 72 20 78 52 6f 6c 6c 62 61 63 6b 54 6f 28 29 20  r xRollbackTo() 
19c30 6d 65 74 68 6f 64 73 20 77 69 6c 6c 0d 0a 20 20  methods will..  
19c40 20 20 20 20 20 20 2f 2f 2f 20 65 76 65 72 20 62        /// ever b
19c50 65 20 63 61 6c 6c 65 64 20 65 78 63 65 70 74 20  e called except 
19c60 69 6e 20 62 65 74 77 65 65 6e 20 63 61 6c 6c 73  in between calls
19c70 20 74 6f 20 78 42 65 67 69 6e 28 29 20 61 6e 64   to xBegin() and
19c80 20 65 69 74 68 65 72 0d 0a 20 20 20 20 20 20 20   either..       
19c90 20 2f 2f 2f 20 78 43 6f 6d 6d 69 74 28 29 20 6f   /// xCommit() o
19ca0 72 20 78 52 6f 6c 6c 62 61 63 6b 28 29 2e 0d 0a  r xRollback()...
19cb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
19cc0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
19cd0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
19ce0 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
19cf0 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69 76 65    /// The native
19d00 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
19d10 73 71 6c 69 74 65 33 5f 76 74 61 62 20 64 65 72  sqlite3_vtab der
19d20 69 76 65 64 20 73 74 72 75 63 74 75 72 65 2e 0d  ived structure..
19d30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
19d40 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
19d50 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
19d60 69 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20  iSavepoint">..  
19d70 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 69        /// This i
19d80 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69 64 65  s an integer ide
19d90 6e 74 69 66 69 65 72 20 75 73 65 64 20 74 6f 20  ntifier used to 
19da0 73 70 65 63 69 66 79 20 61 20 73 70 65 63 69 66  specify a specif
19db0 69 63 20 73 61 76 65 64 0d 0a 20 20 20 20 20 20  ic saved..      
19dc0 20 20 2f 2f 2f 20 73 74 61 74 65 20 66 6f 72 20    /// state for 
19dd0 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
19de0 65 20 66 6f 72 20 69 74 20 74 6f 20 72 65 73 74  e for it to rest
19df0 6f 72 65 20 69 74 73 65 6c 66 20 62 61 63 6b 20  ore itself back 
19e00 74 6f 2c 20 77 68 69 63 68 0d 0a 20 20 20 20 20  to, which..     
19e10 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 61 6c     /// should al
19e20 73 6f 20 68 61 76 65 20 74 68 65 20 65 66 66 65  so have the effe
19e30 63 74 20 6f 66 20 64 65 6c 65 74 69 6e 67 20 61  ct of deleting a
19e40 6c 6c 20 73 61 76 65 64 20 73 74 61 74 65 73 20  ll saved states 
19e50 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20 20 20  with an..       
19e60 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 69 64 65   /// integer ide
19e70 6e 74 69 66 69 65 72 20 67 72 65 61 74 65 72 20  ntifier greater 
19e80 74 68 61 6e 20 74 68 69 73 20 6f 6e 65 2e 0d 0a  than this one...
19e90 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
19ea0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
19eb0 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
19ec0 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
19ed0 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
19ee0 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
19ef0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
19f00 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
19f10 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62 61  rrorCode xRollba
19f20 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20  ckTo(..         
19f30 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c     IntPtr pVtab,
19f40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
19f50 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20  t iSavepoint..  
19f60 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 20 20            );..  
19f70 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
19f80 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
19f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fd0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
19fe0 65 67 69 6f 6e 20 49 53 51 4c 69 74 65 4d 61 6e  egion ISQLiteMan
19ff0 61 67 65 64 4d 6f 64 75 6c 65 20 49 6e 74 65 72  agedModule Inter
1a000 66 61 63 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  face..    /// <s
1a010 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1a020 20 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20   This interface 
1a030 72 65 70 72 65 73 65 6e 74 73 20 61 20 76 69 72  represents a vir
1a040 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65  tual table imple
1a050 6d 65 6e 74 61 74 69 6f 6e 20 77 72 69 74 74 65  mentation writte
1a060 6e 20 69 6e 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61  n in..    /// ma
1a070 6e 61 67 65 64 20 63 6f 64 65 2e 0d 0a 20 20 20  naged code...   
1a080 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1a090 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 65  .    public inte
1a0a0 72 66 61 63 65 20 49 53 51 4c 69 74 65 4d 61 6e  rface ISQLiteMan
1a0b0 61 67 65 64 4d 6f 64 75 6c 65 0d 0a 20 20 20 20  agedModule..    
1a0c0 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  {..        /// <
1a0d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1a0e0 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 6e 6f    /// Returns no
1a0f0 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 73 63  n-zero if the sc
1a100 68 65 6d 61 20 66 6f 72 20 74 68 65 20 76 69 72  hema for the vir
1a110 74 75 61 6c 20 74 61 62 6c 65 20 68 61 73 20 62  tual table has b
1a120 65 65 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  een..        ///
1a130 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20   declared...    
1a140 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1a150 79 3e 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  y>..        bool
1a160 20 44 65 63 6c 61 72 65 64 20 7b 20 67 65 74 3b   Declared { get;
1a170 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
1a180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1a1d0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1a1e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 52 65 74 75          /// Retu
1a1f0 72 6e 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  rns the name of 
1a200 74 68 65 20 6d 6f 64 75 6c 65 20 61 73 20 69 74  the module as it
1a210 20 77 61 73 20 72 65 67 69 73 74 65 72 65 64 20   was registered 
1a220 77 69 74 68 20 74 68 65 20 53 51 4c 69 74 65 0d  with the SQLite.
1a230 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72  .        /// cor
1a240 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20  e library...    
1a250 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1a260 79 3e 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  y>..        stri
1a270 6e 67 20 4e 61 6d 65 20 7b 20 67 65 74 3b 20 7d  ng Name { get; }
1a280 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1a290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2d0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1a2e0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1a2f0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
1a300 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
1a310 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
1a320 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1a330 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
1a340 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
1a350 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Create" /> metho
1a360 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
1a370 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1a380 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1a390 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22  ame="connection"
1a3a0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1a3b0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
1a3c0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20  LiteConnection" 
1a3d0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1a3e0 63 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ce associated wi
1a3f0 74 68 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  th..        /// 
1a400 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  the virtual tabl
1a410 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1a420 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1a430 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1a440 65 3d 22 70 43 6c 69 65 6e 74 44 61 74 61 22 3e  e="pClientData">
1a450 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1a460 65 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64 61  e native user-da
1a470 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f 63  ta pointer assoc
1a480 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20  iated with this 
1a490 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74 20 77 61  module, as it wa
1a4a0 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 70  s..        /// p
1a4b0 72 6f 76 69 64 65 64 20 74 6f 20 74 68 65 20 53  rovided to the S
1a4c0 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
1a4d0 72 79 20 77 68 65 6e 20 74 68 65 20 6e 61 74 69  ry when the nati
1a4e0 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6e  ve module instan
1a4f0 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
1a500 77 61 73 20 63 72 65 61 74 65 64 2e 0d 0a 20 20  was created...  
1a510 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1a520 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1a530 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
1a540 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20 20 20 20  uments">..      
1a550 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75 6c 65    /// The module
1a560 20 6e 61 6d 65 2c 20 64 61 74 61 62 61 73 65 20   name, database 
1a570 6e 61 6d 65 2c 20 76 69 72 74 75 61 6c 20 74 61  name, virtual ta
1a580 62 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 20 61 6c  ble name, and al
1a590 6c 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20 20  l other..       
1a5a0 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20 70   /// arguments p
1a5b0 61 73 73 65 64 20 74 6f 20 74 68 65 20 43 52 45  assed to the CRE
1a5c0 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
1a5d0 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20  E statement...  
1a5e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1a5f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1a600 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
1a610 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
1a620 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73 2c 20  / Upon success, 
1a630 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 6d  this parameter m
1a640 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64 20  ust be modified 
1a650 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 0d 0a  to contain the..
1a660 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
1a670 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
1a680 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
1a690 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
1a6a0 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20  sociated with.. 
1a6b0 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76         /// the v
1a6c0 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
1a6d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1a6e0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1a6f0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72   <param name="er
1a700 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ror">..        /
1a710 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c  // Upon failure,
1a720 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
1a730 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65 64  must be modified
1a740 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61 6e 20 65   to contain an e
1a750 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f  rror..        //
1a760 2f 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20  / message...    
1a770 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1a780 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1a790 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1a7a0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
1a7b0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
1a7c0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
1a7d0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1a7e0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1a7f0 43 6f 64 65 20 43 72 65 61 74 65 28 0d 0a 20 20  Code Create(..  
1a800 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
1a810 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
1a820 63 74 69 6f 6e 2c 20 20 2f 2a 20 69 6e 20 2a 2f  ction,  /* in */
1a830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
1a840 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61 74 61  tPtr pClientData
1a850 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69  ,           /* i
1a860 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1a870 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 75 6d    string[] argum
1a880 65 6e 74 73 2c 20 20 20 20 20 20 20 20 20 20 20  ents,           
1a890 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1a8a0 20 20 20 20 20 20 72 65 66 20 53 51 4c 69 74 65        ref SQLite
1a8b0 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
1a8c0 6c 65 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20  le, /* out */.. 
1a8d0 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73             ref s
1a8e0 74 72 69 6e 67 20 65 72 72 6f 72 20 20 20 20 20  tring error     
1a8f0 20 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20           /* out 
1a900 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1a910 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
1a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a960 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1a970 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1a980 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1a990 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
1a9a0 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
1a9b0 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1a9c0 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
1a9d0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
1a9e0 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
1a9f0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1aa00 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1aa10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1aa20 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69  m name="connecti
1aa30 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on">..        //
1aa40 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
1aa50 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  "SQLiteConnectio
1aa60 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  n" /> object ins
1aa70 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64  tance associated
1aa80 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 2f   with..        /
1aa90 2f 2f 20 74 68 65 20 76 69 72 74 75 61 6c 20 74  // the virtual t
1aaa0 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
1aab0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1aac0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1aad0 6e 61 6d 65 3d 22 70 43 6c 69 65 6e 74 44 61 74  name="pClientDat
1aae0 61 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  a">..        ///
1aaf0 20 54 68 65 20 6e 61 74 69 76 65 20 75 73 65 72   The native user
1ab00 2d 64 61 74 61 20 70 6f 69 6e 74 65 72 20 61 73  -data pointer as
1ab10 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
1ab20 69 73 20 6d 6f 64 75 6c 65 2c 20 61 73 20 69 74  is module, as it
1ab30 20 77 61 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f   was..        //
1ab40 2f 20 70 72 6f 76 69 64 65 64 20 74 6f 20 74 68  / provided to th
1ab50 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
1ab60 62 72 61 72 79 20 77 68 65 6e 20 74 68 65 20 6e  brary when the n
1ab70 61 74 69 76 65 20 6d 6f 64 75 6c 65 20 69 6e 73  ative module ins
1ab80 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f  tance..        /
1ab90 2f 2f 20 77 61 73 20 63 72 65 61 74 65 64 2e 0d  // was created..
1aba0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1abb0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1abc0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1abd0 61 72 67 75 6d 65 6e 74 73 22 3e 0d 0a 20 20 20  arguments">..   
1abe0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6d 6f 64       /// The mod
1abf0 75 6c 65 20 6e 61 6d 65 2c 20 64 61 74 61 62 61  ule name, databa
1ac00 73 65 20 6e 61 6d 65 2c 20 76 69 72 74 75 61 6c  se name, virtual
1ac10 20 74 61 62 6c 65 20 6e 61 6d 65 2c 20 61 6e 64   table name, and
1ac20 20 61 6c 6c 20 6f 74 68 65 72 0d 0a 20 20 20 20   all other..    
1ac30 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74      /// argument
1ac40 73 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20  s passed to the 
1ac50 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
1ac60 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0d  ABLE statement..
1ac70 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1ac80 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1ac90 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1aca0 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20  table">..       
1acb0 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
1acc0 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
1acd0 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
1ace0 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  ed to contain th
1acf0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
1ad00 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1ad10 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
1ad20 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1ad30 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
1ad40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68  ..        /// th
1ad50 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e  e virtual table.
1ad60 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1ad70 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1ad80 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1ad90 22 65 72 72 6f 72 22 3e 0d 0a 20 20 20 20 20 20  "error">..      
1ada0 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c 75    /// Upon failu
1adb0 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74  re, this paramet
1adc0 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66  er must be modif
1add0 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61  ied to contain a
1ade0 6e 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20  n error..       
1adf0 20 2f 2f 2f 20 6d 65 73 73 61 67 65 2e 0d 0a 20   /// message... 
1ae00 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1ae10 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1ae20 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1ae30 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61      /// A standa
1ae40 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e  rd SQLite return
1ae50 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20   code...        
1ae60 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
1ae70 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
1ae80 72 6f 72 43 6f 64 65 20 43 6f 6e 6e 65 63 74 28  rorCode Connect(
1ae90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1aea0 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63  LiteConnection c
1aeb0 6f 6e 6e 65 63 74 69 6f 6e 2c 20 20 2f 2a 20 69  onnection,  /* i
1aec0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1aed0 20 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74    IntPtr pClient
1aee0 44 61 74 61 2c 20 20 20 20 20 20 20 20 20 20 20  Data,           
1aef0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1af00 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61        string[] a
1af10 72 67 75 6d 65 6e 74 73 2c 20 20 20 20 20 20 20  rguments,       
1af20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
1af30 20 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51            ref SQ
1af40 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1af50 20 74 61 62 6c 65 2c 20 2f 2a 20 6f 75 74 20 2a   table, /* out *
1af60 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
1af70 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 20  ef string error 
1af80 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
1af90 6f 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  out */..        
1afa0 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
1afb0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1afc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1afe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1b000 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
1b010 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1b020 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63  This method is c
1b030 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
1b040 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20  e to the..      
1b050 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
1b060 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
1b070 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22  dule.xBestIndex"
1b080 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
1b090 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
1b0a0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1b0b0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61   <param name="ta
1b0c0 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ble">..        /
1b0d0 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  // The <see cref
1b0e0 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54  ="SQLiteVirtualT
1b0f0 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20  able" /> object 
1b100 69 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61  instance associa
1b110 74 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ted..        ///
1b120 20 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75   with this virtu
1b130 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20  al table...     
1b140 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
1b150 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1b160 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64 65 78 22  ram name="index"
1b170 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1b180 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
1b190 4c 69 74 65 49 6e 64 65 78 22 20 2f 3e 20 6f 62  LiteIndex" /> ob
1b1a0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f  ject instance co
1b1b0 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 74 68 65  ntaining all the
1b1c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 64 61  ..        /// da
1b1d0 74 61 20 66 6f 72 20 74 68 65 20 69 6e 70 75 74  ta for the input
1b1e0 73 20 61 6e 64 20 6f 75 74 70 75 74 73 20 72 65  s and outputs re
1b1f0 6c 61 74 69 6e 67 20 74 6f 20 69 6e 64 65 78 20  lating to index 
1b200 73 65 6c 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  selection...    
1b210 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1b220 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1b230 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1b240 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
1b250 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
1b260 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
1b270 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1b280 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1b290 43 6f 64 65 20 42 65 73 74 49 6e 64 65 78 28 0d  Code BestIndex(.
1b2a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
1b2b0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
1b2c0 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d  table, /* in */.
1b2d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
1b2e0 69 74 65 49 6e 64 65 78 20 69 6e 64 65 78 20 20  iteIndex index  
1b2f0 20 20 20 20 20 20 20 2f 2a 20 69 6e 2c 20 6f 75         /* in, ou
1b300 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  t */..          
1b310 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
1b320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b360 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1b370 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1b380 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1b390 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
1b3a0 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
1b3b0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
1b3c0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1b3d0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
1b3e0 6c 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 22 20  le.xDisconnect" 
1b3f0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
1b400 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1b410 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y>..        /// 
1b420 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62  <param name="tab
1b430 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  le">..        //
1b440 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
1b450 22 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61  "SQLiteVirtualTa
1b460 62 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ble" /> object i
1b470 6e 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74  nstance associat
1b480 65 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ed..        /// 
1b490 77 69 74 68 20 74 68 69 73 20 76 69 72 74 75 61  with this virtua
1b4a0 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20  l table...      
1b4b0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
1b4c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
1b4d0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f  urns>..        /
1b4e0 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20 53 51  // A standard SQ
1b4f0 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65  Lite return code
1b500 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1b510 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
1b520 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
1b530 64 65 20 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a  de Disconnect(..
1b540 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1b550 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
1b560 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  able /* in */.. 
1b570 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d             );...
1b580 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1b590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b5d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ....        /// 
1b5e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
1b5f0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68     /// This meth
1b600 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20  od is called in 
1b610 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d  response to the.
1b620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  .        /// <se
1b630 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
1b640 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73  ativeModule.xDes
1b650 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  troy" /> method.
1b660 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1b670 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1b680 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1b690 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
1b6a0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
1b6b0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
1b6c0 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
1b6d0 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
1b6e0 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
1b6f0 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
1b700 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
1b710 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1b720 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1b730 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1b740 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
1b750 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
1b760 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
1b770 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1b780 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
1b790 72 72 6f 72 43 6f 64 65 20 44 65 73 74 72 6f 79  rrorCode Destroy
1b7a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
1b7b0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
1b7c0 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a 2f  e table /* in */
1b7d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
1b7e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1b7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b830 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1b840 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1b850 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
1b860 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
1b870 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
1b880 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1b890 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
1b8a0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
1b8b0 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Open" /> method.
1b8c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1b8d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1b8e0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1b8f0 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20  e="table">..    
1b900 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
1b910 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72   cref="SQLiteVir
1b920 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62  tualTable" /> ob
1b930 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73  ject instance as
1b940 73 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20  sociated..      
1b950 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20    /// with this 
1b960 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
1b970 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1b980 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1b990 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
1b9a0 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
1b9b0 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73   /// Upon succes
1b9c0 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  s, this paramete
1b9d0 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69  r must be modifi
1b9e0 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68  ed to contain th
1b9f0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
1ba00 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1ba10 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
1ba20 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  or" /> object in
1ba30 73 74 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65  stance associate
1ba40 64 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77  d..        /// w
1ba50 69 74 68 20 74 68 65 20 6e 65 77 6c 79 20 6f 70  ith the newly op
1ba60 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62  ened virtual tab
1ba70 6c 65 20 63 75 72 73 6f 72 2e 0d 0a 20 20 20 20  le cursor...    
1ba80 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
1ba90 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72  ..        /// <r
1baa0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1bab0 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64 20   /// A standard 
1bac0 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63 6f  SQLite return co
1bad0 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  de...        ///
1bae0 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
1baf0 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72       SQLiteError
1bb00 43 6f 64 65 20 4f 70 65 6e 28 0d 0a 20 20 20 20  Code Open(..    
1bb10 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
1bb20 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
1bb30 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69  ,           /* i
1bb40 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1bb50 20 20 72 65 66 20 53 51 4c 69 74 65 56 69 72 74    ref SQLiteVirt
1bb60 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63  ualTableCursor c
1bb70 75 72 73 6f 72 20 2f 2a 20 6f 75 74 20 2a 2f 0d  ursor /* out */.
1bb80 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
1bb90 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1bba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bbe0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  //....        //
1bbf0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
1bc00 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65       /// This me
1bc10 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69  thod is called i
1bc20 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68  n response to th
1bc30 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  e..        /// <
1bc40 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
1bc50 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43  eNativeModule.xC
1bc60 6c 6f 73 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lose" /> method.
1bc70 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1bc80 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1bc90 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1bca0 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20  e="cursor">..   
1bcb0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
1bcc0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69  e cref="SQLiteVi
1bcd0 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
1bce0 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
1bcf0 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ance..        //
1bd00 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  / associated wit
1bd10 68 20 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79  h the previously
1bd20 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20   opened virtual 
1bd30 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20  table cursor to 
1bd40 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  be..        /// 
1bd50 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  used...        /
1bd60 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1bd70 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
1bd80 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  s>..        /// 
1bd90 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
1bda0 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
1bdb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1bdc0 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1bdd0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
1bde0 43 6c 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20  Close(..        
1bdf0 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
1be00 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72  lTableCursor cur
1be10 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  sor /* in */..  
1be20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
1be30 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1be40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1be80 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1be90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1bea0 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
1beb0 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
1bec0 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
1bed0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
1bee0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
1bef0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74  tiveModule.xFilt
1bf00 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  er" /> method...
1bf10 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1bf20 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1bf30 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1bf40 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
1bf50 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
1bf60 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
1bf70 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
1bf80 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1bf90 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
1bfa0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
1bfb0 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  the previously o
1bfc0 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  pened virtual ta
1bfd0 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65  ble cursor to be
1bfe0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
1bff0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
1c000 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1c010 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1c020 6d 65 3d 22 69 6e 64 65 78 4e 75 6d 62 65 72 22  me="indexNumber"
1c030 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 4e  >..        /// N
1c040 75 6d 62 65 72 20 75 73 65 64 20 74 6f 20 68 65  umber used to he
1c050 6c 70 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  lp identify the 
1c060 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e 0d  selected index..
1c070 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1c080 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1c090 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1c0a0 69 6e 64 65 78 53 74 72 69 6e 67 22 3e 0d 0a 20  indexString">.. 
1c0b0 20 20 20 20 20 20 20 2f 2f 2f 20 53 74 72 69 6e         /// Strin
1c0c0 67 20 75 73 65 64 20 74 6f 20 68 65 6c 70 20 69  g used to help i
1c0d0 64 65 6e 74 69 66 79 20 74 68 65 20 73 65 6c 65  dentify the sele
1c0e0 63 74 65 64 20 69 6e 64 65 78 2e 0d 0a 20 20 20  cted index...   
1c0f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1c100 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1c110 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
1c120 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  es">..        //
1c130 2f 20 54 68 65 20 76 61 6c 75 65 73 20 63 6f 72  / The values cor
1c140 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 65 61  responding to ea
1c150 63 68 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65  ch column in the
1c160 20 73 65 6c 65 63 74 65 64 20 69 6e 64 65 78 2e   selected index.
1c170 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1c180 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1c190 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1c1a0 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
1c1b0 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
1c1c0 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
1c1d0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1c1e0 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
1c1f0 65 45 72 72 6f 72 43 6f 64 65 20 46 69 6c 74 65  eErrorCode Filte
1c200 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
1c210 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1c220 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 2c  leCursor cursor,
1c230 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
1c240 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78         int index
1c250 4e 75 6d 62 65 72 2c 20 20 20 20 20 20 20 20 20  Number,         
1c260 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
1c270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
1c280 72 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67  ring indexString
1c290 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  ,              /
1c2a0 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
1c2b0 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65       SQLiteValue
1c2c0 5b 5d 20 76 61 6c 75 65 73 20 20 20 20 20 20 20  [] values       
1c2d0 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
1c2e0 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
1c2f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1c300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c340 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1c350 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1c360 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
1c370 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
1c380 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
1c390 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1c3a0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
1c3b0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65  NativeModule.xNe
1c3c0 78 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  xt" /> method...
1c3d0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1c3e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1c3f0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1c400 22 63 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20  "cursor">..     
1c410 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
1c420 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
1c430 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20  ualTableCursor" 
1c440 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1c450 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  ce..        /// 
1c460 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
1c470 74 68 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  the previously o
1c480 70 65 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61  pened virtual ta
1c490 62 6c 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65  ble cursor to be
1c4a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73  ..        /// us
1c4b0 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ed...        ///
1c4c0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1c4d0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1c4e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20  ..        /// A 
1c4f0 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20  standard SQLite 
1c500 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20  return code...  
1c510 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
1c520 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51  rns>..        SQ
1c530 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 4e 65  LiteErrorCode Ne
1c540 78 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt(..           
1c550 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
1c560 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72  bleCursor cursor
1c570 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
1c580 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
1c590 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1c5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1c5e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
1c5f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f  mary>..        /
1c600 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69  // This method i
1c610 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70  s called in resp
1c620 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20  onse to the..   
1c630 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
1c640 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
1c650 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e  eModule.xEof" />
1c660 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
1c670 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1c680 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70  ..        /// <p
1c690 61 72 61 6d 20 6e 61 6d 65 3d 22 63 75 72 73 6f  aram name="curso
1c6a0 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  r">..        ///
1c6b0 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
1c6c0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1c6d0 6c 65 43 75 72 73 6f 72 22 20 2f 3e 20 6f 62 6a  leCursor" /> obj
1c6e0 65 63 74 20 69 6e 73 74 61 6e 63 65 0d 0a 20 20  ect instance..  
1c6f0 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69        /// associ
1c700 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72  ated with the pr
1c710 65 76 69 6f 75 73 6c 79 20 6f 70 65 6e 65 64 20  eviously opened 
1c720 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 63 75  virtual table cu
1c730 72 73 6f 72 20 74 6f 20 62 65 0d 0a 20 20 20 20  rsor to be..    
1c740 20 20 20 20 2f 2f 2f 20 75 73 65 64 2e 0d 0a 20      /// used... 
1c750 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1c760 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1c770 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
1c780 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f      /// Non-zero
1c790 20 69 66 20 6e 6f 20 6d 6f 72 65 20 72 6f 77 73   if no more rows
1c7a0 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 3b 20   are available; 
1c7b0 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d  zero otherwise..
1c7c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72  .        /// </r
1c7d0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
1c7e0 20 62 6f 6f 6c 20 45 6f 66 28 0d 0a 20 20 20 20   bool Eof(..    
1c7f0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
1c800 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
1c810 20 63 75 72 73 6f 72 20 2f 2a 20 69 6e 20 2a 2f   cursor /* in */
1c820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
1c830 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1c840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c880 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1c890 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1c8a0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
1c8b0 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
1c8c0 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
1c8d0 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1c8e0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
1c8f0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
1c900 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d 65 74 68 6f  Column" /> metho
1c910 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  d...        /// 
1c920 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1c930 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1c940 61 6d 65 3d 22 63 75 72 73 6f 72 22 3e 0d 0a 20  ame="cursor">.. 
1c950 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
1c960 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1c970 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
1c980 6f 72 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e  or" /> object in
1c990 73 74 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20  stance..        
1c9a0 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
1c9b0 69 74 68 20 74 68 65 20 70 72 65 76 69 6f 75 73  ith the previous
1c9c0 6c 79 20 6f 70 65 6e 65 64 20 76 69 72 74 75 61  ly opened virtua
1c9d0 6c 20 74 61 62 6c 65 20 63 75 72 73 6f 72 20 74  l table cursor t
1c9e0 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f  o be..        //
1c9f0 2f 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  / used...       
1ca00 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
1ca10 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1ca20 6d 20 6e 61 6d 65 3d 22 63 6f 6e 74 65 78 74 22  m name="context"
1ca30 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1ca40 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
1ca50 4c 69 74 65 43 6f 6e 74 65 78 74 22 20 2f 3e 20  LiteContext" /> 
1ca60 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
1ca70 74 6f 20 62 65 20 75 73 65 64 20 66 6f 72 0d 0a  to be used for..
1ca80 20 20 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75          /// retu
1ca90 72 6e 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  rning the specif
1caa0 69 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65  ied column value
1cab0 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
1cac0 6f 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ore library...  
1cad0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1cae0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1caf0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 6e 64  <param name="ind
1cb00 65 78 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ex">..        //
1cb10 2f 20 54 68 65 20 7a 65 72 6f 2d 62 61 73 65 64  / The zero-based
1cb20 20 69 6e 64 65 78 20 63 6f 72 72 65 73 70 6f 6e   index correspon
1cb30 64 69 6e 67 20 74 6f 20 74 68 65 20 63 6f 6c 75  ding to the colu
1cb40 6d 6e 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  mn containing th
1cb50 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76  e..        /// v
1cb60 61 6c 75 65 20 74 6f 20 62 65 20 72 65 74 75 72  alue to be retur
1cb70 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ned...        //
1cb80 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1cb90 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1cba0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1cbb0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
1cbc0 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
1cbd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1cbe0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
1cbf0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43  QLiteErrorCode C
1cc00 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20 20 20  olumn(..        
1cc10 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
1cc20 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72  lTableCursor cur
1cc30 73 6f 72 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20  sor, /* in */.. 
1cc40 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1cc50 65 43 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74  eContext context
1cc60 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69  ,           /* i
1cc70 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1cc80 20 20 69 6e 74 20 69 6e 64 65 78 20 20 20 20 20    int index     
1cc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cca0 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
1ccb0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
1ccc0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1ccd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ccf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1cd10 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1cd20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1cd30 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f 64   /// This method
1cd40 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72 65   is called in re
1cd50 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a 20  sponse to the.. 
1cd60 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20         /// <see 
1cd70 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
1cd80 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64  iveModule.xRowId
1cd90 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
1cda0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
1cdb0 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ary>..        //
1cdc0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
1cdd0 75 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20  ursor">..       
1cde0 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72   /// The <see cr
1cdf0 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75 61  ef="SQLiteVirtua
1ce00 6c 54 61 62 6c 65 43 75 72 73 6f 72 22 20 2f 3e  lTableCursor" />
1ce10 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1ce20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 73  ..        /// as
1ce30 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
1ce40 65 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 70 65  e previously ope
1ce50 6e 65 64 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ned virtual tabl
1ce60 65 20 63 75 72 73 6f 72 20 74 6f 20 62 65 0d 0a  e cursor to be..
1ce70 20 20 20 20 20 20 20 20 2f 2f 2f 20 75 73 65 64          /// used
1ce80 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1ce90 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1cea0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1ceb0 3d 22 72 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20  ="rowId">..     
1cec0 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63     /// Upon succ
1ced0 65 73 73 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ess, this parame
1cee0 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f 64 69  ter must be modi
1cef0 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20  fied to contain 
1cf00 74 68 65 20 75 6e 69 71 75 65 0d 0a 20 20 20 20  the unique..    
1cf10 20 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20      /// integer 
1cf20 72 6f 77 20 69 64 65 6e 74 69 66 69 65 72 20 66  row identifier f
1cf30 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  or the current r
1cf40 6f 77 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  ow for the speci
1cf50 66 69 65 64 20 63 75 72 73 6f 72 2e 0d 0a 20 20  fied cursor...  
1cf60 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1cf70 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1cf80 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  <returns>..     
1cf90 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72     /// A standar
1cfa0 64 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20  d SQLite return 
1cfb0 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  code...        /
1cfc0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
1cfd0 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
1cfe0 6f 72 43 6f 64 65 20 52 6f 77 49 64 28 0d 0a 20  orCode RowId(.. 
1cff0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
1d000 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
1d010 73 6f 72 20 63 75 72 73 6f 72 2c 20 2f 2a 20 69  sor cursor, /* i
1d020 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1d030 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
1d040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d050 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a 20 20     /* out */..  
1d060 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
1d070 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1d080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1d0c0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1d0d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
1d0e0 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
1d0f0 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 72  d is called in r
1d100 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65 0d 0a  esponse to the..
1d110 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65          /// <see
1d120 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
1d130 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61  tiveModule.xUpda
1d140 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  te" /> method...
1d150 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
1d160 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
1d170 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1d180 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20 20  "table">..      
1d190 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
1d1a0 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74 75  ref="SQLiteVirtu
1d1b0 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a 65  alTable" /> obje
1d1c0 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73 6f  ct instance asso
1d1d0 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20 20  ciated..        
1d1e0 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76 69  /// with this vi
1d1f0 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20  rtual table...  
1d200 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
1d210 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  m>..        /// 
1d220 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
1d230 75 65 73 22 3e 0d 0a 20 20 20 20 20 20 20 20 2f  ues">..        /
1d240 2f 2f 20 54 68 65 20 61 72 72 61 79 20 6f 66 20  // The array of 
1d250 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1d260 65 56 61 6c 75 65 22 20 2f 3e 20 6f 62 6a 65 63  eValue" /> objec
1d270 74 20 69 6e 73 74 61 6e 63 65 73 20 63 6f 6e 74  t instances cont
1d280 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  aining..        
1d290 2f 2f 2f 20 74 68 65 20 6e 65 77 20 6f 72 20 6d  /// the new or m
1d2a0 6f 64 69 66 69 65 64 20 63 6f 6c 75 6d 6e 20 76  odified column v
1d2b0 61 6c 75 65 73 2c 20 69 66 20 61 6e 79 2e 0d 0a  alues, if any...
1d2c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1d2d0 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1d2e0 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 72  / <param name="r
1d2f0 6f 77 49 64 22 3e 0d 0a 20 20 20 20 20 20 20 20  owId">..        
1d300 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
1d310 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
1d320 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
1d330 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
1d340 20 75 6e 69 71 75 65 0d 0a 20 20 20 20 20 20 20   unique..       
1d350 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 72 6f 77   /// integer row
1d360 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20   identifier for 
1d370 74 68 65 20 72 6f 77 20 74 68 61 74 20 77 61 73  the row that was
1d380 20 69 6e 73 65 72 74 65 64 2c 20 69 66 20 61 6e   inserted, if an
1d390 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  y...        /// 
1d3a0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1d3b0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1d3c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
1d3d0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
1d3e0 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
1d3f0 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1d400 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
1d410 69 74 65 45 72 72 6f 72 43 6f 64 65 20 55 70 64  iteErrorCode Upd
1d420 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ate(..          
1d430 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
1d440 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69  able table, /* i
1d450 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1d460 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20    SQLiteValue[] 
1d470 76 61 6c 75 65 73 2c 20 20 20 20 20 2f 2a 20 69  values,     /* i
1d480 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1d490 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64    ref long rowId
1d4a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6f              /* o
1d4b0 75 74 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ut */..         
1d4c0 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20     );....       
1d4d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1d4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d510 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1d520 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1d530 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1d540 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61  his method is ca
1d550 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65  lled in response
1d560 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
1d570 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
1d580 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
1d590 75 6c 65 2e 78 42 65 67 69 6e 22 20 2f 3e 20 6d  ule.xBegin" /> m
1d5a0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1d5b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1d5c0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1d5d0 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
1d5e0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1d5f0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
1d600 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
1d610 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1d620 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
1d630 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
1d640 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
1d650 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1d660 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1d670 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1d680 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1d690 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
1d6a0 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
1d6b0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1d6c0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
1d6d0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 42  QLiteErrorCode B
1d6e0 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  egin(..         
1d6f0 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
1d700 54 61 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69  Table table /* i
1d710 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1d720 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
1d730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d770 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1d780 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1d790 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1d7a0 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
1d7b0 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
1d7c0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
1d7d0 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1d7e0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
1d7f0 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d 65 74  le.xSync" /> met
1d800 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
1d810 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1d820 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1d830 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
1d840 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1d850 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1d860 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
1d870 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1d880 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
1d890 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
1d8a0 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
1d8b0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1d8c0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1d8d0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
1d8e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  .        /// A s
1d8f0 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
1d900 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
1d910 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
1d920 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c  ns>..        SQL
1d930 69 74 65 45 72 72 6f 72 43 6f 64 65 20 53 79 6e  iteErrorCode Syn
1d940 63 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c(..            
1d950 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1d960 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20 2a  le table /* in *
1d970 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  /..            )
1d980 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
1d990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9d0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1d9e0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
1d9f0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20         /// This 
1da00 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
1da10 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20   in response to 
1da20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  the..        ///
1da30 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
1da40 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
1da50 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68  xCommit" /> meth
1da60 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  od...        ///
1da70 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1da80 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1da90 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a 20  name="table">.. 
1daa0 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c         /// The <
1dab0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
1dac0 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f 3e  VirtualTable" />
1dad0 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
1dae0 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20 20   associated..   
1daf0 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74 68       /// with th
1db00 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  is virtual table
1db10 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  ...        /// <
1db20 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
1db30 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
1db40 20 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74          /// A st
1db50 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65  andard SQLite re
1db60 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20  turn code...    
1db70 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
1db80 73 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  s>..        SQLi
1db90 74 65 45 72 72 6f 72 43 6f 64 65 20 43 6f 6d 6d  teErrorCode Comm
1dba0 69 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it(..           
1dbb0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
1dbc0 62 6c 65 20 74 61 62 6c 65 20 2f 2a 20 69 6e 20  ble table /* in 
1dbd0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1dbe0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
1dbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc30 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1dc40 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1dc50 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1dc60 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65   method is calle
1dc70 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f  d in response to
1dc80 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
1dc90 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  / <see cref="ISQ
1dca0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
1dcb0 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20 6d  .xRollback" /> m
1dcc0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
1dcd0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1dce0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
1dcf0 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e  am name="table">
1dd00 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1dd10 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
1dd20 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22  iteVirtualTable"
1dd30 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61   /> object insta
1dd40 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  nce associated..
1dd50 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68          /// with
1dd60 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61   this virtual ta
1dd70 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ble...        //
1dd80 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
1dd90 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1dda0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 41  >..        /// A
1ddb0 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
1ddc0 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
1ddd0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
1dde0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 53  urns>..        S
1ddf0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52  QLiteErrorCode R
1de00 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20  ollback(..      
1de10 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
1de20 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 2f  ualTable table /
1de30 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
1de40 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
1de50 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1de60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1de90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1dea0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
1deb0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ry>..        ///
1dec0 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20   This method is 
1ded0 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e  called in respon
1dee0 73 65 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  se to the..     
1def0 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
1df00 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
1df10 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
1df20 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ion" /> method..
1df30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  .        /// </s
1df40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
1df50 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1df60 3d 22 74 61 62 6c 65 22 3e 0d 0a 20 20 20 20 20  ="table">..     
1df70 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
1df80 63 72 65 66 3d 22 53 51 4c 69 74 65 56 69 72 74  cref="SQLiteVirt
1df90 75 61 6c 54 61 62 6c 65 22 20 2f 3e 20 6f 62 6a  ualTable" /> obj
1dfa0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 61 73 73  ect instance ass
1dfb0 6f 63 69 61 74 65 64 0d 0a 20 20 20 20 20 20 20  ociated..       
1dfc0 20 2f 2f 2f 20 77 69 74 68 20 74 68 69 73 20 76   /// with this v
1dfd0 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20  irtual table... 
1dfe0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1dff0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1e000 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
1e010 67 75 6d 65 6e 74 43 6f 75 6e 74 22 3e 0d 0a 20  gumentCount">.. 
1e020 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1e030 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e  umber of argumen
1e040 74 73 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69  ts to the functi
1e050 6f 6e 20 62 65 69 6e 67 20 73 6f 75 67 68 74 2e  on being sought.
1e060 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1e070 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1e080 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
1e090 22 6e 61 6d 65 22 3e 0d 0a 20 20 20 20 20 20 20  "name">..       
1e0a0 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20 6f 66   /// The name of
1e0b0 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 62 65   the function be
1e0c0 69 6e 67 20 73 6f 75 67 68 74 2e 0d 0a 20 20 20  ing sought...   
1e0d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1e0e0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1e0f0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63  param name="func
1e100 74 69 6f 6e 22 3e 0d 0a 20 20 20 20 20 20 20 20  tion">..        
1e110 2f 2f 2f 20 55 70 6f 6e 20 73 75 63 63 65 73 73  /// Upon success
1e120 2c 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72  , this parameter
1e130 20 6d 75 73 74 20 62 65 20 6d 6f 64 69 66 69 65   must be modifie
1e140 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65  d to contain the
1e150 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1e160 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 46  ee cref="SQLiteF
1e170 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6f 62 6a 65  unction" /> obje
1e180 63 74 20 69 6e 73 74 61 6e 63 65 20 72 65 73 70  ct instance resp
1e190 6f 6e 73 69 62 6c 65 20 66 6f 72 0d 0a 20 20 20  onsible for..   
1e1a0 20 20 20 20 20 2f 2f 2f 20 69 6d 70 6c 65 6d 65       /// impleme
1e1b0 6e 74 69 6e 67 20 74 68 65 20 73 70 65 63 69 66  nting the specif
1e1c0 69 65 64 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20  ied function... 
1e1d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
1e1e0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  am>..        ///
1e1f0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43   <param name="pC
1e200 6c 69 65 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20  lientData">..   
1e210 20 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 73 75       /// Upon su
1e220 63 63 65 73 73 2c 20 74 68 69 73 20 70 61 72 61  ccess, this para
1e230 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 6d 6f  meter must be mo
1e240 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69  dified to contai
1e250 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  n the..        /
1e260 2f 2f 20 6e 61 74 69 76 65 20 75 73 65 72 2d 64  // native user-d
1e270 61 74 61 20 70 6f 69 6e 74 65 72 20 61 73 73 6f  ata pointer asso
1e280 63 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20  ciated with..   
1e290 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 72       /// <paramr
1e2a0 65 66 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f  ef name="functio
1e2b0 6e 22 20 2f 3e 2e 0d 0a 20 20 20 20 20 20 20 20  n" />...        
1e2c0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
1e2d0 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72        /// <retur
1e2e0 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ns>..        ///
1e2f0 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
1e300 20 73 70 65 63 69 66 69 65 64 20 66 75 6e 63 74   specified funct
1e310 69 6f 6e 20 77 61 73 20 66 6f 75 6e 64 3b 20 7a  ion was found; z
1e320 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a  ero otherwise...
1e330 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
1e340 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
1e350 62 6f 6f 6c 20 46 69 6e 64 46 75 6e 63 74 69 6f  bool FindFunctio
1e360 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
1e370 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
1e380 6c 65 20 74 61 62 6c 65 2c 20 20 20 20 2f 2a 20  le table,    /* 
1e390 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  in */..         
1e3a0 20 20 20 69 6e 74 20 61 72 67 75 6d 65 6e 74 43     int argumentC
1e3b0 6f 75 6e 74 2c 20 20 20 20 20 20 20 20 20 20 20  ount,           
1e3c0 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
1e3d0 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
1e3e0 65 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  e,              
1e3f0 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
1e400 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c           ref SQL
1e410 69 74 65 46 75 6e 63 74 69 6f 6e 20 66 75 6e 63  iteFunction func
1e420 74 69 6f 6e 2c 20 2f 2a 20 6f 75 74 20 2a 2f 0d  tion, /* out */.
1e430 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
1e440 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44   IntPtr pClientD
1e450 61 74 61 20 20 20 20 20 20 20 2f 2a 20 6f 75 74  ata       /* out
1e460 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
1e470 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
1e480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e4c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1e4d0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1e4e0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1e4f0 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c  s method is call
1e500 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  ed in response t
1e510 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f  o the..        /
1e520 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  // <see cref="IS
1e530 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
1e540 65 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65  e.xRename" /> me
1e550 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1e560 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1e570 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1e580 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
1e590 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1e5a0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1e5b0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
1e5c0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1e5d0 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
1e5e0 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
1e5f0 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
1e600 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
1e610 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1e620 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1e630 6d 65 3d 22 6e 65 77 4e 61 6d 65 22 3e 0d 0a 20  me="newName">.. 
1e640 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e         /// The n
1e650 65 77 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  ew name for the 
1e660 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a  virtual table...
1e670 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
1e680 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ram>..        //
1e690 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
1e6a0 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64       /// A stand
1e6b0 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75 72  ard SQLite retur
1e6c0 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20  n code...       
1e6d0 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
1e6e0 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45  .        SQLiteE
1e6f0 72 72 6f 72 43 6f 64 65 20 52 65 6e 61 6d 65 28  rrorCode Rename(
1e700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
1e710 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1e720 20 74 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f   table, /* in */
1e730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
1e740 72 69 6e 67 20 6e 65 77 4e 61 6d 65 20 20 20 20  ring newName    
1e750 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
1e760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
1e770 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
1e780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1e7c0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
1e7d0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1e7e0 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d        /// This m
1e7f0 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20  ethod is called 
1e800 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74  in response to t
1e810 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  he..        /// 
1e820 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
1e830 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
1e840 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20 6d 65  Savepoint" /> me
1e850 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f  thod...        /
1e860 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1e870 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
1e880 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d  m name="table">.
1e890 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  .        /// The
1e8a0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
1e8b0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20  teVirtualTable" 
1e8c0 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
1e8d0 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20  ce associated.. 
1e8e0 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20         /// with 
1e8f0 74 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62  this virtual tab
1e900 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  le...        ///
1e910 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
1e920 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1e930 6d 65 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d  me="savepoint">.
1e940 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  .        /// Thi
1e950 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20  s is an integer 
1e960 69 64 65 6e 74 69 66 69 65 72 20 75 6e 64 65 72  identifier under
1e970 20 77 68 69 63 68 20 74 68 65 20 74 68 65 20 63   which the the c
1e980 75 72 72 65 6e 74 20 73 74 61 74 65 20 6f 66 0d  urrent state of.
1e990 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  .        /// the
1e9a0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 73   virtual table s
1e9b0 68 6f 75 6c 64 20 62 65 20 73 61 76 65 64 2e 0d  hould be saved..
1e9c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70  .        /// </p
1e9d0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 2f  aram>..        /
1e9e0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
1e9f0 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61 6e        /// A stan
1ea00 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74 75  dard SQLite retu
1ea10 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  rn code...      
1ea20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
1ea30 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
1ea40 45 72 72 6f 72 43 6f 64 65 20 53 61 76 65 70 6f  ErrorCode Savepo
1ea50 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  int(..          
1ea60 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
1ea70 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a 20 69  able table, /* i
1ea80 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1ea90 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74 20    int savepoint 
1eaa0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
1eab0 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  n */..          
1eac0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
1ead0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eaf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eb10 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1eb20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1eb30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68  ..        /// Th
1eb40 69 73 20 6d 65 74 68 6f 64 20 69 73 20 63 61 6c  is method is cal
1eb50 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
1eb60 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
1eb70 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 49  /// <see cref="I
1eb80 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
1eb90 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20  le.xRelease" /> 
1eba0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
1ebb0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1ebc0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61  .        /// <pa
1ebd0 72 61 6d 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22  ram name="table"
1ebe0 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1ebf0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
1ec00 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
1ec10 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74  " /> object inst
1ec20 61 6e 63 65 20 61 73 73 6f 63 69 61 74 65 64 0d  ance associated.
1ec30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 77 69 74  .        /// wit
1ec40 68 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 74  h this virtual t
1ec50 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f  able...        /
1ec60 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
1ec70 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
1ec80 6e 61 6d 65 3d 22 73 61 76 65 70 6f 69 6e 74 22  name="savepoint"
1ec90 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 54  >..        /// T
1eca0 68 69 73 20 69 73 20 61 6e 20 69 6e 74 65 67 65  his is an intege
1ecb0 72 20 75 73 65 64 20 74 6f 20 69 6e 64 69 63 61  r used to indica
1ecc0 74 65 20 74 68 61 74 20 61 6e 79 20 73 61 76 65  te that any save
1ecd0 64 20 73 74 61 74 65 73 20 77 69 74 68 20 61 6e  d states with an
1ece0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 69 64  ..        /// id
1ecf0 65 6e 74 69 66 69 65 72 20 67 72 65 61 74 65 72  entifier greater
1ed00 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74   than or equal t
1ed10 6f 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65  o this should be
1ed20 20 64 65 6c 65 74 65 64 20 62 79 20 74 68 65 0d   deleted by the.
1ed30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 76 69 72  .        /// vir
1ed40 74 75 61 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20  tual table...   
1ed50 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
1ed60 3e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c  >..        /// <
1ed70 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
1ed80 20 20 2f 2f 2f 20 41 20 73 74 61 6e 64 61 72 64    /// A standard
1ed90 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 20 63   SQLite return c
1eda0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ode...        //
1edb0 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
1edc0 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
1edd0 72 43 6f 64 65 20 52 65 6c 65 61 73 65 28 0d 0a  rCode Release(..
1ede0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
1edf0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
1ee00 61 62 6c 65 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a  able, /* in */..
1ee10 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
1ee20 73 61 76 65 70 6f 69 6e 74 20 20 20 20 20 20 20  savepoint       
1ee30 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
1ee40 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
1ee50 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1ee60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1eea0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  /....        ///
1eeb0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1eec0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
1eed0 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  hod is called in
1eee0 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 74 68 65   response to the
1eef0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ..        /// <s
1ef00 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
1ef10 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f  NativeModule.xRo
1ef20 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65 74  llbackTo" /> met
1ef30 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  hod...        //
1ef40 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1ef50 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
1ef60 20 6e 61 6d 65 3d 22 74 61 62 6c 65 22 3e 0d 0a   name="table">..
1ef70 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20          /// The 
1ef80 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
1ef90 65 56 69 72 74 75 61 6c 54 61 62 6c 65 22 20 2f  eVirtualTable" /
1efa0 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
1efb0 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
1efc0 20 20 20 20 20 20 2f 2f 2f 20 77 69 74 68 20 74        /// with t
1efd0 68 69 73 20 76 69 72 74 75 61 6c 20 74 61 62 6c  his virtual tabl
1efe0 65 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20  e...        /// 
1eff0 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
1f000 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1f010 65 3d 22 73 61 76 65 70 6f 69 6e 74 22 3e 0d 0a  e="savepoint">..
1f020 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73          /// This
1f030 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 69   is an integer i
1f040 64 65 6e 74 69 66 69 65 72 20 75 73 65 64 20 74  dentifier used t
1f050 6f 20 73 70 65 63 69 66 79 20 61 20 73 70 65 63  o specify a spec
1f060 69 66 69 63 20 73 61 76 65 64 0d 0a 20 20 20 20  ific saved..    
1f070 20 20 20 20 2f 2f 2f 20 73 74 61 74 65 20 66 6f      /// state fo
1f080 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  r the virtual ta
1f090 62 6c 65 20 66 6f 72 20 69 74 20 74 6f 20 72 65  ble for it to re
1f0a0 73 74 6f 72 65 20 69 74 73 65 6c 66 20 62 61 63  store itself bac
1f0b0 6b 20 74 6f 2c 20 77 68 69 63 68 0d 0a 20 20 20  k to, which..   
1f0c0 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20       /// should 
1f0d0 61 6c 73 6f 20 68 61 76 65 20 74 68 65 20 65 66  also have the ef
1f0e0 66 65 63 74 20 6f 66 20 64 65 6c 65 74 69 6e 67  fect of deleting
1f0f0 20 61 6c 6c 20 73 61 76 65 64 20 73 74 61 74 65   all saved state
1f100 73 20 77 69 74 68 20 61 6e 0d 0a 20 20 20 20 20  s with an..     
1f110 20 20 20 2f 2f 2f 20 69 6e 74 65 67 65 72 20 69     /// integer i
1f120 64 65 6e 74 69 66 69 65 72 20 67 72 65 61 74 65  dentifier greate
1f130 72 20 74 68 61 6e 20 74 68 69 73 20 6f 6e 65 2e  r than this one.
1f140 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
1f150 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
1f160 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
1f170 20 20 20 20 20 20 20 2f 2f 2f 20 41 20 73 74 61         /// A sta
1f180 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72 65 74  ndard SQLite ret
1f190 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20  urn code...     
1f1a0 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
1f1b0 3e 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  >..        SQLit
1f1c0 65 45 72 72 6f 72 43 6f 64 65 20 52 6f 6c 6c 62  eErrorCode Rollb
1f1d0 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20  ackTo(..        
1f1e0 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
1f1f0 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 20 2f 2a  lTable table, /*
1f200 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1f210 20 20 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e      int savepoin
1f220 74 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  t             /*
1f230 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
1f240 20 20 20 20 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20      );..    }.. 
1f250 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1f260 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
1f270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f2b0 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
1f2c0 53 51 4c 69 74 65 4d 65 6d 6f 72 79 20 53 74 61  SQLiteMemory Sta
1f2d0 74 69 63 20 43 6c 61 73 73 0d 0a 20 20 20 20 69  tic Class..    i
1f2e0 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
1f2f0 6c 61 73 73 20 53 51 4c 69 74 65 4d 65 6d 6f 72  lass SQLiteMemor
1f300 79 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  y..    {..      
1f310 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
1f320 65 20 44 61 74 61 0d 0a 23 69 66 20 54 52 41 43  e Data..#if TRAC
1f330 4b 5f 4d 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a  K_MEMORY_BYTES..
1f340 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1f350 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20 73 79  static object sy
1f360 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a  ncRoot = new obj
1f370 65 63 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ect();....      
1f380 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1f390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1f3d0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
1f3e0 74 69 63 20 69 6e 74 20 62 79 74 65 73 41 6c 6c  tic int bytesAll
1f3f0 6f 63 61 74 65 64 3b 0d 0a 20 20 20 20 20 20 20  ocated;..       
1f400 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
1f410 69 6e 74 20 6d 61 78 69 6d 75 6d 42 79 74 65 73  int maximumBytes
1f420 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a 23 65 6e 64  Allocated;..#end
1f430 69 66 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  if..        #end
1f440 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
1f450 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1f460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f490 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1f4a0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4d 65 6d       #region Mem
1f4b0 6f 72 79 20 41 6c 6c 6f 63 61 74 69 6f 6e 20 48  ory Allocation H
1f4c0 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
1f4d0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
1f4e0 61 74 69 63 20 49 6e 74 50 74 72 20 41 6c 6c 6f  atic IntPtr Allo
1f4f0 63 61 74 65 28 69 6e 74 20 73 69 7a 65 29 0d 0a  cate(int size)..
1f500 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1f510 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 4d         IntPtr pM
1f520 65 6d 6f 72 79 20 3d 20 55 6e 73 61 66 65 4e 61  emory = UnsafeNa
1f530 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
1f540 74 65 33 5f 6d 61 6c 6c 6f 63 28 73 69 7a 65 29  te3_malloc(size)
1f550 3b 0d 0a 0d 0a 23 69 66 20 54 52 41 43 4b 5f 4d  ;....#if TRACK_M
1f560 45 4d 4f 52 59 5f 42 59 54 45 53 0d 0a 20 20 20  EMORY_BYTES..   
1f570 20 20 20 20 20 20 20 20 20 69 66 20 28 70 4d 65           if (pMe
1f580 6d 6f 72 79 20 21 3d 20 49 6e 74 50 74 72 2e 5a  mory != IntPtr.Z
1f590 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
1f5a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1f5b0 20 20 20 20 20 69 6e 74 20 62 6c 6f 63 6b 53 69       int blockSi
1f5c0 7a 65 20 3d 20 53 69 7a 65 28 70 4d 65 6d 6f 72  ze = Size(pMemor
1f5d0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
1f5e0 20 20 20 20 20 20 20 69 66 20 28 62 6c 6f 63 6b         if (block
1f5f0 53 69 7a 65 20 3e 20 30 29 0d 0a 20 20 20 20 20  Size > 0)..     
1f600 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1f610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f620 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
1f630 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1f640 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1f650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f660 20 20 62 79 74 65 73 41 6c 6c 6f 63 61 74 65 64    bytesAllocated
1f670 20 2b 3d 20 62 6c 6f 63 6b 53 69 7a 65 3b 0d 0a   += blockSize;..
1f680 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f690 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79            if (by
1f6a0 74 65 73 41 6c 6c 6f 63 61 74 65 64 20 3e 20 6d  tesAllocated > m
1f6b0 61 78 69 6d 75 6d 42 79 74 65 73 41 6c 6c 6f 63  aximumBytesAlloc
1f6c0 61 74 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20  ated)..         
1f6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f6e0 20 20 20 6d 61 78 69 6d 75 6d 42 79 74 65 73 41     maximumBytesA
1f6f0 6c 6c 6f 63 61 74 65 64 20 3d 20 62 79 74 65 73  llocated = bytes
1f700 41 6c 6c 6f 63 61 74 65 64 3b 0d 0a 20 20 20 20  Allocated;..    
1f710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f720 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1f730 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1f740 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
1f750 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1f760 6e 20 70 4d 65 6d 6f 72 79 3b 0d 0a 20 20 20 20  n pMemory;..    
1f770 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1f780 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1f790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f7c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1f7d0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
1f7e0 63 20 69 6e 74 20 53 69 7a 65 28 49 6e 74 50 74  c int Size(IntPt
1f7f0 72 20 70 4d 65 6d 6f 72 79 29 0d 0a 20 20 20 20  r pMemory)..    
1f800 20 20 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49      {..#if !SQLI
1f810 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20  TE_STANDARD..   
1f820 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1f830 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1f840 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  ods.sqlite3_mall
1f850 6f 63 5f 73 69 7a 65 5f 69 6e 74 65 72 6f 70 28  oc_size_interop(
1f860 70 4d 65 6d 6f 72 79 29 3b 0d 0a 23 65 6c 73 65  pMemory);..#else
1f870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1f880 74 75 72 6e 20 30 3b 0d 0a 23 65 6e 64 69 66 0d  turn 0;..#endif.
1f890 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1f8a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1f8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1f8f0 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
1f900 73 74 61 74 69 63 20 76 6f 69 64 20 46 72 65 65  static void Free
1f910 28 49 6e 74 50 74 72 20 70 4d 65 6d 6f 72 79 29  (IntPtr pMemory)
1f920 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
1f930 20 54 52 41 43 4b 5f 4d 45 4d 4f 52 59 5f 42 59   TRACK_MEMORY_BY
1f940 54 45 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20  TES..           
1f950 20 69 66 20 28 70 4d 65 6d 6f 72 79 20 21 3d 20   if (pMemory != 
1f960 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
1f970 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1f980 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
1f990 20 62 6c 6f 63 6b 53 69 7a 65 20 3d 20 53 69 7a   blockSize = Siz
1f9a0 65 28 70 4d 65 6d 6f 72 79 29 3b 0d 0a 0d 0a 20  e(pMemory);.... 
1f9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1f9c0 66 20 28 62 6c 6f 63 6b 53 69 7a 65 20 3e 20 30  f (blockSize > 0
1f9d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1f9e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1f9f0 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
1fa00 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
1fa10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1fa20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fa30 20 20 20 20 20 20 20 20 20 20 62 79 74 65 73 41            bytesA
1fa40 6c 6c 6f 63 61 74 65 64 20 2d 3d 20 62 6c 6f 63  llocated -= bloc
1fa50 6b 53 69 7a 65 3b 0d 0a 20 20 20 20 20 20 20 20  kSize;..        
1fa60 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1fa70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1fa80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1fa90 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
1faa0 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
1fab0 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
1fac0 65 33 5f 66 72 65 65 28 70 4d 65 6d 6f 72 79 29  e3_free(pMemory)
1fad0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
1fae0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1faf0 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
1fb00 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
1fb10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1fb60 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
1fb70 53 74 72 69 6e 67 20 53 74 61 74 69 63 20 43 6c  String Static Cl
1fb80 61 73 73 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ass..    interna
1fb90 6c 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 53  l static class S
1fba0 51 4c 69 74 65 53 74 72 69 6e 67 0d 0a 20 20 20  QLiteString..   
1fbb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
1fbc0 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73  ion Private Cons
1fbd0 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 70  tants..        p
1fbe0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e  rivate static in
1fbf0 74 20 54 68 69 72 74 79 42 69 74 73 20 3d 20 30  t ThirtyBits = 0
1fc00 78 33 66 66 66 66 66 66 66 3b 0d 0a 20 20 20 20  x3fffffff;..    
1fc10 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
1fc20 69 63 20 72 65 61 64 6f 6e 6c 79 20 45 6e 63 6f  ic readonly Enco
1fc30 64 69 6e 67 20 55 74 66 38 45 6e 63 6f 64 69 6e  ding Utf8Encodin
1fc40 67 20 3d 20 45 6e 63 6f 64 69 6e 67 2e 55 54 46  g = Encoding.UTF
1fc50 38 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  8;..        #end
1fc60 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
1fc70 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1fc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fc90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1fcc0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 55 54 46       #region UTF
1fcd0 2d 38 20 45 6e 63 6f 64 69 6e 67 20 48 65 6c 70  -8 Encoding Help
1fce0 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
1fcf0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
1fd00 63 20 62 79 74 65 5b 5d 20 47 65 74 55 74 66 38  c byte[] GetUtf8
1fd10 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28  BytesFromString(
1fd20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
1fd30 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20  ring value..    
1fd40 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
1fd50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1fd60 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
1fd70 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1fd80 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
1fd90 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
1fda0 20 20 72 65 74 75 72 6e 20 55 74 66 38 45 6e 63    return Utf8Enc
1fdb0 6f 64 69 6e 67 2e 47 65 74 42 79 74 65 73 28 76  oding.GetBytes(v
1fdc0 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
1fdd0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
1fde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fdf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe20 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1fe30 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
1fe40 72 69 6e 67 20 47 65 74 53 74 72 69 6e 67 46 72  ring GetStringFr
1fe50 6f 6d 55 74 66 38 42 79 74 65 73 28 0d 0a 20 20  omUtf8Bytes(..  
1fe60 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d            byte[]
1fe70 20 62 79 74 65 73 0d 0a 20 20 20 20 20 20 20 20   bytes..        
1fe80 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
1fe90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1fea0 20 28 62 79 74 65 73 20 3d 3d 20 6e 75 6c 6c 29   (bytes == null)
1feb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fec0 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
1fed0 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
1fee0 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
1fef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
1ff00 74 75 72 6e 20 55 74 66 38 45 6e 63 6f 64 69 6e  turn Utf8Encodin
1ff10 67 2e 47 65 74 53 74 72 69 6e 67 28 62 79 74 65  g.GetString(byte
1ff20 73 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  s);..#else..    
1ff30 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
1ff40 74 66 38 45 6e 63 6f 64 69 6e 67 2e 47 65 74 53  tf8Encoding.GetS
1ff50 74 72 69 6e 67 28 62 79 74 65 73 2c 20 30 2c 20  tring(bytes, 0, 
1ff60 62 79 74 65 73 2e 4c 65 6e 67 74 68 29 3b 0d 0a  bytes.Length);..
1ff70 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
1ff80 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
1ff90 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
1ffa0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1ffb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ffe0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1fff0 20 20 20 20 23 72 65 67 69 6f 6e 20 55 54 46 2d      #region UTF-
20000 38 20 53 74 72 69 6e 67 20 48 65 6c 70 65 72 20  8 String Helper 
20010 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
20020 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69   public static i
20030 6e 74 20 50 72 6f 62 65 46 6f 72 55 74 66 38 42  nt ProbeForUtf8B
20040 79 74 65 4c 65 6e 67 74 68 28 0d 0a 20 20 20 20  yteLength(..    
20050 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
20060 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20  Value,..        
20070 20 20 20 20 69 6e 74 20 6c 69 6d 69 74 0d 0a 20      int limit.. 
20080 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
20090 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
200a0 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20       int length 
200b0 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
200c0 20 20 20 20 69 66 20 28 70 56 61 6c 75 65 20 21      if (pValue !
200d0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a  = IntPtr.Zero)..
200e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
200f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
20100 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  o..             
20110 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
20120 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4d 61            if (Ma
20130 72 73 68 61 6c 2e 52 65 61 64 42 79 74 65 28 70  rshal.ReadByte(p
20140 56 61 6c 75 65 2c 20 6c 65 6e 67 74 68 29 20 3d  Value, length) =
20150 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0)..          
20160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
20170 65 61 6b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  eak;....        
20180 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
20190 6c 65 6e 67 74 68 20 3e 3d 20 6c 69 6d 69 74 29  length >= limit)
201a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
201b0 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
201c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
201d0 20 20 20 20 20 20 20 20 6c 65 6e 67 74 68 2b 2b          length++
201e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
201f0 20 20 20 7d 20 77 68 69 6c 65 20 28 74 72 75 65     } while (true
20200 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
20210 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
20220 20 72 65 74 75 72 6e 20 6c 65 6e 67 74 68 3b 0d   return length;.
20230 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
20240 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
20250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
20290 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
202a0 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 53 74  static string St
202b0 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50  ringFromUtf8IntP
202c0 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
202d0 20 49 6e 74 50 74 72 20 70 56 61 6c 75 65 0d 0a   IntPtr pValue..
202e0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
202f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20300 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72        return Str
20310 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74  ingFromUtf8IntPt
20320 72 28 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20  r(pValue,..     
20330 20 20 20 20 20 20 20 20 20 20 20 50 72 6f 62 65             Probe
20340 46 6f 72 55 74 66 38 42 79 74 65 4c 65 6e 67 74  ForUtf8ByteLengt
20350 68 28 70 56 61 6c 75 65 2c 20 54 68 69 72 74 79  h(pValue, Thirty
20360 42 69 74 73 29 29 3b 0d 0a 20 20 20 20 20 20 20  Bits));..       
20370 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
20380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
203a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
203b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
203c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
203d0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
203e0 74 72 69 6e 67 20 53 74 72 69 6e 67 46 72 6f 6d  tring StringFrom
203f0 55 74 66 38 49 6e 74 50 74 72 28 0d 0a 20 20 20  Utf8IntPtr(..   
20400 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
20410 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20  pValue,..       
20420 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 0d       int length.
20430 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
20440 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
20450 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c 75         if (pValu
20460 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  e == IntPtr.Zero
20470 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
20480 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
20490 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
204a0 66 20 28 6c 65 6e 67 74 68 20 3e 20 30 29 0d 0a  f (length > 0)..
204b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
204c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
204d0 79 74 65 5b 5d 20 62 79 74 65 73 20 3d 20 6e 65  yte[] bytes = ne
204e0 77 20 62 79 74 65 5b 6c 65 6e 67 74 68 5d 3b 0d  w byte[length];.
204f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
20500 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70 79 28     Marshal.Copy(
20510 70 56 61 6c 75 65 2c 20 62 79 74 65 73 2c 20 30  pValue, bytes, 0
20520 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 0d 0a 20 20  , length);....  
20530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
20540 74 75 72 6e 20 47 65 74 53 74 72 69 6e 67 46 72  turn GetStringFr
20550 6f 6d 55 74 66 38 42 79 74 65 73 28 62 79 74 65  omUtf8Bytes(byte
20560 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s);..           
20570 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
20580 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e    return String.
20590 45 6d 70 74 79 3b 0d 0a 20 20 20 20 20 20 20 20  Empty;..        
205a0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
205b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
205c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
205d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
205e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
205f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
20600 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e  public static In
20610 74 50 74 72 20 55 74 66 38 49 6e 74 50 74 72 46  tPtr Utf8IntPtrF
20620 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  romString(..    
20630 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
20640 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
20650 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
20660 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
20670 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
20680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20690 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65  return IntPtr.Ze
206a0 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ro;....         
206b0 20 20 20 49 6e 74 50 74 72 20 72 65 73 75 6c 74     IntPtr result
206c0 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
206d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74  .            byt
206e0 65 5b 5d 20 62 79 74 65 73 20 3d 20 47 65 74 55  e[] bytes = GetU
206f0 74 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69  tf8BytesFromStri
20700 6e 67 28 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  ng(value);....  
20710 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79            if (by
20720 74 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tes == null)..  
20730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
20740 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
20750 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
20760 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 62 79   int length = by
20770 74 65 73 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20  tes.Length;.... 
20780 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
20790 74 20 3d 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79  t = SQLiteMemory
207a0 2e 41 6c 6c 6f 63 61 74 65 28 6c 65 6e 67 74 68  .Allocate(length
207b0 20 2b 20 31 29 3b 0d 0a 0d 0a 20 20 20 20 20 20   + 1);....      
207c0 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74        if (result
207d0 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
207e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
207f0 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
20800 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
20810 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f 70       Marshal.Cop
20820 79 28 62 79 74 65 73 2c 20 30 2c 20 72 65 73 75  y(bytes, 0, resu
20830 6c 74 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 20 20  lt, length);..  
20840 20 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61            Marsha
20850 6c 2e 57 72 69 74 65 42 79 74 65 28 72 65 73 75  l.WriteByte(resu
20860 6c 74 2c 20 6c 65 6e 67 74 68 2c 20 30 29 3b 0d  lt, length, 0);.
20870 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
20880 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20  eturn result;.. 
20890 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
208a0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
208b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
208c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
208d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
208e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
208f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
20900 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
20910 6f 6e 20 55 54 46 2d 38 20 53 74 72 69 6e 67 20  on UTF-8 String 
20920 41 72 72 61 79 20 48 65 6c 70 65 72 20 4d 65 74  Array Helper Met
20930 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 70 75  hods..        pu
20940 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
20950 6e 67 5b 5d 20 53 74 72 69 6e 67 41 72 72 61 79  ng[] StringArray
20960 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 41 72  FromUtf8IntPtrAr
20970 72 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ray(..          
20980 20 20 49 6e 74 50 74 72 5b 5d 20 70 56 61 6c 75    IntPtr[] pValu
20990 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
209a0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
209b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56            if (pV
209c0 61 6c 75 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  alues == null)..
209d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
209e0 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
209f0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
20a00 6e 67 5b 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65  ng[] result = ne
20a10 77 20 73 74 72 69 6e 67 5b 70 56 61 6c 75 65 73  w string[pValues
20a20 2e 4c 65 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20  .Length];....   
20a30 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e           for (in
20a40 74 20 69 6e 64 65 78 20 3d 20 30 3b 20 69 6e 64  t index = 0; ind
20a50 65 78 20 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67  ex < result.Leng
20a60 74 68 3b 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20  th; index++)..  
20a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
20a80 73 75 6c 74 5b 69 6e 64 65 78 5d 20 3d 20 53 74  sult[index] = St
20a90 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50  ringFromUtf8IntP
20aa0 74 72 28 70 56 61 6c 75 65 73 5b 69 6e 64 65 78  tr(pValues[index
20ab0 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ]);....         
20ac0 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
20ad0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
20ae0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
20af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
20b30 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
20b40 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72 5b  c static IntPtr[
20b50 5d 20 55 74 66 38 49 6e 74 50 74 72 41 72 72 61  ] Utf8IntPtrArra
20b60 79 46 72 6f 6d 53 74 72 69 6e 67 41 72 72 61 79  yFromStringArray
20b70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
20b80 74 72 69 6e 67 5b 5d 20 76 61 6c 75 65 73 0d 0a  tring[] values..
20b90 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
20ba0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20bb0 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 73        if (values
20bc0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
20bd0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
20be0 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
20bf0 20 20 20 20 20 20 20 49 6e 74 50 74 72 5b 5d 20         IntPtr[] 
20c00 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 49 6e 74  result = new Int
20c10 50 74 72 5b 76 61 6c 75 65 73 2e 4c 65 6e 67 74  Ptr[values.Lengt
20c20 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  h];....         
20c30 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65     for (int inde
20c40 78 20 3d 20 30 3b 20 69 6e 64 65 78 20 3c 20 72  x = 0; index < r
20c50 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 20 69 6e  esult.Length; in
20c60 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20  dex++)..        
20c70 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 5b 69          result[i
20c80 6e 64 65 78 5d 20 3d 20 55 74 66 38 49 6e 74 50  ndex] = Utf8IntP
20c90 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 76 61 6c  trFromString(val
20ca0 75 65 73 5b 69 6e 64 65 78 5d 29 3b 0d 0a 0d 0a  ues[index]);....
20cb0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
20cc0 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
20cd0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
20ce0 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
20cf0 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
20d00 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
20d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d50 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69  ///....    #regi
20d60 6f 6e 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c  on SQLiteMarshal
20d70 20 53 74 61 74 69 63 20 43 6c 61 73 73 0d 0a 20   Static Class.. 
20d80 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
20d90 69 63 20 63 6c 61 73 73 20 53 51 4c 69 74 65 4d  ic class SQLiteM
20da0 61 72 73 68 61 6c 0d 0a 20 20 20 20 7b 0d 0a 20  arshal..    {.. 
20db0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
20dc0 6e 74 50 74 72 20 48 65 6c 70 65 72 20 4d 65 74  ntPtr Helper Met
20dd0 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 70 75  hods..        pu
20de0 62 6c 69 63 20 73 74 61 74 69 63 20 49 6e 74 50  blic static IntP
20df0 74 72 20 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  tr IntPtrForOffs
20e00 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et(..           
20e10 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65 72 2c   IntPtr pointer,
20e20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
20e30 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20 20 20  t offset..      
20e40 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
20e50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
20e60 72 65 74 75 72 6e 20 6e 65 77 20 49 6e 74 50 74  return new IntPt
20e70 72 28 70 6f 69 6e 74 65 72 2e 54 6f 49 6e 74 36  r(pointer.ToInt6
20e80 34 28 29 20 2b 20 6f 66 66 73 65 74 29 3b 0d 0a  4() + offset);..
20e90 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
20ea0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
20eb0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
20ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
20f10 69 6f 6e 20 4d 61 72 73 68 61 6c 20 52 65 61 64  ion Marshal Read
20f20 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
20f30 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
20f40 73 74 61 74 69 63 20 69 6e 74 20 52 65 61 64 49  static int ReadI
20f50 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20  nt32(..         
20f60 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e 74 65     IntPtr pointe
20f70 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
20f80 69 6e 74 20 6f 66 66 73 65 74 0d 0a 20 20 20 20  int offset..    
20f90 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
20fa0 20 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46     {..#if !PLATF
20fb0 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
20fc0 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
20fd0 20 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c    return Marshal
20fe0 2e 52 65 61 64 49 6e 74 33 32 28 70 6f 69 6e 74  .ReadInt32(point
20ff0 65 72 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 23 65  er, offset);..#e
21000 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
21010 20 72 65 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e   return Marshal.
21020 52 65 61 64 49 6e 74 33 32 28 49 6e 74 50 74 72  ReadInt32(IntPtr
21030 46 6f 72 4f 66 66 73 65 74 28 70 6f 69 6e 74 65  ForOffset(pointe
21040 72 2c 20 6f 66 66 73 65 74 29 29 3b 0d 0a 23 65  r, offset));..#e
21050 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
21060 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
21070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
210a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
210b0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
210c0 62 6c 69 63 20 73 74 61 74 69 63 20 64 6f 75 62  blic static doub
210d0 6c 65 20 52 65 61 64 44 6f 75 62 6c 65 28 0d 0a  le ReadDouble(..
210e0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
210f0 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20  tr pointer,..   
21100 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
21110 73 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  set..           
21120 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23   )..        {..#
21130 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
21140 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
21150 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
21160 6e 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e 49  n BitConverter.I
21170 6e 74 36 34 42 69 74 73 54 6f 44 6f 75 62 6c 65  nt64BitsToDouble
21180 28 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74  (Marshal.ReadInt
21190 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  64(..           
211a0 20 20 20 20 20 70 6f 69 6e 74 65 72 2c 20 6f 66       pointer, of
211b0 66 73 65 74 29 29 3b 0d 0a 23 65 6c 73 65 0d 0a  fset));..#else..
211c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
211d0 72 6e 20 42 69 74 43 6f 6e 76 65 72 74 65 72 2e  rn BitConverter.
211e0 54 6f 44 6f 75 62 6c 65 28 42 69 74 43 6f 6e 76  ToDouble(BitConv
211f0 65 72 74 65 72 2e 47 65 74 42 79 74 65 73 28 0d  erter.GetBytes(.
21200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21210 20 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74   Marshal.ReadInt
21220 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  64(IntPtrForOffs
21230 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  et(pointer, offs
21240 65 74 29 29 29 2c 20 30 29 3b 0d 0a 23 65 6e 64  et))), 0);..#end
21250 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  if..        }...
21260 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
21270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
212a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
212b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
212c0 69 63 20 73 74 61 74 69 63 20 49 6e 74 50 74 72  ic static IntPtr
212d0 20 52 65 61 64 49 6e 74 50 74 72 28 0d 0a 20 20   ReadIntPtr(..  
212e0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
212f0 20 70 6f 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20   pointer,..     
21300 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66 73 65         int offse
21310 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
21320 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
21330 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41   !PLATFORM_COMPA
21340 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
21350 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21360 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50  Marshal.ReadIntP
21370 74 72 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  tr(pointer, offs
21380 65 74 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  et);..#else..   
21390 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
213a0 4d 61 72 73 68 61 6c 2e 52 65 61 64 49 6e 74 50  Marshal.ReadIntP
213b0 74 72 28 49 6e 74 50 74 72 46 6f 72 4f 66 66 73  tr(IntPtrForOffs
213c0 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66 73  et(pointer, offs
213d0 65 74 29 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20  et));..#endif.. 
213e0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
213f0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
21400 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
21410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
21450 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
21460 6f 6e 20 4d 61 72 73 68 61 6c 20 57 72 69 74 65  on Marshal Write
21470 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
21480 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
21490 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69 74  static void Writ
214a0 65 49 6e 74 33 32 28 0d 0a 20 20 20 20 20 20 20  eInt32(..       
214b0 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f 69 6e       IntPtr poin
214c0 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ter,..          
214d0 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d 0a 20    int offset,.. 
214e0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 76             int v
214f0 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
21500 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
21510 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f  #if !PLATFORM_CO
21520 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a  MPACTFRAMEWORK..
21530 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
21540 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 70  hal.WriteInt32(p
21550 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 2c 20  ointer, offset, 
21560 76 61 6c 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a  value);..#else..
21570 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
21580 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28 49  hal.WriteInt32(I
21590 6e 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70  ntPtrForOffset(p
215a0 6f 69 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c  ointer, offset),
215b0 20 76 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66   value);..#endif
215c0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
215d0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
215e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
215f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
21620 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
21630 20 73 74 61 74 69 63 20 76 6f 69 64 20 57 72 69   static void Wri
21640 74 65 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20  teDouble(..     
21650 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 6f         IntPtr po
21660 69 6e 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  inter,..        
21670 20 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 0d      int offset,.
21680 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75  .            dou
21690 62 6c 65 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ble value..     
216a0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
216b0 20 20 7b 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f    {..#if !PLATFO
216c0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
216d0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
216e0 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e   Marshal.WriteIn
216f0 74 36 34 28 70 6f 69 6e 74 65 72 2c 20 6f 66 66  t64(pointer, off
21700 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  set,..          
21710 20 20 20 20 20 20 42 69 74 43 6f 6e 76 65 72 74        BitConvert
21720 65 72 2e 44 6f 75 62 6c 65 54 6f 49 6e 74 36 34  er.DoubleToInt64
21730 42 69 74 73 28 76 61 6c 75 65 29 29 3b 0d 0a 23  Bits(value));..#
21740 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
21750 20 20 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49    Marshal.WriteI
21760 6e 74 36 34 28 49 6e 74 50 74 72 46 6f 72 4f 66  nt64(IntPtrForOf
21770 66 73 65 74 28 70 6f 69 6e 74 65 72 2c 20 6f 66  fset(pointer, of
21780 66 73 65 74 29 2c 0d 0a 20 20 20 20 20 20 20 20  fset),..        
21790 20 20 20 20 20 20 20 20 42 69 74 43 6f 6e 76 65          BitConve
217a0 72 74 65 72 2e 54 6f 49 6e 74 36 34 28 42 69 74  rter.ToInt64(Bit
217b0 43 6f 6e 76 65 72 74 65 72 2e 47 65 74 42 79 74  Converter.GetByt
217c0 65 73 28 76 61 6c 75 65 29 2c 20 30 29 29 3b 0d  es(value), 0));.
217d0 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
217e0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
217f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21830 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
21840 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76   public static v
21850 6f 69 64 20 57 72 69 74 65 49 6e 74 50 74 72 28  oid WriteIntPtr(
21860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
21870 74 50 74 72 20 70 6f 69 6e 74 65 72 2c 0d 0a 20  tPtr pointer,.. 
21880 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f             int o
21890 66 66 73 65 74 2c 0d 0a 20 20 20 20 20 20 20 20  ffset,..        
218a0 20 20 20 20 49 6e 74 50 74 72 20 76 61 6c 75 65      IntPtr value
218b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
218c0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
218d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
218e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
218f0 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
21900 57 72 69 74 65 49 6e 74 50 74 72 28 70 6f 69 6e  WriteIntPtr(poin
21910 74 65 72 2c 20 6f 66 66 73 65 74 2c 20 76 61 6c  ter, offset, val
21920 75 65 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  ue);..#else..   
21930 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
21940 2e 57 72 69 74 65 49 6e 74 50 74 72 28 49 6e 74  .WriteIntPtr(Int
21950 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 6f 69  PtrForOffset(poi
21960 6e 74 65 72 2c 20 6f 66 66 73 65 74 29 2c 20 76  nter, offset), v
21970 61 6c 75 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  alue);..#endif..
21980 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
21990 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
219a0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
219b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
219f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
21a00 69 6f 6e 20 42 79 74 65 20 41 72 72 61 79 20 48  ion Byte Array H
21a10 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  elper Methods.. 
21a20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
21a30 61 74 69 63 20 62 79 74 65 5b 5d 20 42 79 74 65  atic byte[] Byte
21a40 73 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20  sFromIntPtr(..  
21a50 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
21a60 20 70 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20   pValue,..      
21a70 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68        int length
21a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
21a90 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
21aa0 20 20 20 20 20 20 20 20 69 66 20 28 70 56 61 6c          if (pVal
21ab0 75 65 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ue == IntPtr.Zer
21ac0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
21ad0 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
21ae0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
21af0 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d 20 30 29  if (length == 0)
21b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21b10 20 20 72 65 74 75 72 6e 20 6e 65 77 20 62 79 74    return new byt
21b20 65 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  e[0];....       
21b30 20 20 20 20 20 62 79 74 65 5b 5d 20 72 65 73 75       byte[] resu
21b40 6c 74 20 3d 20 6e 65 77 20 62 79 74 65 5b 6c 65  lt = new byte[le
21b50 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  ngth];....      
21b60 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f        Marshal.Co
21b70 70 79 28 70 56 61 6c 75 65 2c 20 72 65 73 75 6c  py(pValue, resul
21b80 74 2c 20 30 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a  t, 0, length);..
21b90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
21ba0 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
21bb0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
21bc0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
21bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
21c10 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
21c20 74 69 63 20 49 6e 74 50 74 72 20 42 79 74 65 73  tic IntPtr Bytes
21c30 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20 20  ToIntPtr(..     
21c40 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 76 61         byte[] va
21c50 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
21c60 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
21c70 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
21c80 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
21c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
21ca0 65 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72  eturn IntPtr.Zer
21cb0 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
21cc0 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 76    int length = v
21cd0 61 6c 75 65 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a  alue.Length;....
21ce0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
21cf0 6c 65 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20  length == 0)..  
21d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
21d10 74 75 72 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f  turn IntPtr.Zero
21d20 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
21d30 20 49 6e 74 50 74 72 20 72 65 73 75 6c 74 20 3d   IntPtr result =
21d40 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c   SQLiteMemory.Al
21d50 6c 6f 63 61 74 65 28 6c 65 6e 67 74 68 29 3b 0d  locate(length);.
21d60 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
21d70 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 49 6e 74  f (result == Int
21d80 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
21d90 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
21da0 6e 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  n IntPtr.Zero;..
21db0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 61  ..            Ma
21dc0 72 73 68 61 6c 2e 43 6f 70 79 28 76 61 6c 75 65  rshal.Copy(value
21dd0 2c 20 30 2c 20 72 65 73 75 6c 74 2c 20 6c 65 6e  , 0, result, len
21de0 67 74 68 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  gth);....       
21df0 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
21e00 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  lt;..        }..
21e10 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
21e20 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
21e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e70 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
21e80 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 56   #region SQLiteV
21e90 61 6c 75 65 20 48 65 6c 70 65 72 20 4d 65 74 68  alue Helper Meth
21ea0 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ods..        pub
21eb0 6c 69 63 20 73 74 61 74 69 63 20 53 51 4c 69 74  lic static SQLit
21ec0 65 56 61 6c 75 65 5b 5d 20 56 61 6c 75 65 41 72  eValue[] ValueAr
21ed0 72 61 79 46 72 6f 6d 53 69 7a 65 41 6e 64 49 6e  rayFromSizeAndIn
21ee0 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
21ef0 20 20 20 69 6e 74 20 6e 44 61 74 61 2c 0d 0a 20     int nData,.. 
21f00 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
21f10 72 20 61 70 44 61 74 61 0d 0a 20 20 20 20 20 20  r apData..      
21f20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
21f30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
21f40 69 66 20 28 6e 44 61 74 61 20 3c 20 30 29 0d 0a  if (nData < 0)..
21f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f60 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
21f70 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
21f80 61 70 44 61 74 61 20 3d 3d 20 49 6e 74 50 74 72  apData == IntPtr
21f90 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
21fa0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
21fb0 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
21fc0 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b      SQLiteValue[
21fd0 5d 20 72 65 73 75 6c 74 20 3d 20 6e 65 77 20 53  ] result = new S
21fe0 51 4c 69 74 65 56 61 6c 75 65 5b 6e 44 61 74 61  QLiteValue[nData
21ff0 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ];....          
22000 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65 78    for (int index
22010 20 3d 20 30 2c 20 6f 66 66 73 65 74 20 3d 20 30   = 0, offset = 0
22020 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
22030 20 20 20 20 20 20 20 69 6e 64 65 78 20 3c 20 72         index < r
22040 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 0d 0a 20  esult.Length;.. 
22050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22060 20 20 20 69 6e 64 65 78 2b 2b 2c 20 6f 66 66 73     index++, offs
22070 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e 53 69 7a  et += IntPtr.Siz
22080 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
22090 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
220a0 20 20 20 49 6e 74 50 74 72 20 70 44 61 74 61 20     IntPtr pData 
220b0 3d 20 52 65 61 64 49 6e 74 50 74 72 28 61 70 44  = ReadIntPtr(apD
220c0 61 74 61 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d  ata, offset);...
220d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
220e0 20 72 65 73 75 6c 74 5b 69 6e 64 65 78 5d 20 3d   result[index] =
220f0 20 28 70 44 61 74 61 20 21 3d 20 49 6e 74 50 74   (pData != IntPt
22100 72 2e 5a 65 72 6f 29 20 3f 0d 0a 20 20 20 20 20  r.Zero) ?..     
22110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
22120 65 77 20 53 51 4c 69 74 65 56 61 6c 75 65 28 70  ew SQLiteValue(p
22130 44 61 74 61 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20  Data) : null;.. 
22140 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
22150 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
22160 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
22170 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
22180 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
22190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
221c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
221d0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
221e0 63 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20  c SQLiteValue[] 
221f0 56 61 6c 75 65 41 72 72 61 79 46 72 6f 6d 49 6e  ValueArrayFromIn
22200 74 50 74 72 41 72 72 61 79 28 0d 0a 20 20 20 20  tPtrArray(..    
22210 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 5b 5d          IntPtr[]
22220 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 20   values..       
22230 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
22240 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
22250 66 20 28 76 61 6c 75 65 73 20 3d 3d 20 6e 75 6c  f (values == nul
22260 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
22270 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
22280 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
22290 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 72 65  SQLiteValue[] re
222a0 73 75 6c 74 20 3d 20 6e 65 77 20 53 51 4c 69 74  sult = new SQLit
222b0 65 56 61 6c 75 65 5b 76 61 6c 75 65 73 2e 4c 65  eValue[values.Le
222c0 6e 67 74 68 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20  ngth];....      
222d0 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
222e0 6e 64 65 78 20 3d 20 30 3b 20 69 6e 64 65 78 20  ndex = 0; index 
222f0 3c 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b  < result.Length;
22300 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20   index++)..     
22310 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
22320 74 5b 69 6e 64 65 78 5d 20 3d 20 6e 65 77 20 53  t[index] = new S
22330 51 4c 69 74 65 56 61 6c 75 65 28 76 61 6c 75 65  QLiteValue(value
22340 73 5b 69 6e 64 65 78 5d 29 3b 0d 0a 0d 0a 20 20  s[index]);....  
22350 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
22360 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20   result;..      
22370 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
22380 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
22390 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
223a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
223b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
223c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
223d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
223e0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51        #region SQ
223f0 4c 69 74 65 49 6e 64 65 78 20 48 65 6c 70 65 72  LiteIndex Helper
22400 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
22410 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
22420 76 6f 69 64 20 49 6e 64 65 78 46 72 6f 6d 49 6e  void IndexFromIn
22430 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20  tPtr(..         
22440 20 20 20 49 6e 74 50 74 72 20 70 49 6e 64 65 78     IntPtr pIndex
22450 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
22460 65 66 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69  ef SQLiteIndex i
22470 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20  ndex..          
22480 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
22490 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
224a0 70 49 6e 64 65 78 20 3d 3d 20 49 6e 74 50 74 72  pIndex == IntPtr
224b0 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
224c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
224d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
224e0 6e 74 20 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a  nt offset = 0;..
224f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
22500 74 20 6e 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20  t nConstraint = 
22510 52 65 61 64 49 6e 74 33 32 28 70 49 6e 64 65 78  ReadInt32(pIndex
22520 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
22530 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
22540 20 2b 3d 20 73 69 7a 65 6f 66 28 69 6e 74 29 3b   += sizeof(int);
22550 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
22560 49 6e 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69  IntPtr pConstrai
22570 6e 74 20 3d 20 52 65 61 64 49 6e 74 50 74 72 28  nt = ReadIntPtr(
22580 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b  pIndex, offset);
22590 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
225a0 6f 66 66 73 65 74 20 2b 3d 20 49 6e 74 50 74 72  offset += IntPtr
225b0 2e 53 69 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Size;....      
225c0 20 20 20 20 20 20 69 6e 74 20 6e 4f 72 64 65 72        int nOrder
225d0 42 79 20 3d 20 52 65 61 64 49 6e 74 33 32 28 70  By = ReadInt32(p
225e0 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d  Index, offset);.
225f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
22600 6e 64 65 78 20 3d 20 6e 65 77 20 53 51 4c 69 74  ndex = new SQLit
22610 65 49 6e 64 65 78 28 6e 43 6f 6e 73 74 72 61 69  eIndex(nConstrai
22620 6e 74 2c 20 6e 4f 72 64 65 72 42 79 29 3b 0d 0a  nt, nOrderBy);..
22630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 66  ..            of
22640 66 73 65 74 20 2b 3d 20 73 69 7a 65 6f 66 28 69  fset += sizeof(i
22650 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nt);....        
22660 20 20 20 20 49 6e 74 50 74 72 20 70 4f 72 64 65      IntPtr pOrde
22670 72 42 79 20 3d 20 52 65 61 64 49 6e 74 50 74 72  rBy = ReadIntPtr
22680 28 70 49 6e 64 65 78 2c 20 6f 66 66 73 65 74 29  (pIndex, offset)
22690 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
226a0 20 6f 66 66 73 65 74 20 2b 3d 20 49 6e 74 50 74   offset += IntPt
226b0 72 2e 53 69 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20  r.Size;....     
226c0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
226d0 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d  onstraintUsage =
226e0 20 52 65 61 64 49 6e 74 50 74 72 28 70 49 6e 64   ReadIntPtr(pInd
226f0 65 78 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a  ex, offset);....
22700 20 20 20 20 20 20 20 20 20 20 20 20 6f 66 66 73              offs
22710 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e 53 69 7a  et += IntPtr.Siz
22720 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
22730 20 20 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e    index.Outputs.
22740 49 6e 64 65 78 4e 75 6d 62 65 72 20 3d 20 52 65  IndexNumber = Re
22750 61 64 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20  adInt32(pIndex, 
22760 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
22770 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 2b          offset +
22780 3d 20 73 69 7a 65 6f 66 28 69 6e 74 29 3b 0d 0a  = sizeof(int);..
22790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
227a0 64 65 78 2e 4f 75 74 70 75 74 73 2e 49 6e 64 65  dex.Outputs.Inde
227b0 78 53 74 72 69 6e 67 20 3d 20 53 51 4c 69 74 65  xString = SQLite
227c0 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 46 72 6f  String.StringFro
227d0 6d 55 74 66 38 49 6e 74 50 74 72 28 0d 0a 20 20  mUtf8IntPtr(..  
227e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
227f0 74 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 49  tPtrForOffset(pI
22800 6e 64 65 78 2c 20 6f 66 66 73 65 74 29 29 3b 0d  ndex, offset));.
22810 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  ...            o
22820 66 66 73 65 74 20 2b 3d 20 49 6e 74 50 74 72 2e  ffset += IntPtr.
22830 53 69 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Size;....       
22840 20 20 20 20 20 69 6e 64 65 78 2e 4f 75 74 70 75       index.Outpu
22850 74 73 2e 4e 65 65 64 54 6f 46 72 65 65 49 6e 64  ts.NeedToFreeInd
22860 65 78 53 74 72 69 6e 67 20 3d 20 52 65 61 64 49  exString = ReadI
22870 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66  nt32(pIndex, off
22880 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
22890 20 20 20 20 20 6f 66 66 73 65 74 20 2b 3d 20 73       offset += s
228a0 69 7a 65 6f 66 28 69 6e 74 29 3b 0d 0a 0d 0a 20  izeof(int);.... 
228b0 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
228c0 2e 4f 75 74 70 75 74 73 2e 4f 72 64 65 72 42 79  .Outputs.OrderBy
228d0 43 6f 6e 73 75 6d 65 64 20 3d 20 52 65 61 64 49  Consumed = ReadI
228e0 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66  nt32(pIndex, off
228f0 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
22900 20 20 20 20 20 6f 66 66 73 65 74 20 2b 3d 20 73       offset += s
22910 69 7a 65 6f 66 28 69 6e 74 29 3b 0d 0a 0d 0a 20  izeof(int);.... 
22920 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
22930 2e 4f 75 74 70 75 74 73 2e 45 73 74 69 6d 61 74  .Outputs.Estimat
22940 65 64 43 6f 73 74 20 3d 20 52 65 61 64 44 6f 75  edCost = ReadDou
22950 62 6c 65 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  ble(pIndex, offs
22960 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
22970 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43 6f      int sizeOfCo
22980 6e 73 74 72 61 69 6e 74 54 79 70 65 20 3d 20 4d  nstraintType = M
22990 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79  arshal.SizeOf(ty
229a0 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  peof(..         
229b0 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
229c0 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
229d0 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61  e3_index_constra
229e0 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  int));....      
229f0 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
22a00 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b 20  Constraint = 0; 
22a10 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e 43  iConstraint < nC
22a20 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e 73  onstraint; iCons
22a30 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20 20  traint++)..     
22a40 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
22a50 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
22a60 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
22a70 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
22a80 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69 6e  traint constrain
22a90 74 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t =..           
22aa0 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73           new Uns
22ab0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
22ac0 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
22ad0 6f 6e 73 74 72 61 69 6e 74 28 29 3b 0d 0a 0d 0a  onstraint();....
22ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22af0 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53 74 72  Marshal.PtrToStr
22b00 75 63 74 75 72 65 28 49 6e 74 50 74 72 46 6f 72  ucture(IntPtrFor
22b10 4f 66 66 73 65 74 28 70 43 6f 6e 73 74 72 61 69  Offset(pConstrai
22b20 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt,..           
22b30 20 20 20 20 20 20 20 20 20 69 43 6f 6e 73 74 72           iConstr
22b40 61 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43 6f 6e  aint * sizeOfCon
22b50 73 74 72 61 69 6e 74 54 79 70 65 29 2c 20 63 6f  straintType), co
22b60 6e 73 74 72 61 69 6e 74 29 3b 0d 0a 0d 0a 20 20  nstraint);....  
22b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
22b80 64 65 78 2e 49 6e 70 75 74 73 2e 43 6f 6e 73 74  dex.Inputs.Const
22b90 72 61 69 6e 74 73 5b 69 43 6f 6e 73 74 72 61 69  raints[iConstrai
22ba0 6e 74 5d 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  nt] =..         
22bb0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
22bc0 51 4c 69 74 65 49 6e 64 65 78 43 6f 6e 73 74 72  QLiteIndexConstr
22bd0 61 69 6e 74 28 63 6f 6e 73 74 72 61 69 6e 74 29  aint(constraint)
22be0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
22bf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
22c00 69 6e 74 20 73 69 7a 65 4f 66 4f 72 64 65 72 42  int sizeOfOrderB
22c10 79 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e  yType = Marshal.
22c20 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a  SizeOf(typeof(..
22c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c40 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
22c50 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65  ods.sqlite3_inde
22c60 78 5f 6f 72 64 65 72 62 79 29 29 3b 0d 0a 0d 0a  x_orderby));....
22c70 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
22c80 28 69 6e 74 20 69 4f 72 64 65 72 42 79 20 3d 20  (int iOrderBy = 
22c90 30 3b 20 69 4f 72 64 65 72 42 79 20 3c 20 6e 4f  0; iOrderBy < nO
22ca0 72 64 65 72 42 79 3b 20 69 4f 72 64 65 72 42 79  rderBy; iOrderBy
22cb0 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++)..           
22cc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
22cd0 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
22ce0 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
22cf0 69 6e 64 65 78 5f 6f 72 64 65 72 62 79 20 6f 72  index_orderby or
22d00 64 65 72 42 79 20 3d 0d 0a 20 20 20 20 20 20 20  derBy =..       
22d10 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77               new
22d20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
22d30 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
22d40 65 78 5f 6f 72 64 65 72 62 79 28 29 3b 0d 0a 0d  ex_orderby();...
22d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22d60 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53 74   Marshal.PtrToSt
22d70 72 75 63 74 75 72 65 28 49 6e 74 50 74 72 46 6f  ructure(IntPtrFo
22d80 72 4f 66 66 73 65 74 28 70 4f 72 64 65 72 42 79  rOffset(pOrderBy
22d90 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
22da0 20 20 20 20 20 20 20 69 4f 72 64 65 72 42 79 20         iOrderBy 
22db0 2a 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54  * sizeOfOrderByT
22dc0 79 70 65 29 2c 20 6f 72 64 65 72 42 79 29 3b 0d  ype), orderBy);.
22dd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
22de0 20 20 20 69 6e 64 65 78 2e 49 6e 70 75 74 73 2e     index.Inputs.
22df0 4f 72 64 65 72 42 79 73 5b 69 4f 72 64 65 72 42  OrderBys[iOrderB
22e00 79 5d 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  y] =..          
22e10 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
22e20 4c 69 74 65 49 6e 64 65 78 4f 72 64 65 72 42 79  LiteIndexOrderBy
22e30 28 6f 72 64 65 72 42 79 29 3b 0d 0a 20 20 20 20  (orderBy);..    
22e40 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
22e50 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 7a           int siz
22e60 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
22e70 67 65 54 79 70 65 20 3d 20 4d 61 72 73 68 61 6c  geType = Marshal
22e80 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d  .SizeOf(typeof(.
22e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22ea0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
22eb0 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
22ec0 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74 5f 75 73  ex_constraint_us
22ed0 61 67 65 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  age));....      
22ee0 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
22ef0 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b 20  Constraint = 0; 
22f00 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e 43  iConstraint < nC
22f10 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e 73  onstraint; iCons
22f20 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20 20  traint++)..     
22f30 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
22f40 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
22f50 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
22f60 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73  lite3_index_cons
22f70 74 72 61 69 6e 74 5f 75 73 61 67 65 20 63 6f 6e  traint_usage con
22f80 73 74 72 61 69 6e 74 55 73 61 67 65 20 3d 0d 0a  straintUsage =..
22f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22fa0 20 20 20 20 6e 65 77 20 55 6e 73 61 66 65 4e 61      new UnsafeNa
22fb0 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
22fc0 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
22fd0 61 69 6e 74 5f 75 73 61 67 65 28 29 3b 0d 0a 0d  aint_usage();...
22fe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22ff0 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53 74   Marshal.PtrToSt
23000 72 75 63 74 75 72 65 28 49 6e 74 50 74 72 46 6f  ructure(IntPtrFo
23010 72 4f 66 66 73 65 74 28 70 43 6f 6e 73 74 72 61  rOffset(pConstra
23020 69 6e 74 55 73 61 67 65 2c 0d 0a 20 20 20 20 20  intUsage,..     
23030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
23040 43 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73 69 7a  Constraint * siz
23050 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61  eOfConstraintUsa
23060 67 65 54 79 70 65 29 2c 20 63 6f 6e 73 74 72 61  geType), constra
23070 69 6e 74 55 73 61 67 65 29 3b 0d 0a 0d 0a 20 20  intUsage);....  
23080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
23090 64 65 78 2e 4f 75 74 70 75 74 73 2e 43 6f 6e 73  dex.Outputs.Cons
230a0 74 72 61 69 6e 74 55 73 61 67 65 73 5b 69 43 6f  traintUsages[iCo
230b0 6e 73 74 72 61 69 6e 74 5d 20 3d 0d 0a 20 20 20  nstraint] =..   
230c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230d0 20 6e 65 77 20 53 51 4c 69 74 65 49 6e 64 65 78   new SQLiteIndex
230e0 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 28  ConstraintUsage(
230f0 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 29  constraintUsage)
23100 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
23110 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
23120 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
23130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
23170 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
23180 20 73 74 61 74 69 63 20 76 6f 69 64 20 49 6e 64   static void Ind
23190 65 78 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20  exToIntPtr(..   
231a0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 49           SQLiteI
231b0 6e 64 65 78 20 69 6e 64 65 78 2c 0d 0a 20 20 20  ndex index,..   
231c0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
231d0 70 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20  pIndex..        
231e0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
231f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
23200 20 28 28 69 6e 64 65 78 20 3d 3d 20 6e 75 6c 6c   ((index == null
23210 29 20 7c 7c 20 28 69 6e 64 65 78 2e 49 6e 70 75  ) || (index.Inpu
23220 74 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a  ts == null) ||..
23230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23240 28 69 6e 64 65 78 2e 49 6e 70 75 74 73 2e 43 6f  (index.Inputs.Co
23250 6e 73 74 72 61 69 6e 74 73 20 3d 3d 20 6e 75 6c  nstraints == nul
23260 6c 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  l) ||..         
23270 20 20 20 20 20 20 20 28 69 6e 64 65 78 2e 49 6e         (index.In
23280 70 75 74 73 2e 4f 72 64 65 72 42 79 73 20 3d 3d  puts.OrderBys ==
23290 20 6e 75 6c 6c 29 20 7c 7c 20 28 69 6e 64 65 78   null) || (index
232a0 2e 4f 75 74 70 75 74 73 20 3d 3d 20 6e 75 6c 6c  .Outputs == null
232b0 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
232c0 20 20 20 20 20 20 28 69 6e 64 65 78 2e 4f 75 74        (index.Out
232d0 70 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74 55  puts.ConstraintU
232e0 73 61 67 65 73 20 3d 3d 20 6e 75 6c 6c 29 29 0d  sages == null)).
232f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
23300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23310 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20  return;..       
23320 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
23330 20 20 20 20 20 20 69 66 20 28 70 49 6e 64 65 78        if (pIndex
23340 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
23350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23360 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
23370 20 20 20 20 20 20 20 20 20 69 6e 74 20 6f 66 66           int off
23380 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  set = 0;....    
23390 20 20 20 20 20 20 20 20 69 6e 74 20 6e 43 6f 6e          int nCon
233a0 73 74 72 61 69 6e 74 20 3d 20 52 65 61 64 49 6e  straint = ReadIn
233b0 74 33 32 28 70 49 6e 64 65 78 2c 20 6f 66 66 73  t32(pIndex, offs
233c0 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  et);....        
233d0 20 20 20 20 69 66 20 28 6e 43 6f 6e 73 74 72 61      if (nConstra
233e0 69 6e 74 20 21 3d 20 69 6e 64 65 78 2e 49 6e 70  int != index.Inp
233f0 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74 73 2e  uts.Constraints.
23400 4c 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20 20  Length)..       
23410 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
23420 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
23430 69 66 20 28 6e 43 6f 6e 73 74 72 61 69 6e 74 20  if (nConstraint 
23440 21 3d 20 69 6e 64 65 78 2e 4f 75 74 70 75 74 73  != index.Outputs
23450 2e 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  .ConstraintUsage
23460 73 2e 4c 65 6e 67 74 68 29 0d 0a 20 20 20 20 20  s.Length)..     
23470 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
23480 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
23490 20 20 6f 66 66 73 65 74 20 2b 3d 20 73 69 7a 65    offset += size
234a0 6f 66 28 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20  of(int);....    
234b0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
234c0 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 52 65 61  Constraint = Rea
234d0 64 49 6e 74 50 74 72 28 70 49 6e 64 65 78 2c 20  dIntPtr(pIndex, 
234e0 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20  offset);....    
234f0 20 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 2b          offset +
23500 3d 20 49 6e 74 50 74 72 2e 53 69 7a 65 3b 0d 0a  = IntPtr.Size;..
23510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
23520 74 20 6e 4f 72 64 65 72 42 79 20 3d 20 52 65 61  t nOrderBy = Rea
23530 64 49 6e 74 33 32 28 70 49 6e 64 65 78 2c 20 6f  dInt32(pIndex, o
23540 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  ffset);....     
23550 20 20 20 20 20 20 20 6f 66 66 73 65 74 20 2b 3d         offset +=
23560 20 73 69 7a 65 6f 66 28 69 6e 74 29 3b 0d 0a 0d   sizeof(int);...
23570 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
23580 50 74 72 20 70 4f 72 64 65 72 42 79 20 3d 20 52  Ptr pOrderBy = R
23590 65 61 64 49 6e 74 50 74 72 28 70 49 6e 64 65 78  eadIntPtr(pIndex
235a0 2c 20 6f 66 66 73 65 74 29 3b 0d 0a 0d 0a 20 20  , offset);....  
235b0 20 20 20 20 20 20 20 20 20 20 6f 66 66 73 65 74            offset
235c0 20 2b 3d 20 49 6e 74 50 74 72 2e 53 69 7a 65 3b   += IntPtr.Size;
235d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
235e0 49 6e 74 50 74 72 20 70 43 6f 6e 73 74 72 61 69  IntPtr pConstrai
235f0 6e 74 55 73 61 67 65 20 3d 20 52 65 61 64 49 6e  ntUsage = ReadIn
23600 74 50 74 72 28 70 49 6e 64 65 78 2c 20 6f 66 66  tPtr(pIndex, off
23610 73 65 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  set);....       
23620 20 20 20 20 20 69 6e 74 20 73 69 7a 65 4f 66 43       int sizeOfC
23630 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 20 3d 20  onstraintType = 
23640 4d 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74  Marshal.SizeOf(t
23650 79 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20  ypeof(..        
23660 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
23670 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
23680 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e 73 74 72  te3_index_constr
23690 61 69 6e 74 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  aint));....     
236a0 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20         for (int 
236b0 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20 30 3b  iConstraint = 0;
236c0 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c 20 6e   iConstraint < n
236d0 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43 6f 6e  Constraint; iCon
236e0 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20 20 20  straint++)..    
236f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
23700 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66             Unsaf
23710 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
23720 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
23730 73 74 72 61 69 6e 74 20 63 6f 6e 73 74 72 61 69  straint constrai
23740 6e 74 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  nt =..          
23750 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e            new Un
23760 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
23770 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
23780 63 6f 6e 73 74 72 61 69 6e 74 28 0d 0a 20 20 20  constraint(..   
23790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237a0 20 20 20 20 20 69 6e 64 65 78 2e 49 6e 70 75 74       index.Input
237b0 73 2e 43 6f 6e 73 74 72 61 69 6e 74 73 5b 69 43  s.Constraints[iC
237c0 6f 6e 73 74 72 61 69 6e 74 5d 29 3b 0d 0a 0d 0a  onstraint]);....
237d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237e0 4d 61 72 73 68 61 6c 2e 53 74 72 75 63 74 75 72  Marshal.Structur
237f0 65 54 6f 50 74 72 28 0d 0a 20 20 20 20 20 20 20  eToPtr(..       
23800 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
23810 73 74 72 61 69 6e 74 2c 20 49 6e 74 50 74 72 46  straint, IntPtrF
23820 6f 72 4f 66 66 73 65 74 28 70 43 6f 6e 73 74 72  orOffset(pConstr
23830 61 69 6e 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  aint,..         
23840 20 20 20 20 20 20 20 20 20 20 20 69 43 6f 6e 73             iCons
23850 74 72 61 69 6e 74 20 2a 20 73 69 7a 65 4f 66 43  traint * sizeOfC
23860 6f 6e 73 74 72 61 69 6e 74 54 79 70 65 29 2c 20  onstraintType), 
23870 66 61 6c 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  false);....     
23880 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78             index
23890 2e 49 6e 70 75 74 73 2e 43 6f 6e 73 74 72 61 69  .Inputs.Constrai
238a0 6e 74 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d  nts[iConstraint]
238b0 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
238c0 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
238d0 74 65 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e  teIndexConstrain
238e0 74 28 63 6f 6e 73 74 72 61 69 6e 74 29 3b 0d 0a  t(constraint);..
238f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
23900 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
23910 20 73 69 7a 65 4f 66 4f 72 64 65 72 42 79 54 79   sizeOfOrderByTy
23920 70 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69 7a  pe = Marshal.Siz
23930 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20 20  eOf(typeof(..   
23940 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
23950 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
23960 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 6f  .sqlite3_index_o
23970 72 64 65 72 62 79 29 29 3b 0d 0a 0d 0a 20 20 20  rderby));....   
23980 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e           for (in
23990 74 20 69 4f 72 64 65 72 42 79 20 3d 20 30 3b 20  t iOrderBy = 0; 
239a0 69 4f 72 64 65 72 42 79 20 3c 20 6e 4f 72 64 65  iOrderBy < nOrde
239b0 72 42 79 3b 20 69 4f 72 64 65 72 42 79 2b 2b 29  rBy; iOrderBy++)
239c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
239d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
239e0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
239f0 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64  hods.sqlite3_ind
23a00 65 78 5f 6f 72 64 65 72 62 79 20 6f 72 64 65 72  ex_orderby order
23a10 42 79 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  By =..          
23a20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 55 6e            new Un
23a30 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
23a40 73 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f  s.sqlite3_index_
23a50 6f 72 64 65 72 62 79 28 0d 0a 20 20 20 20 20 20  orderby(..      
23a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a70 20 20 69 6e 64 65 78 2e 49 6e 70 75 74 73 2e 4f    index.Inputs.O
23a80 72 64 65 72 42 79 73 5b 69 4f 72 64 65 72 42 79  rderBys[iOrderBy
23a90 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ]);....         
23aa0 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 53         Marshal.S
23ab0 74 72 75 63 74 75 72 65 54 6f 50 74 72 28 0d 0a  tructureToPtr(..
23ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ad0 20 20 20 20 6f 72 64 65 72 42 79 2c 20 49 6e 74      orderBy, Int
23ae0 50 74 72 46 6f 72 4f 66 66 73 65 74 28 70 4f 72  PtrForOffset(pOr
23af0 64 65 72 42 79 2c 0d 0a 20 20 20 20 20 20 20 20  derBy,..        
23b00 20 20 20 20 20 20 20 20 20 20 20 20 69 4f 72 64              iOrd
23b10 65 72 42 79 20 2a 20 73 69 7a 65 4f 66 4f 72 64  erBy * sizeOfOrd
23b20 65 72 42 79 54 79 70 65 29 2c 20 66 61 6c 73 65  erByType), false
23b30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
23b40 20 20 20 20 20 20 69 6e 64 65 78 2e 49 6e 70 75        index.Inpu
23b50 74 73 2e 4f 72 64 65 72 42 79 73 5b 69 4f 72 64  ts.OrderBys[iOrd
23b60 65 72 42 79 5d 20 3d 0d 0a 20 20 20 20 20 20 20  erBy] =..       
23b70 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77               new
23b80 20 53 51 4c 69 74 65 49 6e 64 65 78 4f 72 64 65   SQLiteIndexOrde
23b90 72 42 79 28 6f 72 64 65 72 42 79 29 3b 0d 0a 20  rBy(orderBy);.. 
23ba0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
23bb0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
23bc0 73 69 7a 65 4f 66 43 6f 6e 73 74 72 61 69 6e 74  sizeOfConstraint
23bd0 55 73 61 67 65 54 79 70 65 20 3d 20 4d 61 72 73  UsageType = Mars
23be0 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79 70 65 6f  hal.SizeOf(typeo
23bf0 66 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f(..            
23c00 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
23c10 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
23c20 69 6e 64 65 78 5f 63 6f 6e 73 74 72 61 69 6e 74  index_constraint
23c30 5f 75 73 61 67 65 29 29 3b 0d 0a 0d 0a 20 20 20  _usage));....   
23c40 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e           for (in
23c50 74 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20  t iConstraint = 
23c60 30 3b 20 69 43 6f 6e 73 74 72 61 69 6e 74 20 3c  0; iConstraint <
23c70 20 6e 43 6f 6e 73 74 72 61 69 6e 74 3b 20 69 43   nConstraint; iC
23c80 6f 6e 73 74 72 61 69 6e 74 2b 2b 29 0d 0a 20 20  onstraint++)..  
23c90 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
23ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73               Uns
23cb0 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
23cc0 2e 73 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63  .sqlite3_index_c
23cd0 6f 6e 73 74 72 61 69 6e 74 5f 75 73 61 67 65 20  onstraint_usage 
23ce0 63 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65 20  constraintUsage 
23cf0 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
23d00 20 20 20 20 20 20 20 6e 65 77 20 55 6e 73 61 66         new Unsaf
23d10 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73  eNativeMethods.s
23d20 71 6c 69 74 65 33 5f 69 6e 64 65 78 5f 63 6f 6e  qlite3_index_con
23d30 73 74 72 61 69 6e 74 5f 75 73 61 67 65 28 0d 0a  straint_usage(..
23d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d50 20 20 20 20 20 20 20 20 69 6e 64 65 78 2e 4f 75          index.Ou
23d60 74 70 75 74 73 2e 43 6f 6e 73 74 72 61 69 6e 74  tputs.Constraint
23d70 55 73 61 67 65 73 5b 69 43 6f 6e 73 74 72 61 69  Usages[iConstrai
23d80 6e 74 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  nt]);....       
23d90 20 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c           Marshal
23da0 2e 53 74 72 75 63 74 75 72 65 54 6f 50 74 72 28  .StructureToPtr(
23db0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23dc0 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
23dd0 55 73 61 67 65 2c 20 49 6e 74 50 74 72 46 6f 72  Usage, IntPtrFor
23de0 4f 66 66 73 65 74 28 70 43 6f 6e 73 74 72 61 69  Offset(pConstrai
23df0 6e 74 55 73 61 67 65 2c 0d 0a 20 20 20 20 20 20  ntUsage,..      
23e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 43                iC
23e10 6f 6e 73 74 72 61 69 6e 74 20 2a 20 73 69 7a 65  onstraint * size
23e20 4f 66 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67  OfConstraintUsag
23e30 65 54 79 70 65 29 2c 20 66 61 6c 73 65 29 3b 0d  eType), false);.
23e40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
23e50 20 20 20 69 6e 64 65 78 2e 4f 75 74 70 75 74 73     index.Outputs
23e60 2e 43 6f 6e 73 74 72 61 69 6e 74 55 73 61 67 65  .ConstraintUsage
23e70 73 5b 69 43 6f 6e 73 74 72 61 69 6e 74 5d 20 3d  s[iConstraint] =
23e80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23e90 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
23ea0 49 6e 64 65 78 43 6f 6e 73 74 72 61 69 6e 74 55  IndexConstraintU
23eb0 73 61 67 65 28 63 6f 6e 73 74 72 61 69 6e 74 55  sage(constraintU
23ec0 73 61 67 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  sage);..        
23ed0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
23ee0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
23ef0 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  gion..    }..   
23f00 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
23f10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
23f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
23f60 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51  ..    #region SQ
23f70 4c 69 74 65 4d 6f 64 75 6c 65 20 42 61 73 65 20  LiteModule Base 
23f80 43 6c 61 73 73 0d 0a 20 20 20 20 70 75 62 6c 69  Class..    publi
23f90 63 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73  c abstract class
23fa0 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 3a 0d   SQLiteModule :.
23fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 53 51  .            ISQ
23fc0 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75 6c  LiteManagedModul
23fd0 65 2c 20 2f 2a 49 53 51 4c 69 74 65 4e 61 74 69  e, /*ISQLiteNati
23fe0 76 65 4d 6f 64 75 6c 65 2c 2a 2f 0d 0a 20 20 20  veModule,*/..   
23ff0 20 20 20 20 20 20 20 20 20 49 44 69 73 70 6f 73           IDispos
24000 61 62 6c 65 20 2f 2a 20 4e 4f 54 20 53 45 41 4c  able /* NOT SEAL
24010 45 44 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 20 20  ED */..    {..  
24020 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51        #region SQ
24030 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
24040 20 50 72 69 76 61 74 65 20 43 6c 61 73 73 0d 0a   Private Class..
24050 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
24060 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
24070 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20  iteNativeModule 
24080 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
24090 20 20 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65     ISQLiteNative
240a0 4d 6f 64 75 6c 65 2c 20 49 44 69 73 70 6f 73 61  Module, IDisposa
240b0 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ble..        {..
240c0 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
240d0 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73  ion Private Cons
240e0 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20  tants..         
240f0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
24100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24110 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 76 61  / This is the va
24120 6c 75 65 20 74 68 61 74 20 69 73 20 61 6c 77 61  lue that is alwa
24130 79 73 20 75 73 65 64 20 66 6f 72 20 74 68 65 20  ys used for the 
24140 22 6c 6f 67 45 72 72 6f 72 73 22 0d 0a 20 20 20  "logErrors"..   
24150 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 70 61 72           /// par
24160 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 76 61  ameter to the va
24170 72 69 6f 75 73 20 73 74 61 74 69 63 20 65 72 72  rious static err
24180 6f 72 20 68 61 6e 64 6c 69 6e 67 20 6d 65 74 68  or handling meth
24190 6f 64 73 20 70 72 6f 76 69 64 65 64 0d 0a 20 20  ods provided..  
241a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 62 79            /// by
241b0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
241c0 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f 3e  SQLiteModule" />
241d0 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20   class...       
241e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
241f0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
24200 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 62   private const b
24210 6f 6f 6c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72  ool DefaultLogEr
24220 72 6f 72 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a  rors = true;....
24230 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
24240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
24280 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
24290 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
242a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68            /// Th
242b0 69 73 20 69 73 20 74 68 65 20 65 72 72 6f 72 20  is is the error 
242c0 6d 65 73 73 61 67 65 20 74 65 78 74 20 75 73 65  message text use
242d0 64 20 77 68 65 6e 20 74 68 65 20 63 6f 6e 74 61  d when the conta
242e0 69 6e 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  ined..          
242f0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
24300 22 53 51 4c 69 74 65 4d 6f 64 75 6c 65 22 20 2f  "SQLiteModule" /
24310 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
24320 65 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62  e is not availab
24330 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
24340 2f 2f 2f 20 66 6f 72 20 61 6e 79 20 72 65 61 73  /// for any reas
24350 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on...           
24360 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
24370 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
24380 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e  vate const strin
24390 67 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c  g ModuleNotAvail
243a0 61 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65  ableErrorMessage
243b0 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
243c0 20 20 20 20 22 6e 61 74 69 76 65 20 6d 6f 64 75      "native modu
243d0 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
243e0 6e 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 22  n not available"
243f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ;..            #
24400 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
24410 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
24420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
24460 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
24470 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61  ion Private Data
24480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24490 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
244a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54 68 65           /// The
244b0 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
244c0 74 65 4d 6f 64 75 6c 65 22 20 2f 3e 20 6f 62 6a  teModule" /> obj
244d0 65 63 74 20 69 6e 73 74 61 6e 63 65 20 75 73 65  ect instance use
244e0 64 20 74 6f 20 70 72 6f 76 69 64 65 0d 0a 20 20  d to provide..  
244f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 61 6e            /// an
24500 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
24510 6f 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  of the <see cref
24520 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
24530 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20 20 20  odule" />..     
24540 20 20 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72         /// inter
24550 66 61 63 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  face...         
24560 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
24570 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
24580 72 69 76 61 74 65 20 53 51 4c 69 74 65 4d 6f 64  rivate SQLiteMod
24590 75 6c 65 20 6d 6f 64 75 6c 65 3b 0d 0a 20 20 20  ule module;..   
245a0 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
245b0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
245c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
245d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
245f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24600 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
24610 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
24620 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72  blic Constructor
24630 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  s..            /
24640 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
24650 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 43 6f            /// Co
24660 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73 74  nstructs an inst
24670 61 6e 63 65 20 6f 66 20 74 68 69 73 20 63 6c 61  ance of this cla
24680 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss...           
24690 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
246a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
246b0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f   <param name="mo
246c0 64 75 6c 65 22 3e 0d 0a 20 20 20 20 20 20 20 20  dule">..        
246d0 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65      /// The <see
246e0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64   cref="SQLiteMod
246f0 75 6c 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69  ule" /> object i
24700 6e 73 74 61 6e 63 65 20 75 73 65 64 20 74 6f 20  nstance used to 
24710 70 72 6f 76 69 64 65 0d 0a 20 20 20 20 20 20 20  provide..       
24720 20 20 20 20 20 2f 2f 2f 20 61 6e 20 69 6d 70 6c       /// an impl
24730 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68  ementation of th
24740 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
24750 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
24760 22 20 2f 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  " />..          
24770 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 2e    /// interface.
24780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24790 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
247a0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
247b0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
247c0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
247d0 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c 65      SQLiteModule
247e0 20 6d 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20   module..       
247f0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
24800 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
24810 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
24820 6d 6f 64 75 6c 65 20 3d 20 6d 6f 64 75 6c 65 3b  module = module;
24830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
24840 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
24850 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
24860 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
24870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
248a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
248b0 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
248c0 6e 20 50 72 69 76 61 74 65 20 53 74 61 74 69 63  n Private Static
248d0 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
248e0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
248f0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
24900 20 2f 2f 2f 20 53 65 74 73 20 74 68 65 20 74 61   /// Sets the ta
24910 62 6c 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  ble error messag
24920 65 20 74 6f 20 6f 6e 65 20 74 68 61 74 20 69 6e  e to one that in
24930 64 69 63 61 74 65 73 20 74 68 65 20 6e 61 74 69  dicates the nati
24940 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
24950 2f 2f 2f 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65  /// module imple
24960 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74  mentation is not
24970 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
24980 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
24990 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
249a0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
249b0 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
249c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54             /// T
249d0 68 65 20 6e 61 74 69 76 65 20 70 6f 69 6e 74 65  he native pointe
249e0 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
249f0 5f 76 74 61 62 20 64 65 72 69 76 65 64 20 73 74  _vtab derived st
24a00 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20 20  ructure...      
24a10 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
24a20 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
24a30 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
24a40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 54             /// T
24a50 68 65 20 76 61 6c 75 65 20 6f 66 20 3c 73 65 65  he value of <see
24a60 20 63 72 65 66 3d 22 53 51 4c 69 74 65 45 72 72   cref="SQLiteErr
24a70 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22 2f 3e 2e  orCode.Error"/>.
24a80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
24a90 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
24aa0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
24ab0 65 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 45  e static SQLiteE
24ac0 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75 6c 65 4e  rrorCode ModuleN
24ad0 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c 65  otAvailableTable
24ae0 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20 20  Error(..        
24af0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
24b00 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20  Vtab..          
24b10 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
24b20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
24b30 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c 65          SetTable
24b40 45 72 72 6f 72 28 6e 75 6c 6c 2c 20 70 56 74 61  Error(null, pVta
24b50 62 2c 20 44 65 66 61 75 6c 74 4c 6f 67 45 72 72  b, DefaultLogErr
24b60 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ors,..          
24b70 20 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65            Module
24b80 4e 6f 74 41 76 61 69 6c 61 62 6c 65 45 72 72 6f  NotAvailableErro
24b90 72 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20 20  rMessage);....  
24ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
24bb0 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
24bc0 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
24bd0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
24be0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
24bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
24c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
24c40 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
24c50 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 74 73          /// Sets
24c60 20 74 68 65 20 74 61 62 6c 65 20 65 72 72 6f 72   the table error
24c70 20 6d 65 73 73 61 67 65 20 74 6f 20 6f 6e 65 20   message to one 
24c80 74 68 61 74 20 69 6e 64 69 63 61 74 65 73 20 74  that indicates t
24c90 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20  he native..     
24ca0 20 20 20 20 20 20 20 2f 2f 2f 20 6d 6f 64 75 6c         /// modul
24cb0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
24cc0 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c   is not availabl
24cd0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
24ce0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
24cf0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24d00 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75  <param name="pCu
24d10 72 73 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20  rsor">..        
24d20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 74 69      /// The nati
24d30 76 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68  ve pointer to th
24d40 65 20 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  e sqlite3_vtab_c
24d50 75 72 73 6f 72 20 64 65 72 69 76 65 64 0d 0a 20  ursor derived.. 
24d60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 73             /// s
24d70 74 72 75 63 74 75 72 65 2e 0d 0a 20 20 20 20 20  tructure...     
24d80 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
24d90 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
24da0 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
24db0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
24dc0 54 68 65 20 76 61 6c 75 65 20 6f 66 20 3c 73 65  The value of <se
24dd0 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 45 72  e cref="SQLiteEr
24de0 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 22 2f 3e  rorCode.Error"/>
24df0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
24e00 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
24e10 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
24e20 74 65 20 73 74 61 74 69 63 20 53 51 4c 69 74 65  te static SQLite
24e30 45 72 72 6f 72 43 6f 64 65 20 4d 6f 64 75 6c 65  ErrorCode Module
24e40 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73  NotAvailableCurs
24e50 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20  orError(..      
24e60 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
24e70 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20 20   pCursor..      
24e80 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
24e90 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
24ea0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 43              SetC
24eb0 75 72 73 6f 72 45 72 72 6f 72 28 6e 75 6c 6c 2c  ursorError(null,
24ec0 20 70 43 75 72 73 6f 72 2c 20 44 65 66 61 75 6c   pCursor, Defaul
24ed0 74 4c 6f 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20  tLogErrors,..   
24ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ef0 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
24f00 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29  bleErrorMessage)
24f10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
24f20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
24f30 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f  teErrorCode.Erro
24f40 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
24f50 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
24f60 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
24f70 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
24f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
24fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
24fc0 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
24fd0 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69 76  ion ISQLiteNativ
24fe0 65 4d 6f 64 75 6c 65 20 4d 65 6d 62 65 72 73 0d  eModule Members.
24ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25000 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
25010 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
25020 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
25030 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
25040 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e 20 6d  le.xCreate" /> m
25050 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
25060 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
25070 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
25080 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
25090 22 70 44 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  "pDb">..        
250a0 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
250b0 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
250c0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
250d0 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f  Create" /> metho
250e0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
250f0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
25100 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
25110 61 72 61 6d 20 6e 61 6d 65 3d 22 70 41 75 78 22  aram name="pAux"
25120 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25130 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
25140 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
25150 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
25160 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
25170 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25180 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
25190 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
251a0 6e 61 6d 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20  name="argc">..  
251b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
251c0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
251d0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
251e0 64 75 6c 65 2e 78 43 72 65 61 74 65 22 20 2f 3e  dule.xCreate" />
251f0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
25200 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
25210 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
25220 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
25230 22 61 72 67 76 22 3e 0d 0a 20 20 20 20 20 20 20  "argv">..       
25240 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
25250 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
25260 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
25270 78 43 72 65 61 74 65 22 20 2f 3e 20 6d 65 74 68  xCreate" /> meth
25280 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
25290 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
252a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
252b0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
252c0 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
252d0 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
252e0 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
252f0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65  ativeModule.xCre
25300 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
25310 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25320 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
25330 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
25340 6d 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e  m name="pError">
25350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
25360 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
25370 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
25380 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  veModule.xCreate
25390 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
253a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
253b0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
253c0 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
253d0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
253e0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
253f0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
25400 69 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74  iveModule.xCreat
25410 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
25420 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25430 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
25440 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
25450 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43  LiteErrorCode xC
25460 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20  reate(..        
25470 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
25480 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Db,..           
25490 20 20 20 20 20 49 6e 74 50 74 72 20 70 41 75 78       IntPtr pAux
254a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
254b0 20 20 20 69 6e 74 20 61 72 67 63 2c 0d 0a 20 20     int argc,..  
254c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
254d0 74 50 74 72 5b 5d 20 61 72 67 76 2c 0d 0a 20 20  tPtr[] argv,..  
254e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
254f0 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d  f IntPtr pVtab,.
25500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25510 20 72 65 66 20 49 6e 74 50 74 72 20 70 45 72 72   ref IntPtr pErr
25520 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
25530 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
25540 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25550 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
25560 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
25570 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
25580 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
25590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
255a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
255b0 20 20 20 20 20 20 20 20 20 70 45 72 72 6f 72 20           pError 
255c0 3d 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 55  = SQLiteString.U
255d0 74 66 38 49 6e 74 50 74 72 46 72 6f 6d 53 74 72  tf8IntPtrFromStr
255e0 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ing(..          
255f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
25600 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
25610 45 72 72 6f 72 4d 65 73 73 61 67 65 29 3b 0d 0a  ErrorMessage);..
25620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25630 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
25640 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
25650 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or;..           
25660 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
25670 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
25680 20 6d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65 28   module.xCreate(
25690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
256a0 20 20 20 20 20 20 70 44 62 2c 20 70 41 75 78 2c        pDb, pAux,
256b0 20 61 72 67 63 2c 20 61 72 67 76 2c 20 72 65 66   argc, argv, ref
256c0 20 70 56 74 61 62 2c 20 72 65 66 20 70 45 72 72   pVtab, ref pErr
256d0 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  or);..          
256e0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
256f0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
25700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25730 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
25740 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
25750 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
25760 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
25770 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
25780 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e  ativeModule.xCon
25790 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  nect" /> method.
257a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
257b0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
257c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
257d0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 44 62 22 3e  aram name="pDb">
257e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
257f0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
25800 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
25810 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63  veModule.xConnec
25820 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  t" /> method... 
25830 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
25840 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
25850 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
25860 6e 61 6d 65 3d 22 70 41 75 78 22 3e 0d 0a 20 20  name="pAux">..  
25870 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
25880 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
25890 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
258a0 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74 22 20 2f  dule.xConnect" /
258b0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
258c0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
258d0 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
258e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
258f0 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20  ="argc">..      
25900 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
25910 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
25920 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
25930 2e 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d 65  .xConnect" /> me
25940 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
25950 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
25960 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25970 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
25980 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gv">..          
25990 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
259a0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
259b0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  NativeModule.xCo
259c0 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
259d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
259e0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
259f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
25a00 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
25a10 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25a20 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
25a30 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
25a40 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65  iveModule.xConne
25a50 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  ct" /> method...
25a60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
25a70 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20  </param>..      
25a80 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
25a90 20 6e 61 6d 65 3d 22 70 45 72 72 6f 72 22 3e 0d   name="pError">.
25aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
25ab0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
25ac0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
25ad0 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74  eModule.xConnect
25ae0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
25af0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
25b00 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
25b10 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
25b20 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  ></returns>..   
25b30 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
25b40 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
25b50 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  xConnect(..     
25b60 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
25b70 72 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20  r pDb,..        
25b80 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
25b90 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Aux,..          
25ba0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
25bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25bc0 20 49 6e 74 50 74 72 5b 5d 20 61 72 67 76 2c 0d   IntPtr[] argv,.
25bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25be0 20 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61   ref IntPtr pVta
25bf0 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
25c00 20 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70      ref IntPtr p
25c10 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  Error..         
25c20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
25c30 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
25c40 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
25c50 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
25c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c70 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
25c80 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
25c90 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
25ca0 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72 72              pErr
25cb0 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e  or = SQLiteStrin
25cc0 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d  g.Utf8IntPtrFrom
25cd0 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20  String(..       
25ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25cf0 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
25d00 62 6c 65 45 72 72 6f 72 4d 65 73 73 61 67 65 29  bleErrorMessage)
25d10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
25d20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
25d30 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
25d40 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20  Error;..        
25d50 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
25d60 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
25d70 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e  urn module.xConn
25d80 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
25d90 20 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 70            pDb, p
25da0 41 75 78 2c 20 61 72 67 63 2c 20 61 72 67 76 2c  Aux, argc, argv,
25db0 20 72 65 66 20 70 56 74 61 62 2c 20 72 65 66 20   ref pVtab, ref 
25dc0 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20  pError);..      
25dd0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
25de0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
25df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
25e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
25e30 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73            /// <s
25e40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
25e50 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
25e60 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
25e70 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
25e80 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20 6d  xBestIndex" /> m
25e90 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
25ea0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
25eb0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
25ec0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
25ed0 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
25ee0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
25ef0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
25f00 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
25f10 2e 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20  .xBestIndex" /> 
25f20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
25f30 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
25f40 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25f50 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
25f60 70 49 6e 64 65 78 22 3e 0d 0a 20 20 20 20 20 20  pIndex">..      
25f70 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
25f80 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
25f90 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
25fa0 2e 78 42 65 73 74 49 6e 64 65 78 22 20 2f 3e 20  .xBestIndex" /> 
25fb0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
25fc0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
25fd0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
25fe0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
25ff0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
26000 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
26010 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
26020 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 22  dule.xBestIndex"
26030 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
26040 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
26050 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
26060 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
26070 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65 73  teErrorCode xBes
26080 74 49 6e 64 65 78 28 0d 0a 20 20 20 20 20 20 20  tIndex(..       
26090 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
260a0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
260b0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
260c0 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20  Index..         
260d0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
260e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
260f0 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
26100 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
26110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26120 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
26130 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
26140 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26150 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
26160 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
26170 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
26180 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
26190 6f 64 75 6c 65 2e 78 42 65 73 74 49 6e 64 65 78  odule.xBestIndex
261a0 28 70 56 74 61 62 2c 20 70 49 6e 64 65 78 29 3b  (pVtab, pIndex);
261b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
261c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
261d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
261e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
261f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26210 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
26220 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
26230 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26240 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
26250 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
26260 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f 6e 6e  eModule.xDisconn
26270 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ect" /> method..
26280 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26290 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
262a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
262b0 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22  ram name="pVtab"
262c0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
262d0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
262e0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
262f0 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69 73 63 6f  iveModule.xDisco
26300 6e 6e 65 63 74 22 20 2f 3e 20 6d 65 74 68 6f 64  nnect" /> method
26310 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
26320 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
26330 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65           /// <re
26340 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
26350 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
26360 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
26370 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
26380 44 69 73 63 6f 6e 6e 65 63 74 22 20 2f 3e 20 6d  Disconnect" /> m
26390 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
263a0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
263b0 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
263c0 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
263d0 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e 65  orCode xDisconne
263e0 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct(..           
263f0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
26400 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  b..             
26410 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
26420 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
26430 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
26440 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
26450 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
26460 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
26470 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26480 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
26490 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61  leNotAvailableTa
264a0 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b  bleError(pVtab);
264b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
264c0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
264d0 65 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 70 56  e.xDisconnect(pV
264e0 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
264f0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
26500 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
26510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26540 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
26550 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
26560 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
26570 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
26580 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
26590 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65  NativeModule.xDe
265a0 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64  stroy" /> method
265b0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
265c0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
265d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
265e0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61  param name="pVta
265f0 62 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  b">..           
26600 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
26610 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
26620 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73  ativeModule.xDes
26630 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  troy" /> method.
26640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26650 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
26660 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
26670 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
26680 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
26690 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
266a0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44  eNativeModule.xD
266b0 65 73 74 72 6f 79 22 20 2f 3e 20 6d 65 74 68 6f  estroy" /> metho
266c0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
266d0 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
266e0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
266f0 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ic SQLiteErrorCo
26700 64 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20  de xDestroy(..  
26710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
26720 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
26730 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
26740 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
26750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
26760 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
26770 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
26780 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
26790 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
267a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
267b0 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
267c0 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
267d0 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
267e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
267f0 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 44 65 73 74  urn module.xDest
26800 72 6f 79 28 70 56 74 61 62 29 3b 0d 0a 20 20 20  roy(pVtab);..   
26810 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
26820 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
26830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
26870 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26880 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
26890 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
268a0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
268b0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
268c0 6c 65 2e 78 4f 70 65 6e 22 20 2f 3e 20 6d 65 74  le.xOpen" /> met
268d0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
268e0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
268f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26900 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
26910 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
26920 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
26930 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
26940 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
26950 4f 70 65 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  Open" /> method.
26960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26970 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
26980 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
26990 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
269a0 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
269b0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
269c0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
269d0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e  tiveModule.xOpen
269e0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
269f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
26a00 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
26a10 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
26a20 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
26a30 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
26a40 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
26a50 69 76 65 4d 6f 64 75 6c 65 2e 78 4f 70 65 6e 22  iveModule.xOpen"
26a60 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
26a70 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72           /// </r
26a80 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
26a90 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
26aa0 74 65 45 72 72 6f 72 43 6f 64 65 20 78 4f 70 65  teErrorCode xOpe
26ab0 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
26ac0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
26ad0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
26ae0 20 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 43     ref IntPtr pC
26af0 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  ursor..         
26b00 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
26b10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
26b20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63           // Chec
26b30 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
26b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b50 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75  if (module == nu
26b60 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
26b70 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
26b80 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62  ModuleNotAvailab
26b90 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  leTableError(pVt
26ba0 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ab);....        
26bb0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
26bc0 6f 64 75 6c 65 2e 78 4f 70 65 6e 28 70 56 74 61  odule.xOpen(pVta
26bd0 62 2c 20 72 65 66 20 70 43 75 72 73 6f 72 29 3b  b, ref pCursor);
26be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
26bf0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
26c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c40 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
26c50 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
26c60 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26c70 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
26c80 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
26c90 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20  eModule.xClose" 
26ca0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
26cb0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75          /// </su
26cc0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
26cd0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
26ce0 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d 0a  ame="pCursor">..
26cf0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26d00 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
26d10 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
26d20 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f  Module.xClose" /
26d30 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
26d40 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
26d50 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
26d60 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
26d70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
26d80 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
26d90 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
26da0 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 22 20 2f  Module.xClose" /
26db0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
26dc0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
26dd0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
26de0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
26df0 45 72 72 6f 72 43 6f 64 65 20 78 43 6c 6f 73 65  ErrorCode xClose
26e00 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
26e10 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f     IntPtr pCurso
26e20 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
26e30 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
26e40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
26e50 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
26e60 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
26e70 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
26e80 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
26e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26ea0 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
26eb0 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75  leNotAvailableCu
26ec0 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f  rsorError(pCurso
26ed0 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
26ee0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
26ef0 64 75 6c 65 2e 78 43 6c 6f 73 65 28 70 43 75 72  dule.xClose(pCur
26f00 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  sor);..         
26f10 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
26f20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
26f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26f60 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
26f70 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
26f80 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
26f90 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
26fa0 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
26fb0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
26fc0 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lter" /> method.
26fd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
26fe0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
26ff0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
27000 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73  aram name="pCurs
27010 6f 72 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  or">..          
27020 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
27030 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
27040 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
27050 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lter" /> method.
27060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27070 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
27080 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
27090 61 6d 20 6e 61 6d 65 3d 22 69 64 78 4e 75 6d 22  am name="idxNum"
270a0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
270b0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
270c0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
270d0 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65  iveModule.xFilte
270e0 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  r" /> method... 
270f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
27100 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
27110 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
27120 6e 61 6d 65 3d 22 69 64 78 53 74 72 22 3e 0d 0a  name="idxStr">..
27130 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27140 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
27150 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
27160 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 22 20  Module.xFilter" 
27170 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
27180 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
27190 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
271a0 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
271b0 65 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20  e="argc">..     
271c0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
271d0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
271e0 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
271f0 65 2e 78 46 69 6c 74 65 72 22 20 2f 3e 20 6d 65  e.xFilter" /> me
27200 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
27210 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
27220 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27230 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72   <param name="ar
27240 67 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  gv">..          
27250 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
27260 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
27270 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
27280 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  lter" /> method.
27290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
272a0 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
272b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74          /// <ret
272c0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
272d0 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
272e0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
272f0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46  eNativeModule.xF
27300 69 6c 74 65 72 22 20 2f 3e 20 6d 65 74 68 6f 64  ilter" /> method
27310 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27320 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
27330 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
27340 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  c SQLiteErrorCod
27350 65 20 78 46 69 6c 74 65 72 28 0d 0a 20 20 20 20  e xFilter(..    
27360 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
27370 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a 20 20 20  tr pCursor,..   
27380 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
27390 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20 20 20   idxNum,..      
273a0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
273b0 20 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20 20   idxStr,..      
273c0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61 72            int ar
273d0 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gc,..           
273e0 20 20 20 20 20 49 6e 74 50 74 72 5b 5d 20 61 72       IntPtr[] ar
273f0 67 76 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  gv..            
27400 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
27410 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
27420 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
27430 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
27440 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
27450 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
27460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27470 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
27480 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43  uleNotAvailableC
27490 75 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73  ursorError(pCurs
274a0 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
274b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d          return m
274c0 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 28 70 43  odule.xFilter(pC
274d0 75 72 73 6f 72 2c 20 69 64 78 4e 75 6d 2c 20 69  ursor, idxNum, i
274e0 64 78 53 74 72 2c 20 61 72 67 63 2c 20 61 72 67  dxStr, argc, arg
274f0 76 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  v);..           
27500 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
27510 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
27520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27550 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
27560 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
27570 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
27580 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
27590 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
275a0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74  tiveModule.xNext
275b0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
275c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
275d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
275e0 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d        /// <param
275f0 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e   name="pCursor">
27600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27610 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
27620 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
27630 76 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20  veModule.xNext" 
27640 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
27650 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
27660 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
27670 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
27680 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27690 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
276a0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
276b0 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 22 20 2f  eModule.xNext" /
276c0 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
276d0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
276e0 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
276f0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
27700 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28  ErrorCode xNext(
27710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27720 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
27730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27740 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
27750 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27760 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
27770 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
27780 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
27790 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
277a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
277b0 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c      return Modul
277c0 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72  eNotAvailableCur
277d0 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72  sorError(pCursor
277e0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
277f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
27800 75 6c 65 2e 78 4e 65 78 74 28 70 43 75 72 73 6f  ule.xNext(pCurso
27810 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
27820 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
27830 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
27840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27870 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
27880 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
27890 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
278a0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
278b0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
278c0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22  tiveModule.xEof"
278d0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
278e0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
278f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
27900 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
27910 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
27920 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27930 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
27940 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
27950 65 4d 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e  eModule.xEof" />
27960 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
27970 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
27980 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
27990 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
279a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
279b0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
279c0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
279d0 6f 64 75 6c 65 2e 78 45 6f 66 22 20 2f 3e 20 6d  odule.xEof" /> m
279e0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
279f0 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
27a00 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
27a10 70 75 62 6c 69 63 20 69 6e 74 20 78 45 6f 66 28  public int xEof(
27a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27a30 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
27a40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27a50 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
27a60 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27a70 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70      // CheckDisp
27a80 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
27a90 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d             if (m
27aa0 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  odule == null)..
27ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27ac0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
27ad0 20 20 20 20 20 20 20 4d 6f 64 75 6c 65 4e 6f 74         ModuleNot
27ae0 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f 72 45  AvailableCursorE
27af0 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a  rror(pCursor);..
27b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27b10 20 20 20 20 72 65 74 75 72 6e 20 31 3b 0d 0a 20      return 1;.. 
27b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
27b30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27b40 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
27b50 65 2e 78 45 6f 66 28 70 43 75 72 73 6f 72 29 3b  e.xEof(pCursor);
27b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
27b70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
27b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27bc0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
27bd0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
27be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27bf0 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
27c00 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
27c10 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22  eModule.xColumn"
27c20 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
27c30 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
27c40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
27c50 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
27c60 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72 22 3e 0d  name="pCursor">.
27c70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27c80 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
27c90 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
27ca0 65 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22  eModule.xColumn"
27cb0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
27cc0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
27cd0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
27ce0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
27cf0 6d 65 3d 22 70 43 6f 6e 74 65 78 74 22 3e 0d 0a  me="pContext">..
27d00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
27d10 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
27d20 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
27d30 4d 6f 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20  Module.xColumn" 
27d40 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
27d50 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
27d60 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
27d70 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
27d80 65 3d 22 69 6e 64 65 78 22 3e 0d 0a 20 20 20 20  e="index">..    
27d90 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
27da0 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
27db0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
27dc0 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20 6d  le.xColumn" /> m
27dd0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
27de0 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
27df0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
27e00 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
27e10 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
27e20 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
27e30 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
27e40 75 6c 65 2e 78 43 6f 6c 75 6d 6e 22 20 2f 3e 20  ule.xColumn" /> 
27e50 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
27e60 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72       /// </retur
27e70 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns>..           
27e80 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72   public SQLiteEr
27e90 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e 28  rorCode xColumn(
27ea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27eb0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
27ec0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
27ed0 20 20 20 49 6e 74 50 74 72 20 70 43 6f 6e 74 65     IntPtr pConte
27ee0 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt,..           
27ef0 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 0d 0a       int index..
27f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f10 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
27f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27f30 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f 73    // CheckDispos
27f40 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
27f50 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64           if (mod
27f60 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ule == null)..  
27f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f80 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e    return ModuleN
27f90 6f 74 41 76 61 69 6c 61 62 6c 65 43 75 72 73 6f  otAvailableCurso
27fa0 72 45 72 72 6f 72 28 70 43 75 72 73 6f 72 29 3b  rError(pCursor);
27fb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27fc0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
27fd0 65 2e 78 43 6f 6c 75 6d 6e 28 70 43 75 72 73 6f  e.xColumn(pCurso
27fe0 72 2c 20 70 43 6f 6e 74 65 78 74 2c 20 69 6e 64  r, pContext, ind
27ff0 65 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ex);..          
28000 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
28010 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
28020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28050 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
28060 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
28070 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
28080 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
28090 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
280a0 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77  ativeModule.xRow
280b0 49 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  Id" /> method...
280c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
280d0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
280e0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
280f0 61 6d 20 6e 61 6d 65 3d 22 70 43 75 72 73 6f 72  am name="pCursor
28100 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
28110 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
28120 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
28130 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49  tiveModule.xRowI
28140 64 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  d" /> method... 
28150 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28160 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
28170 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
28180 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d 0a 20  name="rowId">.. 
28190 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
281a0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
281b0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
281c0 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e  odule.xRowId" />
281d0 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
281e0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
281f0 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
28200 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
28210 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28220 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28230 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28240 6f 64 75 6c 65 2e 78 52 6f 77 49 64 22 20 2f 3e  odule.xRowId" />
28250 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
28260 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75        /// </retu
28270 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  rns>..          
28280 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45    public SQLiteE
28290 72 72 6f 72 43 6f 64 65 20 78 52 6f 77 49 64 28  rrorCode xRowId(
282a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
282b0 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
282c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
282d0 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49     ref long rowI
282e0 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
282f0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
28300 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
28310 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73       // CheckDis
28320 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
28330 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
28340 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d  module == null).
28350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28360 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75       return Modu
28370 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 43 75  leNotAvailableCu
28380 72 73 6f 72 45 72 72 6f 72 28 70 43 75 72 73 6f  rsorError(pCurso
28390 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
283a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f         return mo
283b0 64 75 6c 65 2e 78 52 6f 77 49 64 28 70 43 75 72  dule.xRowId(pCur
283c0 73 6f 72 2c 20 72 65 66 20 72 6f 77 49 64 29 3b  sor, ref rowId);
283d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
283e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
283f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28430 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
28440 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
28450 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28460 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
28470 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
28480 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22  eModule.xUpdate"
28490 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
284a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
284b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
284c0 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
284d0 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
284e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
284f0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28500 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28510 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22 20 2f  odule.xUpdate" /
28520 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
28530 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72         /// </par
28540 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  am>..           
28550 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
28560 3d 22 61 72 67 63 22 3e 0d 0a 20 20 20 20 20 20  ="argc">..      
28570 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28580 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28590 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
285a0 2e 78 55 70 64 61 74 65 22 20 2f 3e 20 6d 65 74  .xUpdate" /> met
285b0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
285c0 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
285d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
285e0 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 72 67  <param name="arg
285f0 76 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  v">..           
28600 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65   /// See the <se
28610 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e  e cref="ISQLiteN
28620 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64  ativeModule.xUpd
28630 61 74 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d  ate" /> method..
28640 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28650 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20   </param>..     
28660 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61         /// <para
28670 6d 20 6e 61 6d 65 3d 22 72 6f 77 49 64 22 3e 0d  m name="rowId">.
28680 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
28690 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
286a0 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
286b0 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65 22  eModule.xUpdate"
286c0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
286d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
286e0 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
286f0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
28700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
28710 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
28720 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
28730 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
28740 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
28750 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
28760 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20  returns>..      
28770 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
28780 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 55 70  iteErrorCode xUp
28790 64 61 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20  date(..         
287a0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
287b0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
287c0 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c 0d        int argc,.
287d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
287e0 20 49 6e 74 50 74 72 5b 5d 20 61 72 67 76 2c 0d   IntPtr[] argv,.
287f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28800 20 72 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d   ref long rowId.
28810 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28820 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
28830 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
28840 20 20 20 2f 2f 20 43 68 65 63 6b 44 69 73 70 6f     // CheckDispo
28850 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
28860 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f            if (mo
28870 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  dule == null).. 
28880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28890 20 20 20 72 65 74 75 72 6e 20 4d 6f 64 75 6c 65     return Module
288a0 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
288b0 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
288c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
288d0 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c 65 2e    return module.
288e0 78 55 70 64 61 74 65 28 70 56 74 61 62 2c 20 61  xUpdate(pVtab, a
288f0 72 67 63 2c 20 61 72 67 76 2c 20 72 65 66 20 72  rgc, argv, ref r
28900 6f 77 49 64 29 3b 0d 0a 20 20 20 20 20 20 20 20  owId);..        
28910 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
28920 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
28930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28960 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
28970 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
28980 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
28990 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
289a0 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
289b0 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42  eNativeModule.xB
289c0 65 67 69 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  egin" /> method.
289d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
289e0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
289f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
28a00 61 72 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62  aram name="pVtab
28a10 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ">..            
28a20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
28a30 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
28a40 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69  tiveModule.xBegi
28a50 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
28a60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28a70 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
28a80 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
28a90 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
28aa0 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
28ab0 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
28ac0 74 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 67 69  tiveModule.xBegi
28ad0 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
28ae0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28af0 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20  /returns>..     
28b00 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
28b10 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42  LiteErrorCode xB
28b20 65 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  egin(..         
28b30 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
28b40 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
28b50 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
28b60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
28b70 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
28b80 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
28b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
28ba0 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
28bb0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
28bc0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
28bd0 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
28be0 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
28bf0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
28c00 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
28c10 75 6c 65 2e 78 42 65 67 69 6e 28 70 56 74 61 62  ule.xBegin(pVtab
28c20 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
28c30 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
28c40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
28c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c80 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
28c90 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
28ca0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28cb0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
28cc0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
28cd0 69 76 65 4d 6f 64 75 6c 65 2e 78 53 79 6e 63 22  iveModule.xSync"
28ce0 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
28cf0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73           /// </s
28d00 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20  ummary>..       
28d10 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
28d20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e 0d 0a 20  name="pVtab">.. 
28d30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
28d40 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
28d50 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
28d60 6f 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20  odule.xSync" /> 
28d70 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
28d80 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
28d90 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
28da0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
28db0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
28dc0 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
28dd0 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
28de0 64 75 6c 65 2e 78 53 79 6e 63 22 20 2f 3e 20 6d  dule.xSync" /> m
28df0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
28e00 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
28e10 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
28e20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 45 72 72  public SQLiteErr
28e30 6f 72 43 6f 64 65 20 78 53 79 6e 63 28 0d 0a 20  orCode xSync(.. 
28e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
28e50 6e 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20  ntPtr pVtab..   
28e60 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
28e70 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
28e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28e90 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
28ea0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
28eb0 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
28ec0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
28ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
28ee0 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
28ef0 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
28f00 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
28f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
28f20 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 79 6e  turn module.xSyn
28f30 63 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20 20  c(pVtab);..     
28f40 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
28f50 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
28f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
28fa0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
28fb0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
28fc0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
28fd0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
28fe0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
28ff0 2e 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74  .xCommit" /> met
29000 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
29010 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
29020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29030 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
29040 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
29050 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
29060 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
29070 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
29080 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68 6f  Commit" /> metho
29090 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
290a0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
290b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 72            /// <r
290c0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20  eturns>..       
290d0 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65       /// See the
290e0 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
290f0 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
29100 78 43 6f 6d 6d 69 74 22 20 2f 3e 20 6d 65 74 68  xCommit" /> meth
29110 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
29120 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
29130 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
29140 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
29150 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20 20  ode xCommit(..  
29160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
29170 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
29180 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
29190 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
291a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
291b0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
291c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
291d0 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65 20       if (module 
291e0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
291f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
29200 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41 76  turn ModuleNotAv
29210 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72 6f  ailableTableErro
29220 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20  r(pVtab);....   
29230 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
29240 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 43 6f 6d 6d  urn module.xComm
29250 69 74 28 70 56 74 61 62 29 3b 0d 0a 20 20 20 20  it(pVtab);..    
29260 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
29270 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
29280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
292a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
292b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
292c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
292d0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
292e0 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
292f0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
29300 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
29310 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20  e.xRollback" /> 
29320 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
29330 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
29340 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
29350 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
29360 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
29370 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
29380 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
29390 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
293a0 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20 2f 3e 20  e.xRollback" /> 
293b0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
293c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
293d0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
293e0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
293f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
29400 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
29410 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
29420 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 22 20  dule.xRollback" 
29430 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
29440 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
29450 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
29460 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
29470 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c  eErrorCode xRoll
29480 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 20  back(..         
29490 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
294a0 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
294b0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
294c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
294d0 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
294e0 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
294f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
29500 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
29510 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
29520 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
29530 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
29540 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
29550 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
29560 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
29570 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 28 70 56  ule.xRollback(pV
29580 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
29590 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
295a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
295b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
295c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
295d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
295e0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
295f0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d         /// <summ
29600 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary>..          
29610 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73    /// See the <s
29620 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65  ee cref="ISQLite
29630 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  NativeModule.xFi
29640 6e 64 46 75 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d  ndFunction" /> m
29650 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
29660 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
29670 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
29680 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
29690 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
296a0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
296b0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
296c0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
296d0 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20  .xFindFunction" 
296e0 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
296f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
29700 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
29710 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
29720 65 3d 22 6e 41 72 67 22 3e 0d 0a 20 20 20 20 20  e="nArg">..     
29730 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
29740 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
29750 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
29760 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22  e.xFindFunction"
29770 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
29780 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70           /// </p
29790 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20  aram>..         
297a0 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
297b0 6d 65 3d 22 7a 4e 61 6d 65 22 3e 0d 0a 20 20 20  me="zName">..   
297c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65           /// See
297d0 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   the <see cref="
297e0 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ISQLiteNativeMod
297f0 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f  ule.xFindFunctio
29800 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  n" /> method... 
29810 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29820 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
29830 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20       /// <param 
29840 6e 61 6d 65 3d 22 63 61 6c 6c 62 61 63 6b 22 3e  name="callback">
29850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29860 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
29870 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
29880 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75  veModule.xFindFu
29890 6e 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f  nction" /> metho
298a0 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
298b0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
298c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
298d0 61 72 61 6d 20 6e 61 6d 65 3d 22 70 43 6c 69 65  aram name="pClie
298e0 6e 74 44 61 74 61 22 3e 0d 0a 20 20 20 20 20 20  ntData">..      
298f0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29900 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
29910 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
29920 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 22 20  .xFindFunction" 
29930 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
29940 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61          /// </pa
29950 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20  ram>..          
29960 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
29970 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29980 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72   See the <see cr
29990 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
299a0 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e  eModule.xFindFun
299b0 63 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64  ction" /> method
299c0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
299d0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
299e0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
299f0 63 20 69 6e 74 20 78 46 69 6e 64 46 75 6e 63 74  c int xFindFunct
29a00 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
29a10 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
29a20 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ab,..           
29a30 20 20 20 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a       int nArg,..
29a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a50 49 6e 74 50 74 72 20 7a 4e 61 6d 65 2c 0d 0a 20  IntPtr zName,.. 
29a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
29a70 65 66 20 53 51 4c 69 74 65 43 61 6c 6c 62 61 63  ef SQLiteCallbac
29a80 6b 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  k callback,..   
29a90 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
29aa0 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44   IntPtr pClientD
29ab0 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ata..           
29ac0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
29ad0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
29ae0 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
29af0 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
29b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
29b10 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
29b20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
29b30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
29b40 20 20 20 20 20 20 20 20 20 20 4d 6f 64 75 6c 65            Module
29b50 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54 61 62 6c  NotAvailableTabl
29b60 65 45 72 72 6f 72 28 70 56 74 61 62 29 3b 0d 0a  eError(pVtab);..
29b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b80 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20      return 0;.. 
29b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
29ba0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29bb0 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 6c      return modul
29bc0 65 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  e.xFindFunction(
29bd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29be0 20 20 20 20 20 20 70 56 74 61 62 2c 20 6e 41 72        pVtab, nAr
29bf0 67 2c 20 7a 4e 61 6d 65 2c 20 72 65 66 20 63 61  g, zName, ref ca
29c00 6c 6c 62 61 63 6b 2c 20 72 65 66 20 70 43 6c 69  llback, ref pCli
29c10 65 6e 74 44 61 74 61 29 3b 0d 0a 20 20 20 20 20  entData);..     
29c20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
29c30 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
29c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
29c80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29c90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
29ca0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
29cb0 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
29cc0 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
29cd0 2e 78 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74  .xRename" /> met
29ce0 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  hod...          
29cf0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
29d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
29d10 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70  / <param name="p
29d20 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20 20 20  Vtab">..        
29d30 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20      /// See the 
29d40 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69  <see cref="ISQLi
29d50 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78  teNativeModule.x
29d60 52 65 6e 61 6d 65 22 20 2f 3e 20 6d 65 74 68 6f  Rename" /> metho
29d70 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
29d80 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
29d90 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70            /// <p
29da0 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4e 65 77 22  aram name="zNew"
29db0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
29dc0 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
29dd0 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
29de0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d  iveModule.xRenam
29df0 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20  e" /> method... 
29e00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
29e10 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20  /param>..       
29e20 20 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e       /// <return
29e30 73 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s>..            
29e40 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65  /// See the <see
29e50 20 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61   cref="ISQLiteNa
29e60 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61  tiveModule.xRena
29e70 6d 65 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  me" /> method...
29e80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
29e90 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
29ea0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
29eb0 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
29ec0 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  Rename(..       
29ed0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
29ee0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
29ef0 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 7a          IntPtr z
29f00 4e 65 77 0d 0a 20 20 20 20 20 20 20 20 20 20 20  New..           
29f10 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
29f20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
29f30 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44         // CheckD
29f40 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
29f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
29f60 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c   (module == null
29f70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
29f80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f         return Mo
29f90 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65  duleNotAvailable
29fa0 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62  TableError(pVtab
29fb0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
29fc0 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64        return mod
29fd0 75 6c 65 2e 78 52 65 6e 61 6d 65 28 70 56 74 61  ule.xRename(pVta
29fe0 62 2c 20 7a 4e 65 77 29 3b 0d 0a 20 20 20 20 20  b, zNew);..     
29ff0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2a000 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2a010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2a050 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c             /// <
2a060 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
2a070 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2a080 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2a090 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2a0a0 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e 20  .xSavepoint" /> 
2a0b0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2a0c0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
2a0d0 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry>..           
2a0e0 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
2a0f0 3d 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20  ="pVtab">..     
2a100 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2a110 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2a120 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2a130 65 2e 78 53 61 76 65 70 6f 69 6e 74 22 20 2f 3e  e.xSavepoint" />
2a140 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20   method...      
2a150 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61        /// </para
2a160 6d 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m>..            
2a170 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2a180 22 69 53 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20  "iSavepoint">.. 
2a190 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53             /// S
2a1a0 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66  ee the <see cref
2a1b0 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  ="ISQLiteNativeM
2a1c0 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e 74  odule.xSavepoint
2a1d0 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
2a1e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f            /// </
2a1f0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 20 20 20 20  param>..        
2a200 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2a210 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2a220 2f 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20  // See the <see 
2a230 63 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74  cref="ISQLiteNat
2a240 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70  iveModule.xSavep
2a250 6f 69 6e 74 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  oint" /> method.
2a260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a270 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
2a280 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2a290 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2a2a0 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20   xSavepoint(..  
2a2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
2a2c0 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20  tPtr pVtab,..   
2a2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
2a2e0 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20   iSavepoint..   
2a2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
2a300 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2a310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2a320 2f 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  / CheckDisposed(
2a330 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2a340 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75 6c 65        if (module
2a350 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
2a360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2a370 65 74 75 72 6e 20 4d 6f 64 75 6c 65 4e 6f 74 41  eturn ModuleNotA
2a380 76 61 69 6c 61 62 6c 65 54 61 62 6c 65 45 72 72  vailableTableErr
2a390 6f 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20  or(pVtab);....  
2a3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2a3b0 74 75 72 6e 20 6d 6f 64 75 6c 65 2e 78 53 61 76  turn module.xSav
2a3c0 65 70 6f 69 6e 74 28 70 56 74 61 62 2c 20 69 53  epoint(pVtab, iS
2a3d0 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20 20 20  avepoint);..    
2a3e0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2a3f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2a400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a440 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a450 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
2a460 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74         /// See t
2a470 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53  he <see cref="IS
2a480 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2a490 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d  e.xRelease" /> m
2a4a0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2a4b0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2a4c0 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2a4d0 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
2a4e0 22 70 56 74 61 62 22 3e 0d 0a 20 20 20 20 20 20  "pVtab">..      
2a4f0 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20 74 68        /// See th
2a500 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
2a510 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
2a520 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20 6d 65  .xRelease" /> me
2a530 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2a540 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2a550 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a560 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 69 53   <param name="iS
2a570 61 76 65 70 6f 69 6e 74 22 3e 0d 0a 20 20 20 20  avepoint">..    
2a580 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2a590 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2a5a0 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2a5b0 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f 3e 20  le.xRelease" /> 
2a5c0 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20  method...       
2a5d0 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d       /// </param
2a5e0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2a5f0 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
2a600 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65            /// Se
2a610 65 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  e the <see cref=
2a620 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f  "ISQLiteNativeMo
2a630 64 75 6c 65 2e 78 52 65 6c 65 61 73 65 22 20 2f  dule.xRelease" /
2a640 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20  > method...     
2a650 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74         /// </ret
2a660 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20 20  urns>..         
2a670 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
2a680 45 72 72 6f 72 43 6f 64 65 20 78 52 65 6c 65 61  ErrorCode xRelea
2a690 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se(..           
2a6a0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
2a6b0 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  b,..            
2a6c0 20 20 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69      int iSavepoi
2a6d0 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
2a6e0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2a6f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a700 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 44 69        // CheckDi
2a710 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
2a720 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2a730 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e 75 6c 6c 29  (module == null)
2a740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a750 20 20 20 20 20 20 72 65 74 75 72 6e 20 4d 6f 64        return Mod
2a760 75 6c 65 4e 6f 74 41 76 61 69 6c 61 62 6c 65 54  uleNotAvailableT
2a770 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 29  ableError(pVtab)
2a780 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2a790 20 20 20 20 20 72 65 74 75 72 6e 20 6d 6f 64 75       return modu
2a7a0 6c 65 2e 78 52 65 6c 65 61 73 65 28 70 56 74 61  le.xRelease(pVta
2a7b0 62 2c 20 69 53 61 76 65 70 6f 69 6e 74 29 3b 0d  b, iSavepoint);.
2a7c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2a7d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a820 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2a830 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2a840 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a850 53 65 65 20 74 68 65 20 3c 73 65 65 20 63 72 65  See the <see cre
2a860 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76 65  f="ISQLiteNative
2a870 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  Module.xRollback
2a880 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a  To" /> method...
2a890 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20              /// 
2a8a0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
2a8b0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2a8c0 61 6d 20 6e 61 6d 65 3d 22 70 56 74 61 62 22 3e  am name="pVtab">
2a8d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a8e0 2f 20 53 65 65 20 74 68 65 20 3c 73 65 65 20 63  / See the <see c
2a8f0 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
2a900 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61  veModule.xRollba
2a910 63 6b 54 6f 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  ckTo" /> method.
2a920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2a930 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
2a940 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61 72          /// <par
2a950 61 6d 20 6e 61 6d 65 3d 22 69 53 61 76 65 70 6f  am name="iSavepo
2a960 69 6e 74 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  int">..         
2a970 20 20 20 2f 2f 2f 20 53 65 65 20 74 68 65 20 3c     /// See the <
2a980 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c 69 74  see cref="ISQLit
2a990 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 52  eNativeModule.xR
2a9a0 6f 6c 6c 62 61 63 6b 54 6f 22 20 2f 3e 20 6d 65  ollbackTo" /> me
2a9b0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2a9c0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
2a9d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2a9e0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
2a9f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 53 65 65 20          /// See 
2aa00 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49  the <see cref="I
2aa10 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2aa20 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b 54 6f 22 20  le.xRollbackTo" 
2aa30 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  /> method...    
2aa40 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 72 65          /// </re
2aa50 74 75 72 6e 73 3e 0d 0a 20 20 20 20 20 20 20 20  turns>..        
2aa60 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
2aa70 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c  eErrorCode xRoll
2aa80 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20  backTo(..       
2aa90 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
2aaa0 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20  pVtab,..        
2aab0 20 20 20 20 20 20 20 20 69 6e 74 20 69 53 61 76          int iSav
2aac0 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20  epoint..        
2aad0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2aae0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2aaf0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65            // Che
2ab00 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
2ab10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ab20 20 69 66 20 28 6d 6f 64 75 6c 65 20 3d 3d 20 6e   if (module == n
2ab30 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
2ab40 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2ab50 20 4d 6f 64 75 6c 65 4e 6f 74 41 76 61 69 6c 61   ModuleNotAvaila
2ab60 62 6c 65 54 61 62 6c 65 45 72 72 6f 72 28 70 56  bleTableError(pV
2ab70 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tab);....       
2ab80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2ab90 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  module.xRollback
2aba0 54 6f 28 70 56 74 61 62 2c 20 69 53 61 76 65 70  To(pVtab, iSavep
2abb0 6f 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  oint);..        
2abc0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2abd0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2abe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2abf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ac30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ac40 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61  #region IDisposa
2ac50 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  ble Members..   
2ac60 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75           /// <su
2ac70 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20  mmary>..        
2ac80 20 20 20 20 2f 2f 2f 20 44 69 73 70 6f 73 65 73      /// Disposes
2ac90 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20   of this object 
2aca0 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20  instance...     
2acb0 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d         /// </sum
2acc0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2acd0 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44     public void D
2ace0 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 20 20  ispose()..      
2acf0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2ad00 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65           Dispose
2ad10 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  (true);..       
2ad20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70           GC.Supp
2ad30 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
2ad40 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s);..           
2ad50 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2ad60 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
2ad70 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2ad80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ad90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ada0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2adb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2adc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
2add0 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65  gion IDisposable
2ade0 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65   "Pattern" Membe
2adf0 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rs..            
2ae00 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73  private bool dis
2ae10 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20  posed;..        
2ae20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
2ae30 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  >..            /
2ae40 2f 2f 20 54 68 72 6f 77 73 20 61 6e 20 3c 73 65  // Throws an <se
2ae50 65 20 63 72 65 66 3d 22 53 79 73 74 65 6d 2e 4f  e cref="System.O
2ae60 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63  bjectDisposedExc
2ae70 65 70 74 69 6f 6e 22 2f 3e 20 69 66 20 74 68 69  eption"/> if thi
2ae80 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  s..            /
2ae90 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  // object instan
2aea0 63 65 20 68 61 73 20 62 65 65 6e 20 64 69 73 70  ce has been disp
2aeb0 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  osed...         
2aec0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
2aed0 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  >..            p
2aee0 72 69 76 61 74 65 20 76 6f 69 64 20 43 68 65 63  rivate void Chec
2aef0 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74  kDisposed() /* t
2af00 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
2af10 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f       {..#if THRO
2af20 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20  W_ON_DISPOSED.. 
2af30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2af40 66 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20  f (disposed)..  
2af50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2af60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2af70 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f       throw new O
2af80 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63  bjectDisposedExc
2af90 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  eption(..       
2afa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2afb0 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65 4e 61   typeof(SQLiteNa
2afc0 74 69 76 65 4d 6f 64 75 6c 65 29 2e 4e 61 6d 65  tiveModule).Name
2afd0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2afe0 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20      }..#endif.. 
2aff0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2b000 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2b010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b050 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2b060 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2b070 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 44 69            /// Di
2b080 73 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 6f  sposes of this o
2b090 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 2e 0d  bject instance..
2b0a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2b0b0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
2b0c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 70 61           /// <pa
2b0d0 72 61 6d 20 6e 61 6d 65 3d 22 64 69 73 70 6f 73  ram name="dispos
2b0e0 69 6e 67 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ing">..         
2b0f0 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20     /// Non-zero 
2b100 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69  if this method i
2b110 73 20 62 65 69 6e 67 20 63 61 6c 6c 65 64 20 66  s being called f
2b120 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20  rom the..       
2b130 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72       /// <see cr
2b140 65 66 3d 22 44 69 73 70 6f 73 65 28 29 22 20 2f  ef="Dispose()" /
2b150 3e 20 6d 65 74 68 6f 64 2e 20 20 5a 65 72 6f 20  > method.  Zero 
2b160 69 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 69  if this method i
2b170 73 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20 20  s being..       
2b180 20 20 20 20 20 2f 2f 2f 20 63 61 6c 6c 65 64 20       /// called 
2b190 66 72 6f 6d 20 74 68 65 20 66 69 6e 61 6c 69 7a  from the finaliz
2b1a0 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er...           
2b1b0 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
2b1c0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
2b1d0 74 65 20 2f 2a 20 70 72 6f 74 65 63 74 65 64 20  te /* protected 
2b1e0 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20  virtual */ void 
2b1f0 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73  Dispose(bool dis
2b200 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
2b210 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2b220 20 20 20 20 20 20 20 20 69 66 20 28 21 64 69 73          if (!dis
2b230 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20  posed)..        
2b240 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2b250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2b260 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d  /if (disposing).
2b270 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b280 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20       //{..      
2b290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2b2a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2b2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b2c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
2b2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2b2e0 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d      // dispose m
2b2f0 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73  anaged resources
2b300 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20   here.....      
2b310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2b320 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2b330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b340 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
2b350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2b360 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2b370 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2b380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b3a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b3b0 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20       // release 
2b3c0 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  unmanaged resour
2b3d0 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
2b3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b3f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2b400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b410 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2b420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2b430 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2b440 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
2b450 54 68 65 20 6d 6f 64 75 6c 65 20 69 73 20 6e 6f  The module is no
2b460 74 20 6f 77 6e 65 64 20 62 79 20 75 73 3b 20 74  t owned by us; t
2b470 68 65 72 65 66 6f 72 65 2c 20 64 6f 20 6e 6f 74  herefore, do not
2b480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b490 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64        //       d
2b4a0 69 73 70 6f 73 65 20 69 74 2e 0d 0a 20 20 20 20  ispose it...    
2b4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b4c0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2b4d0 20 20 20 20 20 20 20 20 69 66 20 28 6d 6f 64 75          if (modu
2b4e0 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le != null)..   
2b4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b500 20 20 20 20 20 6d 6f 64 75 6c 65 20 3d 20 6e 75       module = nu
2b510 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
2b520 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f             dispo
2b530 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
2b540 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2b550 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2b560 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
2b570 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
2b580 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2b590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b5c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2b5d0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
2b5e0 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20  Destructor..    
2b5f0 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d          /// <sum
2b600 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  mary>..         
2b610 20 20 20 2f 2f 2f 20 46 69 6e 61 6c 69 7a 65 73     /// Finalizes
2b620 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 6e 73   this object ins
2b630 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 20 20 20  tance...        
2b640 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2b650 79 3e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y>..            
2b660 7e 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64  ~SQLiteNativeMod
2b670 75 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20  ule()..         
2b680 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2b690 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 66 61        Dispose(fa
2b6a0 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lse);..         
2b6b0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2b6c0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
2b6d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2b6e0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2b6f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2b700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2b740 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
2b750 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
2b760 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  nts..        pri
2b770 76 61 74 65 20 63 6f 6e 73 74 20 64 6f 75 62 6c  vate const doubl
2b780 65 20 44 65 66 61 75 6c 74 43 6f 73 74 20 3d 20  e DefaultCost = 
2b790 64 6f 75 62 6c 65 2e 4d 61 78 56 61 6c 75 65 3b  double.MaxValue;
2b7a0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
2b7b0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
2b7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b800 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2b810 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
2b820 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20  te Data..       
2b830 20 70 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e   private UnsafeN
2b840 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
2b850 69 74 65 33 5f 6d 6f 64 75 6c 65 20 6e 61 74 69  ite3_module nati
2b860 76 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20  veModule;..     
2b870 20 20 20 70 72 69 76 61 74 65 20 44 69 63 74 69     private Dicti
2b880 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51  onary<IntPtr, SQ
2b890 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
2b8a0 3e 20 74 61 62 6c 65 73 3b 0d 0a 20 20 20 20 20  > tables;..     
2b8b0 20 20 20 70 72 69 76 61 74 65 20 44 69 63 74 69     private Dicti
2b8c0 6f 6e 61 72 79 3c 49 6e 74 50 74 72 2c 20 53 51  onary<IntPtr, SQ
2b8d0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
2b8e0 43 75 72 73 6f 72 3e 20 63 75 72 73 6f 72 73 3b  Cursor> cursors;
2b8f0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
2b900 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
2b910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b950 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2b960 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72     #region Inter
2b970 6e 61 6c 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  nal Methods..   
2b980 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 55 6e       internal Un
2b990 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2b9a0 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75 6c 65  s.sqlite3_module
2b9b0 20 43 72 65 61 74 65 4e 61 74 69 76 65 4d 6f 64   CreateNativeMod
2b9c0 75 6c 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ule()..        {
2b9d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
2b9e0 74 75 72 6e 20 43 72 65 61 74 65 4e 61 74 69 76  turn CreateNativ
2b9f0 65 4d 6f 64 75 6c 65 28 47 65 74 4e 61 74 69 76  eModule(GetNativ
2ba00 65 4d 6f 64 75 6c 65 49 6d 70 6c 28 29 29 3b 0d  eModuleImpl());.
2ba10 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
2ba20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2ba30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2ba40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba80 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
2ba90 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73  gion Public Cons
2baa0 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
2bab0 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 4d    public SQLiteM
2bac0 6f 64 75 6c 65 28 73 74 72 69 6e 67 20 6e 61 6d  odule(string nam
2bad0 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  e)..        {.. 
2bae0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
2baf0 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame == null)..  
2bb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
2bb10 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74  row new Argument
2bb20 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 6e  NullException("n
2bb30 61 6d 65 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ame");....      
2bb40 20 20 20 20 20 20 74 68 69 73 2e 6e 61 6d 65 20        this.name 
2bb50 3d 20 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  = name;..       
2bb60 20 20 20 20 20 74 68 69 73 2e 74 61 62 6c 65 73       this.tables
2bb70 20 3d 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72   = new Dictionar
2bb80 79 3c 49 6e 74 50 74 72 2c 20 53 51 4c 69 74 65  y<IntPtr, SQLite
2bb90 56 69 72 74 75 61 6c 54 61 62 6c 65 3e 28 29 3b  VirtualTable>();
2bba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
2bbb0 69 73 2e 63 75 72 73 6f 72 73 20 3d 20 6e 65 77  is.cursors = new
2bbc0 20 44 69 63 74 69 6f 6e 61 72 79 3c 49 6e 74 50   Dictionary<IntP
2bbd0 74 72 2c 20 53 51 4c 69 74 65 56 69 72 74 75 61  tr, SQLiteVirtua
2bbe0 6c 54 61 62 6c 65 43 75 72 73 6f 72 3e 28 29 3b  lTableCursor>();
2bbf0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2bc00 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2bc10 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2bc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc60 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2bc70 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65  egion Private Me
2bc80 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 70  thods..        p
2bc90 72 69 76 61 74 65 20 55 6e 73 61 66 65 4e 61 74  rivate UnsafeNat
2bca0 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
2bcb0 65 33 5f 6d 6f 64 75 6c 65 20 43 72 65 61 74 65  e3_module Create
2bcc0 4e 61 74 69 76 65 4d 6f 64 75 6c 65 28 0d 0a 20  NativeModule(.. 
2bcd0 20 20 20 20 20 20 20 20 20 20 20 49 53 51 4c 69             ISQLi
2bce0 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 20 6d  teNativeModule m
2bcf0 6f 64 75 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  odule..         
2bd00 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
2bd10 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74  .            nat
2bd20 69 76 65 4d 6f 64 75 6c 65 20 3d 20 6e 65 77 20  iveModule = new 
2bd30 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2bd40 6f 64 73 2e 73 71 6c 69 74 65 33 5f 6d 6f 64 75  ods.sqlite3_modu
2bd50 6c 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  le();..         
2bd60 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2bd70 69 56 65 72 73 69 6f 6e 20 3d 20 32 3b 0d 0a 0d  iVersion = 2;...
2bd80 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2bd90 28 6d 6f 64 75 6c 65 20 21 3d 20 6e 75 6c 6c 29  (module != null)
2bda0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2bdb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bdc0 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
2bdd0 72 65 61 74 65 20 3d 20 6e 65 77 20 55 6e 73 61  reate = new Unsa
2bde0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2bdf0 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20 20 20  xCreate(..      
2be00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2be10 64 75 6c 65 2e 78 43 72 65 61 74 65 29 3b 0d 0a  dule.xCreate);..
2be20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2be30 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2be40 43 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e  Connect = new Un
2be50 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2be60 73 2e 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20  s.xConnect(..   
2be70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be80 20 6d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74   module.xConnect
2be90 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2bea0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2beb0 6c 65 2e 78 42 65 73 74 49 6e 64 65 78 20 3d 20  le.xBestIndex = 
2bec0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2bed0 4d 65 74 68 6f 64 73 2e 78 42 65 73 74 49 6e 64  Methods.xBestInd
2bee0 65 78 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ex(..           
2bef0 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
2bf00 78 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a  xBestIndex);....
2bf10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bf20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69  nativeModule.xDi
2bf30 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55  sconnect = new U
2bf40 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2bf50 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d  ds.xDisconnect(.
2bf60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bf70 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 44 69 73       module.xDis
2bf80 63 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20  connect);....   
2bf90 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2bfa0 69 76 65 4d 6f 64 75 6c 65 2e 78 44 65 73 74 72  iveModule.xDestr
2bfb0 6f 79 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  oy = new UnsafeN
2bfc0 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 44 65  ativeMethods.xDe
2bfd0 73 74 72 6f 79 28 0d 0a 20 20 20 20 20 20 20 20  stroy(..        
2bfe0 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75              modu
2bff0 6c 65 2e 78 44 65 73 74 72 6f 79 29 3b 0d 0a 0d  le.xDestroy);...
2c000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c010 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 4f   nativeModule.xO
2c020 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  pen = new Unsafe
2c030 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 4f  NativeMethods.xO
2c040 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  pen(..          
2c050 20 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65            module
2c060 2e 78 4f 70 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20  .xOpen);....    
2c070 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2c080 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f 73 65 20  veModule.xClose 
2c090 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69  = new UnsafeNati
2c0a0 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65  veMethods.xClose
2c0b0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2c0c0 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43         module.xC
2c0d0 6c 6f 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  lose);....      
2c0e0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2c0f0 4d 6f 64 75 6c 65 2e 78 46 69 6c 74 65 72 20 3d  Module.xFilter =
2c100 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2c110 65 4d 65 74 68 6f 64 73 2e 78 46 69 6c 74 65 72  eMethods.xFilter
2c120 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2c130 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 46         module.xF
2c140 69 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20  ilter);....     
2c150 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2c160 65 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20  eModule.xNext = 
2c170 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2c180 4d 65 74 68 6f 64 73 2e 78 4e 65 78 74 28 0d 0a  Methods.xNext(..
2c190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c1a0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 4e 65 78 74      module.xNext
2c1b0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2c1c0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2c1d0 6c 65 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e  le.xEof = new Un
2c1e0 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2c1f0 73 2e 78 45 6f 66 28 6d 6f 64 75 6c 65 2e 78 45  s.xEof(module.xE
2c200 6f 66 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  of);....        
2c210 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2c220 64 75 6c 65 2e 78 43 6f 6c 75 6d 6e 20 3d 20 6e  dule.xColumn = n
2c230 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2c240 65 74 68 6f 64 73 2e 78 43 6f 6c 75 6d 6e 28 0d  ethods.xColumn(.
2c250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c260 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 43 6f 6c       module.xCol
2c270 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  umn);....       
2c280 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2c290 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d 20 6e  odule.xRowId = n
2c2a0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2c2b0 65 74 68 6f 64 73 2e 78 52 6f 77 49 64 28 0d 0a  ethods.xRowId(..
2c2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c2d0 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 77 49      module.xRowI
2c2e0 64 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  d);....         
2c2f0 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2c300 75 6c 65 2e 78 55 70 64 61 74 65 20 3d 20 6e 65  ule.xUpdate = ne
2c310 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2c320 74 68 6f 64 73 2e 78 55 70 64 61 74 65 28 0d 0a  thods.xUpdate(..
2c330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c340 20 20 20 20 6d 6f 64 75 6c 65 2e 78 55 70 64 61      module.xUpda
2c350 74 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  te);....        
2c360 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f          nativeMo
2c370 64 75 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65  dule.xBegin = ne
2c380 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2c390 74 68 6f 64 73 2e 78 42 65 67 69 6e 28 0d 0a 20  thods.xBegin(.. 
2c3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c3b0 20 20 20 6d 6f 64 75 6c 65 2e 78 42 65 67 69 6e     module.xBegin
2c3c0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2c3d0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2c3e0 6c 65 2e 78 53 79 6e 63 20 3d 20 6e 65 77 20 55  le.xSync = new U
2c3f0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2c400 64 73 2e 78 53 79 6e 63 28 0d 0a 20 20 20 20 20  ds.xSync(..     
2c410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
2c420 6f 64 75 6c 65 2e 78 53 79 6e 63 29 3b 0d 0a 0d  odule.xSync);...
2c430 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c440 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
2c450 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e 73 61  ommit = new Unsa
2c460 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2c470 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20 20 20  xCommit(..      
2c480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f                mo
2c490 64 75 6c 65 2e 78 43 6f 6d 6d 69 74 29 3b 0d 0a  dule.xCommit);..
2c4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c4b0 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78    nativeModule.x
2c4c0 52 6f 6c 6c 62 61 63 6b 20 3d 20 6e 65 77 20 55  Rollback = new U
2c4d0 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2c4e0 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20  ds.xRollback(.. 
2c4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c500 20 20 20 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62     module.xRollb
2c510 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ack);....       
2c520 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2c530 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75 6e 63 74  odule.xFindFunct
2c540 69 6f 6e 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ion = new Unsafe
2c550 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 46  NativeMethods.xF
2c560 69 6e 64 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20  indFunction(..  
2c570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c580 20 20 6d 6f 64 75 6c 65 2e 78 46 69 6e 64 46 75    module.xFindFu
2c590 6e 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20  nction);....    
2c5a0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2c5b0 76 65 4d 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65  veModule.xRename
2c5c0 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2c5d0 69 76 65 4d 65 74 68 6f 64 73 2e 78 52 65 6e 61  iveMethods.xRena
2c5e0 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
2c5f0 20 20 20 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e           module.
2c600 78 52 65 6e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  xRename);....   
2c610 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2c620 69 76 65 4d 6f 64 75 6c 65 2e 78 53 61 76 65 70  iveModule.xSavep
2c630 6f 69 6e 74 20 3d 20 6e 65 77 20 55 6e 73 61 66  oint = new Unsaf
2c640 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2c650 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20 20 20 20  Savepoint(..    
2c660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c670 6d 6f 64 75 6c 65 2e 78 53 61 76 65 70 6f 69 6e  module.xSavepoin
2c680 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
2c690 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64         nativeMod
2c6a0 75 6c 65 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e  ule.xRelease = n
2c6b0 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2c6c0 65 74 68 6f 64 73 2e 78 52 65 6c 65 61 73 65 28  ethods.xRelease(
2c6d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c6e0 20 20 20 20 20 20 6d 6f 64 75 6c 65 2e 78 52 65        module.xRe
2c6f0 6c 65 61 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  lease);....     
2c700 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2c710 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63  eModule.xRollbac
2c720 6b 54 6f 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  kTo = new Unsafe
2c730 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2c740 6f 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20  ollbackTo(..    
2c750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c760 6d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62 61 63 6b  module.xRollback
2c770 54 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  To);..          
2c780 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2c790 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
2c7a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c7b0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2c7c0 6c 65 2e 78 43 72 65 61 74 65 20 3d 20 6e 65 77  le.xCreate = new
2c7d0 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2c7e0 68 6f 64 73 2e 78 43 72 65 61 74 65 28 0d 0a 20  hods.xCreate(.. 
2c7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c800 20 20 20 78 43 72 65 61 74 65 29 3b 0d 0a 0d 0a     xCreate);....
2c810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c820 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6f  nativeModule.xCo
2c830 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55 6e 73 61  nnect = new Unsa
2c840 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2c850 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20 20 20 20  xConnect(..     
2c860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
2c870 43 6f 6e 6e 65 63 74 29 3b 0d 0a 0d 0a 20 20 20  Connect);....   
2c880 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2c890 69 76 65 4d 6f 64 75 6c 65 2e 78 42 65 73 74 49  iveModule.xBestI
2c8a0 6e 64 65 78 20 3d 20 6e 65 77 20 55 6e 73 61 66  ndex = new Unsaf
2c8b0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2c8c0 42 65 73 74 49 6e 64 65 78 28 0d 0a 20 20 20 20  BestIndex(..    
2c8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c8e0 78 42 65 73 74 49 6e 64 65 78 29 3b 0d 0a 0d 0a  xBestIndex);....
2c8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c900 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 44 69  nativeModule.xDi
2c910 73 63 6f 6e 6e 65 63 74 20 3d 20 6e 65 77 20 55  sconnect = new U
2c920 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
2c930 64 73 2e 78 44 69 73 63 6f 6e 6e 65 63 74 28 0d  ds.xDisconnect(.
2c940 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c950 20 20 20 20 20 78 44 69 73 63 6f 6e 6e 65 63 74       xDisconnect
2c960 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2c970 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2c980 6c 65 2e 78 44 65 73 74 72 6f 79 20 3d 20 6e 65  le.xDestroy = ne
2c990 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2c9a0 74 68 6f 64 73 2e 78 44 65 73 74 72 6f 79 28 0d  thods.xDestroy(.
2c9b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c9c0 20 20 20 20 20 78 44 65 73 74 72 6f 79 29 3b 0d       xDestroy);.
2c9d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2c9e0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2c9f0 78 4f 70 65 6e 20 3d 20 6e 65 77 20 55 6e 73 61  xOpen = new Unsa
2ca00 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2ca10 78 4f 70 65 6e 28 78 4f 70 65 6e 29 3b 0d 0a 20  xOpen(xOpen);.. 
2ca20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
2ca30 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43 6c 6f  ativeModule.xClo
2ca40 73 65 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e  se = new UnsafeN
2ca50 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 43 6c  ativeMethods.xCl
2ca60 6f 73 65 28 78 43 6c 6f 73 65 29 3b 0d 0a 0d 0a  ose(xClose);....
2ca70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca80 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69  nativeModule.xFi
2ca90 6c 74 65 72 20 3d 20 6e 65 77 20 55 6e 73 61 66  lter = new Unsaf
2caa0 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78  eNativeMethods.x
2cab0 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20  Filter(..       
2cac0 20 20 20 20 20 20 20 20 20 20 20 20 20 78 46 69               xFi
2cad0 6c 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  lter);....      
2cae0 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65            native
2caf0 4d 6f 64 75 6c 65 2e 78 4e 65 78 74 20 3d 20 6e  Module.xNext = n
2cb00 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  ew UnsafeNativeM
2cb10 65 74 68 6f 64 73 2e 78 4e 65 78 74 28 78 4e 65  ethods.xNext(xNe
2cb20 78 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  xt);..          
2cb30 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2cb40 6c 65 2e 78 45 6f 66 20 3d 20 6e 65 77 20 55 6e  le.xEof = new Un
2cb50 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2cb60 73 2e 78 45 6f 66 28 78 45 6f 66 29 3b 0d 0a 0d  s.xEof(xEof);...
2cb70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cb80 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e 78 43   nativeModule.xC
2cb90 6f 6c 75 6d 6e 20 3d 20 6e 65 77 20 55 6e 73 61  olumn = new Unsa
2cba0 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
2cbb0 78 43 6f 6c 75 6d 6e 28 0d 0a 20 20 20 20 20 20  xColumn(..      
2cbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 43                xC
2cbd0 6f 6c 75 6d 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  olumn);....     
2cbe0 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69 76             nativ
2cbf0 65 4d 6f 64 75 6c 65 2e 78 52 6f 77 49 64 20 3d  eModule.xRowId =
2cc00 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76   new UnsafeNativ
2cc10 65 4d 65 74 68 6f 64 73 2e 78 52 6f 77 49 64 28  eMethods.xRowId(
2cc20 78 52 6f 77 49 64 29 3b 0d 0a 0d 0a 20 20 20 20  xRowId);....    
2cc30 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74 69              nati
2cc40 76 65 4d 6f 64 75 6c 65 2e 78 55 70 64 61 74 65  veModule.xUpdate
2cc50 20 3d 20 6e 65 77 20 55 6e 73 61 66 65 4e 61 74   = new UnsafeNat
2cc60 69 76 65 4d 65 74 68 6f 64 73 2e 78 55 70 64 61  iveMethods.xUpda
2cc70 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
2cc80 20 20 20 20 20 20 20 20 20 78 55 70 64 61 74 65           xUpdate
2cc90 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2cca0 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2ccb0 6c 65 2e 78 42 65 67 69 6e 20 3d 20 6e 65 77 20  le.xBegin = new 
2ccc0 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
2ccd0 6f 64 73 2e 78 42 65 67 69 6e 28 78 42 65 67 69  ods.xBegin(xBegi
2cce0 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n);..           
2ccf0 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c       nativeModul
2cd00 65 2e 78 53 79 6e 63 20 3d 20 6e 65 77 20 55 6e  e.xSync = new Un
2cd10 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2cd20 73 2e 78 53 79 6e 63 28 78 53 79 6e 63 29 3b 0d  s.xSync(xSync);.
2cd30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2cd40 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2cd50 78 43 6f 6d 6d 69 74 20 3d 20 6e 65 77 20 55 6e  xCommit = new Un
2cd60 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2cd70 73 2e 78 43 6f 6d 6d 69 74 28 0d 0a 20 20 20 20  s.xCommit(..    
2cd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cd90 78 43 6f 6d 6d 69 74 29 3b 0d 0a 0d 0a 20 20 20  xCommit);....   
2cda0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2cdb0 69 76 65 4d 6f 64 75 6c 65 2e 78 52 6f 6c 6c 62  iveModule.xRollb
2cdc0 61 63 6b 20 3d 20 6e 65 77 20 55 6e 73 61 66 65  ack = new Unsafe
2cdd0 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 52  NativeMethods.xR
2cde0 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20  ollback(..      
2cdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52                xR
2ce00 6f 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20  ollback);....   
2ce10 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 74               nat
2ce20 69 76 65 4d 6f 64 75 6c 65 2e 78 46 69 6e 64 46  iveModule.xFindF
2ce30 75 6e 63 74 69 6f 6e 20 3d 20 6e 65 77 20 55 6e  unction = new Un
2ce40 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2ce50 73 2e 78 46 69 6e 64 46 75 6e 63 74 69 6f 6e 28  s.xFindFunction(
2ce60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ce70 20 20 20 20 20 20 78 46 69 6e 64 46 75 6e 63 74        xFindFunct
2ce80 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ion);....       
2ce90 20 20 20 20 20 20 20 20 20 6e 61 74 69 76 65 4d           nativeM
2cea0 6f 64 75 6c 65 2e 78 52 65 6e 61 6d 65 20 3d 20  odule.xRename = 
2ceb0 6e 65 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65  new UnsafeNative
2cec0 4d 65 74 68 6f 64 73 2e 78 52 65 6e 61 6d 65 28  Methods.xRename(
2ced0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cee0 20 20 20 20 20 20 78 52 65 6e 61 6d 65 29 3b 0d        xRename);.
2cef0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2cf00 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2cf10 78 53 61 76 65 70 6f 69 6e 74 20 3d 20 6e 65 77  xSavepoint = new
2cf20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
2cf30 68 6f 64 73 2e 78 53 61 76 65 70 6f 69 6e 74 28  hods.xSavepoint(
2cf40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cf50 20 20 20 20 20 20 78 53 61 76 65 70 6f 69 6e 74        xSavepoint
2cf60 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2cf70 20 20 20 20 20 20 6e 61 74 69 76 65 4d 6f 64 75        nativeModu
2cf80 6c 65 2e 78 52 65 6c 65 61 73 65 20 3d 20 6e 65  le.xRelease = ne
2cf90 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2cfa0 74 68 6f 64 73 2e 78 52 65 6c 65 61 73 65 28 0d  thods.xRelease(.
2cfb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cfc0 20 20 20 20 20 78 52 65 6c 65 61 73 65 29 3b 0d       xRelease);.
2cfd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2cfe0 20 20 20 6e 61 74 69 76 65 4d 6f 64 75 6c 65 2e     nativeModule.
2cff0 78 52 6f 6c 6c 62 61 63 6b 54 6f 20 3d 20 6e 65  xRollbackTo = ne
2d000 77 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  w UnsafeNativeMe
2d010 74 68 6f 64 73 2e 78 52 6f 6c 6c 62 61 63 6b 54  thods.xRollbackT
2d020 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o(..            
2d030 20 20 20 20 20 20 20 20 78 52 6f 6c 6c 62 61 63          xRollbac
2d040 6b 54 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  kTo);..         
2d050 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2d060 20 20 20 20 72 65 74 75 72 6e 20 6e 61 74 69 76      return nativ
2d070 65 4d 6f 64 75 6c 65 3b 0d 0a 20 20 20 20 20 20  eModule;..      
2d080 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
2d090 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2d0a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2d0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2d0f0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
2d100 6f 74 65 63 74 65 64 20 4d 65 6d 62 65 72 73 0d  otected Members.
2d110 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
2d120 20 4d 6f 64 75 6c 65 20 48 65 6c 70 65 72 20 4d   Module Helper M
2d130 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
2d140 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
2d150 6c 20 49 53 51 4c 69 74 65 4e 61 74 69 76 65 4d  l ISQLiteNativeM
2d160 6f 64 75 6c 65 20 47 65 74 4e 61 74 69 76 65 4d  odule GetNativeM
2d170 6f 64 75 6c 65 49 6d 70 6c 28 29 0d 0a 20 20 20  oduleImpl()..   
2d180 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d190 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
2d1a0 20 2f 2a 20 4e 4f 54 45 3a 20 55 73 65 20 62 75   /* NOTE: Use bu
2d1b0 69 6c 74 2d 69 6e 20 64 65 66 61 75 6c 74 73 2e  ilt-in defaults.
2d1c0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a   */..        }..
2d1d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2d1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d220 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f  /....        pro
2d230 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 49  tected virtual I
2d240 53 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75  SQLiteNativeModu
2d250 6c 65 20 43 72 65 61 74 65 4e 61 74 69 76 65 4d  le CreateNativeM
2d260 6f 64 75 6c 65 49 6d 70 6c 28 29 0d 0a 20 20 20  oduleImpl()..   
2d270 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d280 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53      return new S
2d290 51 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c  QLiteNativeModul
2d2a0 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  e(this);..      
2d2b0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
2d2c0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2d2d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2d2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2d320 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61        #region Na
2d330 74 69 76 65 20 54 61 62 6c 65 20 48 65 6c 70 65  tive Table Helpe
2d340 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
2d350 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
2d360 74 75 61 6c 20 49 6e 74 50 74 72 20 41 6c 6c 6f  tual IntPtr Allo
2d370 63 61 74 65 54 61 62 6c 65 28 29 0d 0a 20 20 20  cateTable()..   
2d380 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2d390 20 20 20 20 69 6e 74 20 73 69 7a 65 20 3d 20 4d      int size = M
2d3a0 61 72 73 68 61 6c 2e 53 69 7a 65 4f 66 28 74 79  arshal.SizeOf(ty
2d3b0 70 65 6f 66 28 0d 0a 20 20 20 20 20 20 20 20 20  peof(..         
2d3c0 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74         UnsafeNat
2d3d0 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
2d3e0 65 33 5f 76 74 61 62 29 29 3b 0d 0a 0d 0a 20 20  e3_vtab));....  
2d3f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2d400 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c   SQLiteMemory.Al
2d410 6c 6f 63 61 74 65 28 73 69 7a 65 29 3b 0d 0a 20  locate(size);.. 
2d420 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2d430 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2d440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2d480 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65 64         protected
2d490 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 5a 65   virtual void Ze
2d4a0 72 6f 54 61 62 6c 65 28 0d 0a 20 20 20 20 20 20  roTable(..      
2d4b0 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74        IntPtr pVt
2d4c0 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ab..            
2d4d0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2d4e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56            if (pV
2d4f0 74 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  tab == IntPtr.Ze
2d500 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
2d510 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
2d520 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
2d530 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 0d 0a 20  offset = 0;.... 
2d540 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2d550 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
2d560 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66 66 73  tPtr(pVtab, offs
2d570 65 74 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29  et, IntPtr.Zero)
2d580 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2d590 20 6f 66 66 73 65 74 20 2b 3d 20 49 6e 74 50 74   offset += IntPt
2d5a0 72 2e 53 69 7a 65 3b 0d 0a 0d 0a 20 20 20 20 20  r.Size;....     
2d5b0 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72         SQLiteMar
2d5c0 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 33 32 28  shal.WriteInt32(
2d5d0 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c 20 30  pVtab, offset, 0
2d5e0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2d5f0 20 20 6f 66 66 73 65 74 20 2b 3d 20 73 69 7a 65    offset += size
2d600 6f 66 28 69 6e 74 29 3b 0d 0a 0d 0a 20 20 20 20  of(int);....    
2d610 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61          SQLiteMa
2d620 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74  rshal.WriteIntPt
2d630 72 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c  r(pVtab, offset,
2d640 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
2d650 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2d660 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2d670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2d6b0 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74 65          protecte
2d6c0 64 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 46  d virtual void F
2d6d0 72 65 65 54 61 62 6c 65 28 0d 0a 20 20 20 20 20  reeTable(..     
2d6e0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
2d6f0 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tab..           
2d700 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
2d710 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54 61             SetTa
2d720 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20  bleError(pVtab, 
2d730 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20  null);..        
2d740 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79      SQLiteMemory
2d750 2e 46 72 65 65 28 70 56 74 61 62 29 3b 0d 0a 20  .Free(pVtab);.. 
2d760 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2d770 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2d780 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2d790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2d7d0 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2d7e0 6f 6e 20 4e 61 74 69 76 65 20 43 75 72 73 6f 72  on Native Cursor
2d7f0 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
2d800 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
2d810 65 64 20 76 69 72 74 75 61 6c 20 49 6e 74 50 74  ed virtual IntPt
2d820 72 20 41 6c 6c 6f 63 61 74 65 43 75 72 73 6f 72  r AllocateCursor
2d830 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
2d840 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 73             int s
2d850 69 7a 65 20 3d 20 4d 61 72 73 68 61 6c 2e 53 69  ize = Marshal.Si
2d860 7a 65 4f 66 28 74 79 70 65 6f 66 28 0d 0a 20 20  zeOf(typeof(..  
2d870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55 6e                Un
2d880 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
2d890 73 2e 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 63  s.sqlite3_vtab_c
2d8a0 75 72 73 6f 72 29 29 3b 0d 0a 0d 0a 20 20 20 20  ursor));....    
2d8b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
2d8c0 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 41 6c 6c 6f  QLiteMemory.Allo
2d8d0 63 61 74 65 28 73 69 7a 65 29 3b 0d 0a 20 20 20  cate(size);..   
2d8e0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2d8f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2d900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d930 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2d940 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76       protected v
2d950 69 72 74 75 61 6c 20 76 6f 69 64 20 46 72 65 65  irtual void Free
2d960 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20 20 20  Cursor(..       
2d970 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
2d980 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sor..           
2d990 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
2d9a0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2d9b0 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 43 75  eMemory.Free(pCu
2d9c0 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rsor);..        
2d9d0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
2d9e0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
2d9f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2da00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2da30 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2da40 20 20 20 20 23 72 65 67 69 6f 6e 20 53 74 61 74      #region Stat
2da50 69 63 20 54 61 62 6c 65 20 4c 6f 6f 6b 75 70 20  ic Table Lookup 
2da60 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
2da70 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
2da80 49 6e 74 50 74 72 20 54 61 62 6c 65 46 72 6f 6d  IntPtr TableFrom
2da90 43 75 72 73 6f 72 28 0d 0a 20 20 20 20 20 20 20  Cursor(..       
2daa0 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c       SQLiteModul
2dab0 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20 20  e module,..     
2dac0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
2dad0 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  ursor..         
2dae0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
2daf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2db00 28 70 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50  (pCursor == IntP
2db10 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2db20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2db30 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d   IntPtr.Zero;...
2db40 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2db50 75 72 6e 20 4d 61 72 73 68 61 6c 2e 52 65 61 64  urn Marshal.Read
2db60 49 6e 74 50 74 72 28 70 43 75 72 73 6f 72 29 3b  IntPtr(pCursor);
2db70 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2db80 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2db90 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2dba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dbb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dbc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dbd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dbe0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2dbf0 65 67 69 6f 6e 20 54 61 62 6c 65 20 4c 6f 6f 6b  egion Table Look
2dc00 75 70 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  up Methods..    
2dc10 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69      protected vi
2dc20 72 74 75 61 6c 20 49 6e 74 50 74 72 20 54 61 62  rtual IntPtr Tab
2dc30 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28 0d 0a 20  leFromCursor(.. 
2dc40 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2dc50 72 20 70 43 75 72 73 6f 72 0d 0a 20 20 20 20 20  r pCursor..     
2dc60 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2dc70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2dc80 20 72 65 74 75 72 6e 20 54 61 62 6c 65 46 72 6f   return TableFro
2dc90 6d 43 75 72 73 6f 72 28 74 68 69 73 2c 20 70 43  mCursor(this, pC
2dca0 75 72 73 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20  ursor);..       
2dcb0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
2dcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd00 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2dd10 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
2dd20 61 6c 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c  al SQLiteVirtual
2dd30 54 61 62 6c 65 20 54 61 62 6c 65 46 72 6f 6d 49  Table TableFromI
2dd40 6e 74 50 74 72 28 0d 0a 20 20 20 20 20 20 20 20  ntPtr(..        
2dd50 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
2dd60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
2dd70 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2dd80 20 20 20 20 20 20 20 20 69 66 20 28 70 56 74 61          if (pVta
2dd90 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  b == IntPtr.Zero
2dda0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2ddb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ddc0 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28    SetTableError(
2ddd0 70 56 74 61 62 2c 20 22 69 6e 76 61 6c 69 64 20  pVtab, "invalid 
2dde0 6e 61 74 69 76 65 20 74 61 62 6c 65 22 29 3b 0d  native table");.
2ddf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2de00 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
2de10 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2de20 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
2de30 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
2de40 61 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  able;....       
2de50 20 20 20 20 20 69 66 20 28 28 74 61 62 6c 65 73       if ((tables
2de60 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
2de70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61                ta
2de80 62 6c 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65  bles.TryGetValue
2de90 28 70 56 74 61 62 2c 20 6f 75 74 20 74 61 62 6c  (pVtab, out tabl
2dea0 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
2deb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2dec0 20 20 20 20 72 65 74 75 72 6e 20 74 61 62 6c 65      return table
2ded0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2dee0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2def0 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 70 56  SetTableError(pV
2df00 74 61 62 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  tab, String.Form
2df10 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
2df20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
2df30 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c  .CurrentCulture,
2df40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2df50 20 20 22 6d 61 6e 61 67 65 64 20 74 61 62 6c 65    "managed table
2df60 20 66 6f 72 20 7b 30 7d 20 6e 6f 74 20 66 6f 75   for {0} not fou
2df70 6e 64 22 2c 20 70 56 74 61 62 29 29 3b 0d 0a 0d  nd", pVtab));...
2df80 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2df90 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
2dfa0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2dfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dfe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dff0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2e000 20 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72     protected vir
2e010 74 75 61 6c 20 49 6e 74 50 74 72 20 54 61 62 6c  tual IntPtr Tabl
2e020 65 54 6f 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  eToIntPtr(..    
2e030 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
2e040 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
2e050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
2e060 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2e070 20 20 20 20 20 20 20 20 69 66 20 28 28 74 61 62          if ((tab
2e080 6c 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28  le == null) || (
2e090 74 61 62 6c 65 73 20 3d 3d 20 6e 75 6c 6c 29 29  tables == null))
2e0a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e0b0 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74 72 2e    return IntPtr.
2e0c0 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
2e0d0 20 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61       IntPtr pVta
2e0e0 62 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  b = IntPtr.Zero;
2e0f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f  ..            bo
2e100 6f 6c 20 73 75 63 63 65 73 73 20 3d 20 66 61 6c  ol success = fal
2e110 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
2e120 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
2e130 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2e140 20 20 20 20 20 20 20 70 56 74 61 62 20 3d 20 41         pVtab = A
2e150 6c 6c 6f 63 61 74 65 54 61 62 6c 65 28 29 3b 0d  llocateTable();.
2e160 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2e170 20 20 20 69 66 20 28 70 56 74 61 62 20 21 3d 20     if (pVtab != 
2e180 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
2e190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2e1a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e1b0 20 20 20 20 20 5a 65 72 6f 54 61 62 6c 65 28 70       ZeroTable(p
2e1c0 56 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20  Vtab);..        
2e1d0 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62 6c              tabl
2e1e0 65 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65 20 3d  e.NativeHandle =
2e1f0 20 70 56 74 61 62 3b 0d 0a 20 20 20 20 20 20 20   pVtab;..       
2e200 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62               tab
2e210 6c 65 73 2e 41 64 64 28 70 56 74 61 62 2c 20 74  les.Add(pVtab, t
2e220 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  able);..        
2e230 20 20 20 20 20 20 20 20 20 20 20 20 73 75 63 63              succ
2e240 65 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  ess = true;..   
2e250 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2e260 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2e270 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
2e280 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
2e290 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2e2a0 20 20 20 69 66 20 28 21 73 75 63 63 65 73 73 20     if (!success 
2e2b0 26 26 20 28 70 56 74 61 62 20 21 3d 20 49 6e 74  && (pVtab != Int
2e2c0 50 74 72 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20  Ptr.Zero))..    
2e2d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2e2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e2f0 20 20 20 46 72 65 65 54 61 62 6c 65 28 70 56 74     FreeTable(pVt
2e300 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ab);..          
2e310 20 20 20 20 20 20 20 20 20 20 70 56 74 61 62 20            pVtab 
2e320 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
2e330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e340 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2e350 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e360 72 65 74 75 72 6e 20 70 56 74 61 62 3b 0d 0a 20  return pVtab;.. 
2e370 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2e380 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2e390 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2e3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2e3e0 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
2e3f0 6f 6e 20 43 75 72 73 6f 72 20 4c 6f 6f 6b 75 70  on Cursor Lookup
2e400 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20   Methods..      
2e410 20 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74    protected virt
2e420 75 61 6c 20 53 51 4c 69 74 65 56 69 72 74 75 61  ual SQLiteVirtua
2e430 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 43 75 72  lTableCursor Cur
2e440 73 6f 72 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a  sorFromIntPtr(..
2e450 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2e460 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
2e470 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
2e480 75 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  ursor..         
2e490 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
2e4a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2e4b0 28 70 43 75 72 73 6f 72 20 3d 3d 20 49 6e 74 50  (pCursor == IntP
2e4c0 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2e4d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2e4e0 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c           SetTabl
2e4f0 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20 22 69  eError(pVtab, "i
2e500 6e 76 61 6c 69 64 20 6e 61 74 69 76 65 20 63 75  nvalid native cu
2e510 72 73 6f 72 22 29 3b 0d 0a 20 20 20 20 20 20 20  rsor");..       
2e520 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2e530 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
2e540 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2e550 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
2e560 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72  lTableCursor cur
2e570 73 6f 72 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  sor;....        
2e580 20 20 20 20 69 66 20 28 28 63 75 72 73 6f 72 73      if ((cursors
2e590 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20   != null) &&..  
2e5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75                cu
2e5b0 72 73 6f 72 73 2e 54 72 79 47 65 74 56 61 6c 75  rsors.TryGetValu
2e5c0 65 28 70 43 75 72 73 6f 72 2c 20 6f 75 74 20 63  e(pCursor, out c
2e5d0 75 72 73 6f 72 29 29 0d 0a 20 20 20 20 20 20 20  ursor))..       
2e5e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2e5f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
2e600 75 72 73 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20  ursor;..        
2e610 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2e620 20 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72       SetTableErr
2e630 6f 72 28 70 56 74 61 62 2c 20 53 74 72 69 6e 67  or(pVtab, String
2e640 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
2e650 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
2e660 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
2e670 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
2e680 20 20 20 20 20 20 20 22 6d 61 6e 61 67 65 64 20         "managed 
2e690 63 75 72 73 6f 72 20 66 6f 72 20 7b 30 7d 20 6e  cursor for {0} n
2e6a0 6f 74 20 66 6f 75 6e 64 22 2c 20 70 43 75 72 73  ot found", pCurs
2e6b0 6f 72 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  or));....       
2e6c0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
2e6d0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
2e6e0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2e6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2e730 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65  ...        prote
2e740 63 74 65 64 20 76 69 72 74 75 61 6c 20 49 6e 74  cted virtual Int
2e750 50 74 72 20 43 75 72 73 6f 72 54 6f 49 6e 74 50  Ptr CursorToIntP
2e760 74 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tr(..           
2e770 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
2e780 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72  bleCursor cursor
2e790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
2e7a0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
2e7b0 20 20 20 20 20 20 20 20 69 66 20 28 28 63 75 72          if ((cur
2e7c0 73 6f 72 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20  sor == null) || 
2e7d0 28 63 75 72 73 6f 72 73 20 3d 3d 20 6e 75 6c 6c  (cursors == null
2e7e0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
2e7f0 20 20 20 20 72 65 74 75 72 6e 20 49 6e 74 50 74      return IntPt
2e800 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20  r.Zero;....     
2e810 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
2e820 75 72 73 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a  ursor = IntPtr.Z
2e830 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ero;..          
2e840 20 20 62 6f 6f 6c 20 73 75 63 63 65 73 73 20 3d    bool success =
2e850 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
2e860 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20         try..    
2e870 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2e880 20 20 20 20 20 20 20 20 20 20 20 70 43 75 72 73             pCurs
2e890 6f 72 20 3d 20 41 6c 6c 6f 63 61 74 65 43 75 72  or = AllocateCur
2e8a0 73 6f 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sor();....      
2e8b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 43            if (pC
2e8c0 75 72 73 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e  ursor != IntPtr.
2e8d0 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
2e8e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2e8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 75                cu
2e900 72 73 6f 72 2e 4e 61 74 69 76 65 48 61 6e 64 6c  rsor.NativeHandl
2e910 65 20 3d 20 70 43 75 72 73 6f 72 3b 0d 0a 20 20  e = pCursor;..  
2e920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e930 20 20 63 75 72 73 6f 72 73 2e 41 64 64 28 70 43    cursors.Add(pC
2e940 75 72 73 6f 72 2c 20 63 75 72 73 6f 72 29 3b 0d  ursor, cursor);.
2e950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e960 20 20 20 20 20 73 75 63 63 65 73 73 20 3d 20 74       success = t
2e970 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
2e980 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2e990 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2e9a0 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
2e9b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2e9c0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2e9d0 21 73 75 63 63 65 73 73 20 26 26 20 28 70 43 75  !success && (pCu
2e9e0 72 73 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a  rsor != IntPtr.Z
2e9f0 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ero))..         
2ea00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2ea10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 72                Fr
2ea20 65 65 43 75 72 73 6f 72 28 70 43 75 72 73 6f 72  eeCursor(pCursor
2ea30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2ea40 20 20 20 20 20 20 20 20 70 43 75 72 73 6f 72 20          pCursor 
2ea50 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
2ea60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ea70 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
2ea80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ea90 72 65 74 75 72 6e 20 70 43 75 72 73 6f 72 3b 0d  return pCursor;.
2eaa0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
2eab0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2eac0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2ead0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eaf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb10 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
2eb20 67 69 6f 6e 20 54 61 62 6c 65 20 44 65 63 6c 61  gion Table Decla
2eb30 72 61 74 69 6f 6e 20 48 65 6c 70 65 72 20 4d 65  ration Helper Me
2eb40 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 70  thods..        p
2eb50 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
2eb60 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
2eb70 20 44 65 63 6c 61 72 65 54 61 62 6c 65 28 0d 0a   DeclareTable(..
2eb80 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
2eb90 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  teConnection con
2eba0 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20  nection,..      
2ebb0 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 71 6c        string sql
2ebc0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
2ebd0 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d  ef string error.
2ebe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
2ebf0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ec00 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65         if (conne
2ec10 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ction == null)..
2ec20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2ec30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
2ec40 72 72 6f 72 20 3d 20 22 69 6e 76 61 6c 69 64 20  rror = "invalid 
2ec50 63 6f 6e 6e 65 63 74 69 6f 6e 22 3b 0d 0a 20 20  connection";..  
2ec60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2ec70 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
2ec80 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
2ec90 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2eca0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
2ecb0 42 61 73 65 20 73 71 6c 69 74 65 42 61 73 65 20  Base sqliteBase 
2ecc0 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 73 71  = connection._sq
2ecd0 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
2ece0 20 20 69 66 20 28 73 71 6c 69 74 65 42 61 73 65    if (sqliteBase
2ecf0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
2ed00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2ed10 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
2ed20 3d 20 22 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61  = "connection ha
2ed30 73 20 69 6e 76 61 6c 69 64 20 68 61 6e 64 6c 65  s invalid handle
2ed40 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
2ed50 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
2ed60 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72  eErrorCode.Error
2ed70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2ed80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ed90 72 65 74 75 72 6e 20 73 71 6c 69 74 65 42 61 73  return sqliteBas
2eda0 65 2e 44 65 63 6c 61 72 65 56 69 72 74 75 61 6c  e.DeclareVirtual
2edb0 54 61 62 6c 65 28 74 68 69 73 2c 20 73 71 6c 2c  Table(this, sql,
2edc0 20 72 65 66 20 65 72 72 6f 72 29 3b 0d 0a 20 20   ref error);..  
2edd0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2ede0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2edf0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2ee00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ee30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2ee40 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
2ee50 6e 20 45 72 72 6f 72 20 48 61 6e 64 6c 69 6e 67  n Error Handling
2ee60 20 48 65 6c 70 65 72 20 4d 65 74 68 6f 64 73 0d   Helper Methods.
2ee70 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
2ee80 65 64 20 76 69 72 74 75 61 6c 20 62 6f 6f 6c 20  ed virtual bool 
2ee90 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 0d 0a  SetTableError(..
2eea0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2eeb0 74 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20  tr pVtab,..     
2eec0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 72         string er
2eed0 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ror..           
2eee0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
2eef0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2ef00 6e 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28  n SetTableError(
2ef10 74 68 69 73 2c 20 70 56 74 61 62 2c 20 4c 6f 67  this, pVtab, Log
2ef20 45 72 72 6f 72 73 2c 20 65 72 72 6f 72 29 3b 0d  Errors, error);.
2ef30 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
2ef40 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2ef50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2ef90 0a 20 20 20 20 20 20 20 20 70 72 6f 74 65 63 74  .        protect
2efa0 65 64 20 76 69 72 74 75 61 6c 20 62 6f 6f 6c 20  ed virtual bool 
2efb0 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 0d 0a  SetTableError(..
2efc0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
2efd0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
2efe0 61 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  able,..         
2eff0 20 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d     string error.
2f000 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
2f010 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2f020 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 65         return Se
2f030 74 54 61 62 6c 65 45 72 72 6f 72 28 74 68 69 73  tTableError(this
2f040 2c 20 74 61 62 6c 65 2c 20 4c 6f 67 45 72 72 6f  , table, LogErro
2f050 72 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20  rs, error);..   
2f060 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2f070 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2f080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2f0c0 20 20 20 20 20 70 72 6f 74 65 63 74 65 64 20 76       protected v
2f0d0 69 72 74 75 61 6c 20 62 6f 6f 6c 20 53 65 74 43  irtual bool SetC
2f0e0 75 72 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20  ursorError(..   
2f0f0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
2f100 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f  irtualTableCurso
2f110 72 20 63 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20  r cursor,..     
2f120 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 72         string er
2f130 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ror..           
2f140 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
2f150 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2f160 6e 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f 72  n SetCursorError
2f170 28 74 68 69 73 2c 20 63 75 72 73 6f 72 2c 20 4c  (this, cursor, L
2f180 6f 67 45 72 72 6f 72 73 2c 20 65 72 72 6f 72 29  ogErrors, error)
2f190 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
2f1a0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2f1b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
2f1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f200 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
2f210 72 65 67 69 6f 6e 20 53 74 61 74 69 63 20 45 72  region Static Er
2f220 72 6f 72 20 48 61 6e 64 6c 69 6e 67 20 48 65 6c  ror Handling Hel
2f230 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
2f240 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
2f250 74 69 63 20 62 6f 6f 6c 20 53 65 74 54 61 62 6c  tic bool SetTabl
2f260 65 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20 20  eError(..       
2f270 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75 6c       SQLiteModul
2f280 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20 20  e module,..     
2f290 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
2f2a0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
2f2b0 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72 6f 72 73    bool logErrors
2f2c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ,..            s
2f2d0 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20  tring error..   
2f2e0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2f2f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2f300 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
2f310 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2f320 20 20 20 20 20 20 20 69 66 20 28 6c 6f 67 45 72         if (logEr
2f330 72 6f 72 73 29 0d 0a 20 20 20 20 20 20 20 20 20  rors)..         
2f340 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2f350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
2f360 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61  LiteLog.LogMessa
2f370 67 65 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ge(SQLiteErrorCo
2f380 64 65 2e 45 72 72 6f 72 2c 0d 0a 20 20 20 20 20  de.Error,..     
2f390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f3a0 20 20 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74     String.Format
2f3b0 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72  (CultureInfo.Cur
2f3c0 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
2f3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f3e0 20 20 20 20 20 20 22 56 69 72 74 75 61 6c 20 74        "Virtual t
2f3f0 61 62 6c 65 20 65 72 72 6f 72 3a 20 7b 30 7d 22  able error: {0}"
2f400 2c 20 65 72 72 6f 72 29 29 3b 20 2f 2a 20 74 68  , error)); /* th
2f410 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
2f420 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2f430 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2f440 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20        catch..   
2f450 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2f460 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
2f470 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
2f480 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2f490 20 20 20 20 20 20 20 20 20 69 66 20 28 70 56 74           if (pVt
2f4a0 61 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72  ab == IntPtr.Zer
2f4b0 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o)..            
2f4c0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
2f4d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2f4e0 20 69 6e 74 20 6f 66 66 73 65 74 20 3d 20 49 6e   int offset = In
2f4f0 74 50 74 72 2e 53 69 7a 65 20 2b 20 73 69 7a 65  tPtr.Size + size
2f500 6f 66 28 69 6e 74 29 3b 0d 0a 20 20 20 20 20 20  of(int);..      
2f510 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 45 72        IntPtr pEr
2f520 72 6f 72 20 3d 20 53 51 4c 69 74 65 4d 61 72 73  ror = SQLiteMars
2f530 68 61 6c 2e 52 65 61 64 49 6e 74 50 74 72 28 70  hal.ReadIntPtr(p
2f540 56 74 61 62 2c 20 6f 66 66 73 65 74 29 3b 0d 0a  Vtab, offset);..
2f550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
2f560 20 28 70 45 72 72 6f 72 20 21 3d 20 49 6e 74 50   (pError != IntP
2f570 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20  tr.Zero)..      
2f580 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2f590 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
2f5a0 65 6d 6f 72 79 2e 46 72 65 65 28 70 45 72 72 6f  emory.Free(pErro
2f5b0 72 29 3b 20 70 45 72 72 6f 72 20 3d 20 49 6e 74  r); pError = Int
2f5c0 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
2f5d0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2f5e0 65 4d 61 72 73 68 61 6c 2e 57 72 69 74 65 49 6e  eMarshal.WriteIn
2f5f0 74 50 74 72 28 70 56 74 61 62 2c 20 6f 66 66 73  tPtr(pVtab, offs
2f600 65 74 2c 20 70 45 72 72 6f 72 29 3b 0d 0a 20 20  et, pError);..  
2f610 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2f620 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
2f630 72 72 6f 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  rror == null).. 
2f640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2f650 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20  eturn true;.... 
2f660 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
2f670 73 75 63 63 65 73 73 20 3d 20 66 61 6c 73 65 3b  success = false;
2f680 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f690 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
2f6a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2f6b0 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c      pError = SQL
2f6c0 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e  iteString.Utf8In
2f6d0 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 65  tPtrFromString(e
2f6e0 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  rror);..        
2f6f0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 61          SQLiteMa
2f700 72 73 68 61 6c 2e 57 72 69 74 65 49 6e 74 50 74  rshal.WriteIntPt
2f710 72 28 70 56 74 61 62 2c 20 6f 66 66 73 65 74 2c  r(pVtab, offset,
2f720 20 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20   pError);..     
2f730 20 20 20 20 20 20 20 20 20 20 20 73 75 63 63 65             succe
2f740 73 73 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ss = true;..    
2f750 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2f760 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
2f770 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2f780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2f790 66 20 28 21 73 75 63 63 65 73 73 20 26 26 20 28  f (!success && (
2f7a0 70 45 72 72 6f 72 20 21 3d 20 49 6e 74 50 74 72  pError != IntPtr
2f7b0 2e 5a 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20  .Zero))..       
2f7c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2f7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f7e0 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65  SQLiteMemory.Fre
2f7f0 65 28 70 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20  e(pError);..    
2f800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f810 70 45 72 72 6f 72 20 3d 20 49 6e 74 50 74 72 2e  pError = IntPtr.
2f820 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20  Zero;..         
2f830 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2f840 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2f850 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 75         return su
2f860 63 63 65 73 73 3b 0d 0a 20 20 20 20 20 20 20 20  ccess;..        
2f870 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
2f880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2f8d0 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
2f8e0 6f 6f 6c 20 53 65 74 54 61 62 6c 65 45 72 72 6f  ool SetTableErro
2f8f0 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
2f900 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64  SQLiteModule mod
2f910 75 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ule,..          
2f920 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
2f930 61 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20 20  able table,..   
2f940 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f           bool lo
2f950 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20  gErrors,..      
2f960 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72        string err
2f970 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
2f980 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2f990 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61            if (ta
2f9a0 62 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ble == null)..  
2f9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2f9c0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
2f9d0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2f9e0 72 20 70 56 74 61 62 20 3d 20 74 61 62 6c 65 2e  r pVtab = table.
2f9f0 4e 61 74 69 76 65 48 61 6e 64 6c 65 3b 0d 0a 0d  NativeHandle;...
2fa00 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
2fa10 28 70 56 74 61 62 20 3d 3d 20 49 6e 74 50 74 72  (pVtab == IntPtr
2fa20 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
2fa30 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
2fa40 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
2fa50 20 20 20 20 20 72 65 74 75 72 6e 20 53 65 74 54       return SetT
2fa60 61 62 6c 65 45 72 72 6f 72 28 6d 6f 64 75 6c 65  ableError(module
2fa70 2c 20 70 56 74 61 62 2c 20 6c 6f 67 45 72 72 6f  , pVtab, logErro
2fa80 72 73 2c 20 65 72 72 6f 72 29 3b 0d 0a 20 20 20  rs, error);..   
2fa90 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2faa0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2fab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2faf0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
2fb00 74 69 63 20 62 6f 6f 6c 20 53 65 74 43 75 72 73  tic bool SetCurs
2fb10 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20 20 20 20  orError(..      
2fb20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 6f 64 75        SQLiteModu
2fb30 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20 20 20 20  le module,..    
2fb40 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
2fb50 43 75 72 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20  Cursor,..       
2fb60 20 20 20 20 20 62 6f 6f 6c 20 6c 6f 67 45 72 72       bool logErr
2fb70 6f 72 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ors,..          
2fb80 20 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a    string error..
2fb90 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2fba0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2fbb0 20 20 20 20 20 20 69 66 20 28 70 43 75 72 73 6f        if (pCurso
2fbc0 72 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  r == IntPtr.Zero
2fbd0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2fbe0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
2fbf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2fc00 49 6e 74 50 74 72 20 70 56 74 61 62 20 3d 20 54  IntPtr pVtab = T
2fc10 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28 6d  ableFromCursor(m
2fc20 6f 64 75 6c 65 2c 20 70 43 75 72 73 6f 72 29 3b  odule, pCursor);
2fc30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2fc40 69 66 20 28 70 56 74 61 62 20 3d 3d 20 49 6e 74  if (pVtab == Int
2fc50 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
2fc60 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2fc70 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
2fc80 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
2fc90 65 74 54 61 62 6c 65 45 72 72 6f 72 28 6d 6f 64  etTableError(mod
2fca0 75 6c 65 2c 20 70 56 74 61 62 2c 20 6c 6f 67 45  ule, pVtab, logE
2fcb0 72 72 6f 72 73 2c 20 65 72 72 6f 72 29 3b 0d 0a  rrors, error);..
2fcc0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2fcd0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2fce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fcf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2fd20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
2fd30 73 74 61 74 69 63 20 62 6f 6f 6c 20 53 65 74 43  static bool SetC
2fd40 75 72 73 6f 72 45 72 72 6f 72 28 0d 0a 20 20 20  ursorError(..   
2fd50 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d           SQLiteM
2fd60 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 0d 0a 20  odule module,.. 
2fd70 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2fd80 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
2fd90 73 6f 72 20 63 75 72 73 6f 72 2c 0d 0a 20 20 20  sor cursor,..   
2fda0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6c 6f           bool lo
2fdb0 67 45 72 72 6f 72 73 2c 0d 0a 20 20 20 20 20 20  gErrors,..      
2fdc0 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 72 72        string err
2fdd0 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
2fde0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2fdf0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75            if (cu
2fe00 72 73 6f 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  rsor == null).. 
2fe10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2fe20 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
2fe30 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
2fe40 74 72 20 70 43 75 72 73 6f 72 20 3d 20 63 75 72  tr pCursor = cur
2fe50 73 6f 72 2e 4e 61 74 69 76 65 48 61 6e 64 6c 65  sor.NativeHandle
2fe60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2fe70 20 69 66 20 28 70 43 75 72 73 6f 72 20 3d 3d 20   if (pCursor == 
2fe80 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
2fe90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2fea0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
2feb0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2fec0 6e 20 53 65 74 43 75 72 73 6f 72 45 72 72 6f 72  n SetCursorError
2fed0 28 6d 6f 64 75 6c 65 2c 20 70 43 75 72 73 6f 72  (module, pCursor
2fee0 2c 20 6c 6f 67 45 72 72 6f 72 73 2c 20 65 72 72  , logErrors, err
2fef0 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  or);..        }.
2ff00 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
2ff10 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
2ff20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff60 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2ff70 20 20 23 72 65 67 69 6f 6e 20 49 6e 64 65 78 20    #region Index 
2ff80 48 61 6e 64 6c 69 6e 67 20 48 65 6c 70 65 72 20  Handling Helper 
2ff90 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
2ffa0 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
2ffb0 61 6c 20 62 6f 6f 6c 20 53 65 74 45 73 74 69 6d  al bool SetEstim
2ffc0 61 74 65 64 43 6f 73 74 28 0d 0a 20 20 20 20 20  atedCost(..     
2ffd0 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
2ffe0 65 78 20 69 6e 64 65 78 2c 0d 0a 20 20 20 20 20  ex index,..     
2fff0 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 65 73         double es
30000 74 69 6d 61 74 65 64 43 6f 73 74 0d 0a 20 20 20  timatedCost..   
30010 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
30020 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30030 20 20 20 69 66 20 28 28 69 6e 64 65 78 20 3d 3d     if ((index ==
30040 20 6e 75 6c 6c 29 20 7c 7c 20 28 69 6e 64 65 78   null) || (index
30050 2e 4f 75 74 70 75 74 73 20 3d 3d 20 6e 75 6c 6c  .Outputs == null
30060 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
30070 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
30080 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
30090 20 69 6e 64 65 78 2e 4f 75 74 70 75 74 73 2e 45   index.Outputs.E
300a0 73 74 69 6d 61 74 65 64 43 6f 73 74 20 3d 20 65  stimatedCost = e
300b0 73 74 69 6d 61 74 65 64 43 6f 73 74 3b 0d 0a 20  stimatedCost;.. 
300c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
300d0 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
300e0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
300f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30130 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
30140 20 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75   protected virtu
30150 61 6c 20 62 6f 6f 6c 20 53 65 74 45 73 74 69 6d  al bool SetEstim
30160 61 74 65 64 43 6f 73 74 28 0d 0a 20 20 20 20 20  atedCost(..     
30170 20 20 20 20 20 20 20 53 51 4c 69 74 65 49 6e 64         SQLiteInd
30180 65 78 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20  ex index..      
30190 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
301a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
301b0 72 65 74 75 72 6e 20 53 65 74 45 73 74 69 6d 61  return SetEstima
301c0 74 65 64 43 6f 73 74 28 69 6e 64 65 78 2c 20 44  tedCost(index, D
301d0 65 66 61 75 6c 74 43 6f 73 74 29 3b 0d 0a 20 20  efaultCost);..  
301e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
301f0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
30200 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
30210 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
30220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30260 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
30270 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f  egion Public Pro
30280 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20  perties..       
30290 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6c 6f   private bool lo
302a0 67 45 72 72 6f 72 73 3b 0d 0a 20 20 20 20 20 20  gErrors;..      
302b0 20 20 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c    public virtual
302c0 20 62 6f 6f 6c 20 4c 6f 67 45 72 72 6f 72 73 0d   bool LogErrors.
302d0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
302e0 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68          get { Ch
302f0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72  eckDisposed(); r
30300 65 74 75 72 6e 20 6c 6f 67 45 72 72 6f 72 73 3b  eturn logErrors;
30310 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
30320 73 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f  set { CheckDispo
30330 73 65 64 28 29 3b 20 6c 6f 67 45 72 72 6f 72 73  sed(); logErrors
30340 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
30350 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
30360 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
30370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
303a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
303b0 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f       private boo
303c0 6c 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 3b  l logExceptions;
303d0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
303e0 20 76 69 72 74 75 61 6c 20 62 6f 6f 6c 20 4c 6f   virtual bool Lo
303f0 67 45 78 63 65 70 74 69 6f 6e 73 0d 0a 20 20 20  gExceptions..   
30400 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
30410 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
30420 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
30430 6e 20 6c 6f 67 45 78 63 65 70 74 69 6f 6e 73 3b  n logExceptions;
30440 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
30450 73 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f  set { CheckDispo
30460 73 65 64 28 29 3b 20 6c 6f 67 45 78 63 65 70 74  sed(); logExcept
30470 69 6f 6e 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  ions = value; }.
30480 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
30490 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
304a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
304b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
304c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
304d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
304e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
304f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
30500 67 69 6f 6e 20 49 53 51 4c 69 74 65 4e 61 74 69  gion ISQLiteNati
30510 76 65 4d 6f 64 75 6c 65 20 4d 65 6d 62 65 72 73  veModule Members
30520 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
30530 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
30540 65 20 78 43 72 65 61 74 65 28 0d 0a 20 20 20 20  e xCreate(..    
30550 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
30560 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Db,..           
30570 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d 0a 20   IntPtr pAux,.. 
30580 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 61             int a
30590 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  rgc,..          
305a0 20 20 49 6e 74 50 74 72 5b 5d 20 61 72 67 76 2c    IntPtr[] argv,
305b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
305c0 66 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d  f IntPtr pVtab,.
305d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
305e0 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 0d 0a   IntPtr pError..
305f0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
30600 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30610 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
30620 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30630 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
30640 20 66 69 6c 65 4e 61 6d 65 20 3d 20 53 51 4c 69   fileName = SQLi
30650 74 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 46  teString.StringF
30660 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 0d 0a  romUtf8IntPtr(..
30670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30680 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
30690 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
306a0 64 62 5f 66 69 6c 65 6e 61 6d 65 28 70 44 62 2c  db_filename(pDb,
306b0 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 3b 0d   IntPtr.Zero));.
306c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
306d0 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69 74 65     using (SQLite
306e0 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
306f0 63 74 69 6f 6e 20 3d 20 6e 65 77 20 53 51 4c 69  ction = new SQLi
30700 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 0d 0a 20  teConnection(.. 
30710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30720 20 20 20 20 20 20 20 70 44 62 2c 20 66 69 6c 65         pDb, file
30730 4e 61 6d 65 2c 20 66 61 6c 73 65 29 29 0d 0a 20  Name, false)).. 
30740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
30750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30760 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
30770 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 3d  ualTable table =
30780 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
30790 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
307a0 6e 67 20 65 72 72 6f 72 20 3d 20 6e 75 6c 6c 3b  ng error = null;
307b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
307c0 20 20 20 20 20 20 20 20 69 66 20 28 43 72 65 61          if (Crea
307d0 74 65 28 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 70  te(connection, p
307e0 41 75 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Aux,..          
307f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30800 20 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53    SQLiteString.S
30810 74 72 69 6e 67 41 72 72 61 79 46 72 6f 6d 55 74  tringArrayFromUt
30820 66 38 49 6e 74 50 74 72 41 72 72 61 79 28 61 72  f8IntPtrArray(ar
30830 67 76 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  gv),..          
30840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30850 20 20 72 65 66 20 74 61 62 6c 65 2c 20 72 65 66    ref table, ref
30860 20 65 72 72 6f 72 29 20 3d 3d 20 53 51 4c 69 74   error) == SQLit
30870 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a  eErrorCode.Ok)..
30880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30890 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
308a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
308b0 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c 6c  f (table != null
308c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
308d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
308e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308f0 20 20 20 20 20 20 20 20 20 20 70 56 74 61 62 20            pVtab 
30900 3d 20 54 61 62 6c 65 54 6f 49 6e 74 50 74 72 28  = TableToIntPtr(
30910 74 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  table);..       
30920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30930 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
30940 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d  teErrorCode.Ok;.
30950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30960 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
30970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30980 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
30990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
309a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
309b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
309c0 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65   pError = SQLite
309d0 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74  String.Utf8IntPt
309e0 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d 0a 20 20  rFromString(..  
309f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6e                "n
30a10 6f 20 74 61 62 6c 65 20 77 61 73 20 63 72 65 61  o table was crea
30a20 74 65 64 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  ted");..        
30a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a40 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
30a50 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
30a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
30a70 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
30a80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
30a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30aa0 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c 69     pError = SQLi
30ab0 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e 74  teString.Utf8Int
30ac0 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 65 72  PtrFromString(er
30ad0 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ror);..         
30ae0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
30af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
30b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
30b10 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
30b20 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20  h (Exception e) 
30b30 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61  /* NOTE: Must ca
30b40 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20  tch ALL. */..   
30b50 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
30b60 20 20 20 20 20 20 20 20 20 20 20 20 70 45 72 72              pErr
30b70 6f 72 20 3d 20 53 51 4c 69 74 65 53 74 72 69 6e  or = SQLiteStrin
30b80 67 2e 55 74 66 38 49 6e 74 50 74 72 46 72 6f 6d  g.Utf8IntPtrFrom
30b90 53 74 72 69 6e 67 28 65 2e 54 6f 53 74 72 69 6e  String(e.ToStrin
30ba0 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  g());..         
30bb0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
30bc0 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
30bd0 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72  eErrorCode.Error
30be0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
30bf0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
30c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
30c40 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
30c50 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
30c60 64 65 20 78 43 6f 6e 6e 65 63 74 28 0d 0a 20 20  de xConnect(..  
30c70 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
30c80 20 70 44 62 2c 0d 0a 20 20 20 20 20 20 20 20 20   pDb,..         
30c90 20 20 20 49 6e 74 50 74 72 20 70 41 75 78 2c 0d     IntPtr pAux,.
30ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74  .            int
30cb0 20 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20   argc,..        
30cc0 20 20 20 20 49 6e 74 50 74 72 5b 5d 20 61 72 67      IntPtr[] arg
30cd0 76 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  v,..            
30ce0 72 65 66 20 49 6e 74 50 74 72 20 70 56 74 61 62  ref IntPtr pVtab
30cf0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
30d00 65 66 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72  ef IntPtr pError
30d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
30d20 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
30d30 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
30d40 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
30d50 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
30d60 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d 20 53 51  ng fileName = SQ
30d70 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69 6e  LiteString.Strin
30d80 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72 28  gFromUtf8IntPtr(
30d90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30da0 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
30db0 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
30dc0 33 5f 64 62 5f 66 69 6c 65 6e 61 6d 65 28 70 44  3_db_filename(pD
30dd0 62 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29  b, IntPtr.Zero))
30de0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
30df0 20 20 20 20 20 75 73 69 6e 67 20 28 53 51 4c 69       using (SQLi
30e00 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  teConnection con
30e10 6e 65 63 74 69 6f 6e 20 3d 20 6e 65 77 20 53 51  nection = new SQ
30e20 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 28 0d  LiteConnection(.
30e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30e40 20 20 20 20 20 20 20 20 20 70 44 62 2c 20 66 69           pDb, fi
30e50 6c 65 4e 61 6d 65 2c 20 66 61 6c 73 65 29 29 0d  leName, false)).
30e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30e70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
30e80 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
30e90 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
30ea0 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
30eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
30ec0 72 69 6e 67 20 65 72 72 6f 72 20 3d 20 6e 75 6c  ring error = nul
30ed0 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
30ee0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 43 6f            if (Co
30ef0 6e 6e 65 63 74 28 63 6f 6e 6e 65 63 74 69 6f 6e  nnect(connection
30f00 2c 20 70 41 75 78 2c 0d 0a 20 20 20 20 20 20 20  , pAux,..       
30f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f20 20 20 20 20 20 53 51 4c 69 74 65 53 74 72 69 6e       SQLiteStrin
30f30 67 2e 53 74 72 69 6e 67 41 72 72 61 79 46 72 6f  g.StringArrayFro
30f40 6d 55 74 66 38 49 6e 74 50 74 72 41 72 72 61 79  mUtf8IntPtrArray
30f50 28 61 72 67 76 29 2c 0d 0a 20 20 20 20 20 20 20  (argv),..       
30f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f70 20 20 20 20 20 72 65 66 20 74 61 62 6c 65 2c 20       ref table, 
30f80 72 65 66 20 65 72 72 6f 72 29 20 3d 3d 20 53 51  ref error) == SQ
30f90 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b  LiteErrorCode.Ok
30fa0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
30fb0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30fd0 20 20 69 66 20 28 74 61 62 6c 65 20 21 3d 20 6e    if (table != n
30fe0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
30ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
31000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31010 20 20 20 20 20 20 20 20 20 20 20 20 20 70 56 74               pVt
31020 61 62 20 3d 20 54 61 62 6c 65 54 6f 49 6e 74 50  ab = TableToIntP
31030 74 72 28 74 61 62 6c 65 29 3b 0d 0a 20 20 20 20  tr(table);..    
31040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31050 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
31060 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f  QLiteErrorCode.O
31070 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
31080 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
31090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
310a0 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
310b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
310c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
310d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
310e0 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53 51 4c      pError = SQL
310f0 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38 49 6e  iteString.Utf8In
31100 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67 28 0d  tPtrFromString(.
31110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31130 20 22 6e 6f 20 74 61 62 6c 65 20 77 61 73 20 63   "no table was c
31140 72 65 61 74 65 64 22 29 3b 0d 0a 20 20 20 20 20  reated");..     
31150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31160 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
31170 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
31180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31190 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
311a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
311b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
311c0 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20 53        pError = S
311d0 51 4c 69 74 65 53 74 72 69 6e 67 2e 55 74 66 38  QLiteString.Utf8
311e0 49 6e 74 50 74 72 46 72 6f 6d 53 74 72 69 6e 67  IntPtrFromString
311f0 28 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20  (error);..      
31200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
31210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31220 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31230 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  }..            c
31240 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
31250 65 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74  e) /* NOTE: Must
31260 20 63 61 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a   catch ALL. */..
31270 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
31290 45 72 72 6f 72 20 3d 20 53 51 4c 69 74 65 53 74  Error = SQLiteSt
312a0 72 69 6e 67 2e 55 74 66 38 49 6e 74 50 74 72 46  ring.Utf8IntPtrF
312b0 72 6f 6d 53 74 72 69 6e 67 28 65 2e 54 6f 53 74  romString(e.ToSt
312c0 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20  ring());..      
312d0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
312e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
312f0 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72  LiteErrorCode.Er
31300 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ror;..        }.
31310 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
31320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31360 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
31370 69 76 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f  ivate SQLiteErro
31380 72 43 6f 64 65 20 78 42 65 73 74 49 6e 64 65 78  rCode xBestIndex
31390 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
313a0 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a 20 20  ntPtr pVtab,..  
313b0 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
313c0 20 70 49 6e 64 65 78 0d 0a 20 20 20 20 20 20 20   pIndex..       
313d0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
313e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
313f0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
31400 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31410 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
31420 54 61 62 6c 65 20 74 61 62 6c 65 20 3d 20 54 61  Table table = Ta
31430 62 6c 65 46 72 6f 6d 49 6e 74 50 74 72 28 70 56  bleFromIntPtr(pV
31440 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tab);....       
31450 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61 62           if (tab
31460 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le != null)..   
31470 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31490 20 20 20 20 53 51 4c 69 74 65 49 6e 64 65 78 20      SQLiteIndex 
314a0 69 6e 64 65 78 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  index = null;...
314b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
314c0 20 20 20 20 20 53 51 4c 69 74 65 4d 61 72 73 68       SQLiteMarsh
314d0 61 6c 2e 49 6e 64 65 78 46 72 6f 6d 49 6e 74 50  al.IndexFromIntP
314e0 74 72 28 70 49 6e 64 65 78 2c 20 72 65 66 20 69  tr(pIndex, ref i
314f0 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ndex);....      
31500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
31510 20 28 42 65 73 74 49 6e 64 65 78 28 74 61 62 6c   (BestIndex(tabl
31520 65 2c 20 69 6e 64 65 78 29 20 3d 3d 20 53 51 4c  e, index) == SQL
31530 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29  iteErrorCode.Ok)
31540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31550 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31570 20 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 49   SQLiteMarshal.I
31580 6e 64 65 78 54 6f 49 6e 74 50 74 72 28 69 6e 64  ndexToIntPtr(ind
31590 65 78 2c 20 70 49 6e 64 65 78 29 3b 0d 0a 20 20  ex, pIndex);..  
315a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
315c0 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b  iteErrorCode.Ok;
315d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
315e0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
315f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31600 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
31610 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78         catch (Ex
31620 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f  ception e) /* NO
31630 54 45 3a 20 4d 75 73 74 20 63 61 74 63 68 20 41  TE: Must catch A
31640 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  LL. */..        
31650 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31660 20 20 20 20 20 20 20 53 65 74 54 61 62 6c 65 45         SetTableE
31670 72 72 6f 72 28 70 56 74 61 62 2c 20 65 2e 54 6f  rror(pVtab, e.To
31680 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20  String());..    
31690 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
316a0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
316b0 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
316c0 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20  Error;..        
316d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
316e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31720 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
31730 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 45 72  private SQLiteEr
31740 72 6f 72 43 6f 64 65 20 78 44 69 73 63 6f 6e 6e  rorCode xDisconn
31750 65 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ect(..          
31760 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
31770 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
31780 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31790 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
317a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
317b0 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
317c0 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
317d0 6c 65 20 3d 20 54 61 62 6c 65 46 72 6f 6d 49 6e  le = TableFromIn
317e0 74 50 74 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  tPtr(pVtab);....
317f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31800 69 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c  if (table != nul
31810 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
31820 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31830 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 44             if (D
31840 69 73 63 6f 6e 6e 65 63 74 28 74 61 62 6c 65 29  isconnect(table)
31850 20 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   == SQLiteErrorC
31860 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20  ode.Ok)..       
31870 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31890 20 20 20 20 20 20 20 20 69 66 20 28 74 61 62 6c          if (tabl
318a0 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es != null)..   
318b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
318c0 20 20 20 20 20 20 20 20 20 74 61 62 6c 65 73 2e           tables.
318d0 52 65 6d 6f 76 65 28 70 56 74 61 62 29 3b 0d 0a  Remove(pVtab);..
318e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
318f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
31900 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
31910 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  .Ok;..          
31920 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
31930 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
31940 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
31950 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
31960 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f   (Exception e) /
31970 2a 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74  * NOTE: Must cat
31980 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20  ch ALL. */..    
31990 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
319a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
319b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
319c0 2f 20 4e 4f 54 45 3a 20 41 74 20 74 68 69 73 20  / NOTE: At this 
319d0 70 6f 69 6e 74 2c 20 74 68 65 72 65 20 69 73 20  point, there is 
319e0 6e 6f 20 77 61 79 20 74 6f 20 72 65 70 6f 72 74  no way to report
319f0 20 74 68 65 20 65 72 72 6f 72 0d 0a 20 20 20 20   the error..    
31a00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
31a10 20 20 20 20 20 63 6f 6e 64 69 74 69 6f 6e 20 62       condition b
31a20 61 63 6b 20 74 6f 20 74 68 65 20 63 61 6c 6c 65  ack to the calle
31a30 72 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 75 73  r; therefore, us
31a40 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  e the..         
31a50 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
31a60 6c 6f 67 67 69 6e 67 20 66 61 63 69 6c 69 74 79  logging facility
31a70 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20   instead...     
31a80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
31a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
31aa0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
31ab0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31ac0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4c             if (L
31ad0 6f 67 45 78 63 65 70 74 69 6f 6e 73 29 0d 0a 20  ogExceptions).. 
31ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31af0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
31b10 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61  LiteLog.LogMessa
31b20 67 65 28 53 51 4c 69 74 65 42 61 73 65 2e 43 4f  ge(SQLiteBase.CO
31b30 52 5f 45 5f 45 58 43 45 50 54 49 4f 4e 2c 0d 0a  R_E_EXCEPTION,..
31b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b50 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
31b60 6e 67 2e 46 6f 72 6d 61 74 28 43 75 6c 74 75 72  ng.Format(Cultur
31b70 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
31b80 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
31b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ba0 20 20 20 22 43 61 75 67 68 74 20 65 78 63 65 70     "Caught excep
31bb0 74 69 6f 6e 20 69 6e 20 5c 22 78 44 69 73 63 6f  tion in \"xDisco
31bc0 6e 6e 65 63 74 5c 22 20 6d 65 74 68 6f 64 3a 20  nnect\" method: 
31bd0 7b 30 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {0}",..         
31be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31bf0 20 20 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77     e)); /* throw
31c00 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
31c10 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31c20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
31c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
31c40 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
31c50 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
31c60 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
31c70 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
31c80 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
31c90 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
31ca0 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
31cb0 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
31cc0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31cd0 20 20 20 46 72 65 65 54 61 62 6c 65 28 70 56 74     FreeTable(pVt
31ce0 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ab);..          
31cf0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
31d00 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
31d10 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b  ErrorCode.Error;
31d20 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
31d30 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
31d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
31d80 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
31d90 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
31da0 65 20 78 44 65 73 74 72 6f 79 28 0d 0a 20 20 20  e xDestroy(..   
31db0 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
31dc0 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20 20 20  pVtab..         
31dd0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
31de0 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
31df0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
31e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31e10 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
31e20 62 6c 65 20 74 61 62 6c 65 20 3d 20 54 61 62 6c  ble table = Tabl
31e30 65 46 72 6f 6d 49 6e 74 50 74 72 28 70 56 74 61  eFromIntPtr(pVta
31e40 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  b);....         
31e50 20 20 20 20 20 20 20 69 66 20 28 74 61 62 6c 65         if (table
31e60 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
31e70 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
31e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e90 20 20 69 66 20 28 44 65 73 74 72 6f 79 28 74 61    if (Destroy(ta
31ea0 62 6c 65 29 20 3d 3d 20 53 51 4c 69 74 65 45 72  ble) == SQLiteEr
31eb0 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20  rorCode.Ok)..   
31ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ed0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
31ee0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
31ef0 74 61 62 6c 65 73 20 21 3d 20 6e 75 6c 6c 29 0d  tables != null).
31f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31f10 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62               tab
31f20 6c 65 73 2e 52 65 6d 6f 76 65 28 70 56 74 61 62  les.Remove(pVtab
31f30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
31f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
31f50 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
31f60 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20  Code.Ok;..      
31f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
31f80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31f90 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31fa0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  }..            c
31fb0 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
31fc0 65 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74  e) /* NOTE: Must
31fd0 20 63 61 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a   catch ALL. */..
31fe0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
32000 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
32010 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 74 20 74     // NOTE: At t
32020 68 69 73 20 70 6f 69 6e 74 2c 20 74 68 65 72 65  his point, there
32030 20 69 73 20 6e 6f 20 77 61 79 20 74 6f 20 72 65   is no way to re
32040 70 6f 72 74 20 74 68 65 20 65 72 72 6f 72 0d 0a  port the error..
32050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32060 2f 2f 20 20 20 20 20 20 20 63 6f 6e 64 69 74 69  //       conditi
32070 6f 6e 20 62 61 63 6b 20 74 6f 20 74 68 65 20 63  on back to the c
32080 61 6c 6c 65 72 3b 20 74 68 65 72 65 66 6f 72 65  aller; therefore
32090 2c 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20  , use the..     
320a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
320b0 20 20 20 20 6c 6f 67 67 69 6e 67 20 66 61 63 69      logging faci
320c0 6c 69 74 79 20 69 6e 73 74 65 61 64 2e 0d 0a 20  lity instead... 
320d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
320e0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
320f0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
32100 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
32110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
32120 66 20 28 4c 6f 67 45 78 63 65 70 74 69 6f 6e 73  f (LogExceptions
32130 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
32140 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
32150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32160 20 20 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d    SQLiteLog.LogM
32170 65 73 73 61 67 65 28 53 51 4c 69 74 65 42 61 73  essage(SQLiteBas
32180 65 2e 43 4f 52 5f 45 5f 45 58 43 45 50 54 49 4f  e.COR_E_EXCEPTIO
32190 4e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  N,..            
321a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
321b0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 43 75  String.Format(Cu
321c0 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
321d0 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
321e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
321f0 20 20 20 20 20 20 20 22 43 61 75 67 68 74 20 65         "Caught e
32200 78 63 65 70 74 69 6f 6e 20 69 6e 20 5c 22 78 44  xception in \"xD
32210 65 73 74 72 6f 79 5c 22 20 6d 65 74 68 6f 64 3a  estroy\" method:
32220 20 7b 30 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {0}",..        
32230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32240 20 20 20 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f      e)); /* thro
32250 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
32260 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
32270 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
32280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32290 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
322a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
322b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
322c0 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
322d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
322e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
322f0 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61              fina
32300 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lly..           
32310 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32320 20 20 20 20 46 72 65 65 54 61 62 6c 65 28 70 56      FreeTable(pV
32330 74 61 62 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  tab);..         
32340 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
32350 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
32360 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72  eErrorCode.Error
32370 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
32380 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
32390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
323a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
323b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
323c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
323d0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
323e0 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  te SQLiteErrorCo
323f0 64 65 20 78 4f 70 65 6e 28 0d 0a 20 20 20 20 20  de xOpen(..     
32400 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
32410 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
32420 20 20 72 65 66 20 49 6e 74 50 74 72 20 70 43 75    ref IntPtr pCu
32430 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rsor..          
32440 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
32450 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
32460 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
32470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32480 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
32490 6c 65 20 74 61 62 6c 65 20 3d 20 54 61 62 6c 65  le table = Table
324a0 46 72 6f 6d 49 6e 74 50 74 72 28 70 56 74 61 62  FromIntPtr(pVtab
324b0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
324c0 20 20 20 20 20 20 69 66 20 28 74 61 62 6c 65 20        if (table 
324d0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
324e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
324f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32500 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
32510 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72  bleCursor cursor
32520 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
32530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32540 69 66 20 28 4f 70 65 6e 28 74 61 62 6c 65 2c 20  if (Open(table, 
32550 72 65 66 20 63 75 72 73 6f 72 29 20 3d 3d 20 53  ref cursor) == S
32560 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f  QLiteErrorCode.O
32570 6b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k)..            
32580 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
32590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
325a0 20 20 20 69 66 20 28 63 75 72 73 6f 72 20 21 3d     if (cursor !=
325b0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
325c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
325d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
325e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
325f0 43 75 72 73 6f 72 20 3d 20 43 75 72 73 6f 72 54  Cursor = CursorT
32600 6f 49 6e 74 50 74 72 28 63 75 72 73 6f 72 29 3b  oIntPtr(cursor);
32610 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32630 69 66 20 28 70 43 75 72 73 6f 72 20 21 3d 20 49  if (pCursor != I
32640 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
32650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32660 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
32670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32680 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
32690 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
326a0 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20  de.Ok;..        
326b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
326c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
326d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
326e0 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
326f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32700 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
32710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32720 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c 65          SetTable
32730 45 72 72 6f 72 28 70 56 74 61 62 2c 0d 0a 20 20  Error(pVtab,..  
32740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32760 20 20 22 6e 6f 20 6e 61 74 69 76 65 20 63 75 72    "no native cur
32770 73 6f 72 20 77 61 73 20 63 72 65 61 74 65 64 22  sor was created"
32780 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
32790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
327a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
327b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
327c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
327d0 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
327e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
327f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32810 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72     SetTableError
32820 28 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20 20  (pVtab,..       
32830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32840 20 20 20 20 20 20 20 20 20 22 6e 6f 20 6d 61 6e           "no man
32850 61 67 65 64 20 63 75 72 73 6f 72 20 77 61 73 20  aged cursor was 
32860 63 72 65 61 74 65 64 22 29 3b 0d 0a 20 20 20 20  created");..    
32870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32880 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
32890 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
328a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
328b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
328c0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
328d0 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20  h (Exception e) 
328e0 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61  /* NOTE: Must ca
328f0 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20  tch ALL. */..   
32900 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
32910 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54              SetT
32920 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c  ableError(pVtab,
32930 20 65 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d   e.ToString());.
32940 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
32950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
32960 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
32970 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
32980 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
32990 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
329a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
329b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
329c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
329d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
329e0 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
329f0 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 43 6c  iteErrorCode xCl
32a00 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ose(..          
32a10 20 20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72    IntPtr pCursor
32a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
32a30 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
32a40 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70          IntPtr p
32a50 56 74 61 62 20 3d 20 49 6e 74 50 74 72 2e 5a 65  Vtab = IntPtr.Ze
32a60 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ro;....         
32a70 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
32a80 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32a90 20 20 20 20 20 20 20 70 56 74 61 62 20 3d 20 54         pVtab = T
32aa0 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72 28 70  ableFromCursor(p
32ab0 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20  Cursor);....    
32ac0 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
32ad0 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75  teVirtualTableCu
32ae0 72 73 6f 72 20 63 75 72 73 6f 72 20 3d 20 43 75  rsor cursor = Cu
32af0 72 73 6f 72 46 72 6f 6d 49 6e 74 50 74 72 28 0d  rsorFromIntPtr(.
32b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32b10 20 20 20 20 20 70 56 74 61 62 2c 20 70 43 75 72       pVtab, pCur
32b20 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sor);....       
32b30 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72           if (cur
32b40 73 6f 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  sor != null)..  
32b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
32b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32b70 20 20 20 20 20 69 66 20 28 43 6c 6f 73 65 28 63       if (Close(c
32b80 75 72 73 6f 72 29 20 3d 3d 20 53 51 4c 69 74 65  ursor) == SQLite
32b90 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20  ErrorCode.Ok).. 
32ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32bb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
32bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
32bd0 20 28 63 75 72 73 6f 72 73 20 21 3d 20 6e 75 6c   (cursors != nul
32be0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
32bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32c00 63 75 72 73 6f 72 73 2e 52 65 6d 6f 76 65 28 70  cursors.Remove(p
32c10 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20  Cursor);....    
32c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32c30 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
32c40 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d 0a  eErrorCode.Ok;..
32c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32c60 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
32c70 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
32c80 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
32c90 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
32ca0 70 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54 45  ption e) /* NOTE
32cb0 3a 20 4d 75 73 74 20 63 61 74 63 68 20 41 4c 4c  : Must catch ALL
32cc0 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  . */..          
32cd0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
32ce0 20 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72       SetTableErr
32cf0 6f 72 28 70 56 74 61 62 2c 20 65 2e 54 6f 53 74  or(pVtab, e.ToSt
32d00 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20  ring());..      
32d10 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
32d20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
32d30 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
32d40 20 20 20 20 20 20 20 20 20 20 20 20 20 46 72 65               Fre
32d50 65 43 75 72 73 6f 72 28 70 43 75 72 73 6f 72 29  eCursor(pCursor)
32d60 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
32d70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32d80 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72  return SQLiteErr
32d90 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20  orCode.Error;.. 
32da0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
32db0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
32dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
32e00 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53         private S
32e10 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78  QLiteErrorCode x
32e20 46 69 6c 74 65 72 28 0d 0a 20 20 20 20 20 20 20  Filter(..       
32e30 20 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72       IntPtr pCur
32e40 73 6f 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  sor,..          
32e50 20 20 69 6e 74 20 69 64 78 4e 75 6d 2c 0d 0a 20    int idxNum,.. 
32e60 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
32e70 72 20 69 64 78 53 74 72 2c 0d 0a 20 20 20 20 20  r idxStr,..     
32e80 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 63 2c         int argc,
32e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
32ea0 74 50 74 72 5b 5d 20 61 72 67 76 0d 0a 20 20 20  tPtr[] argv..   
32eb0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
32ec0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32ed0 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 20     IntPtr pVtab 
32ee0 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
32ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
32f00 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
32f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32f20 20 20 70 56 74 61 62 20 3d 20 54 61 62 6c 65 46    pVtab = TableF
32f30 72 6f 6d 43 75 72 73 6f 72 28 70 43 75 72 73 6f  romCursor(pCurso
32f40 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
32f50 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
32f60 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
32f70 63 75 72 73 6f 72 20 3d 20 43 75 72 73 6f 72 46  cursor = CursorF
32f80 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  romIntPtr(..    
32f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32fa0 70 56 74 61 62 2c 20 70 43 75 72 73 6f 72 29 3b  pVtab, pCursor);
32fb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32fc0 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 20 21      if (cursor !
32fd0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
32fe0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
32ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33000 69 66 20 28 46 69 6c 74 65 72 28 63 75 72 73 6f  if (Filter(curso
33010 72 2c 20 69 64 78 4e 75 6d 2c 0d 0a 20 20 20 20  r, idxNum,..    
33020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33030 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 53 74          SQLiteSt
33040 72 69 6e 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55  ring.StringFromU
33050 74 66 38 49 6e 74 50 74 72 28 69 64 78 53 74 72  tf8IntPtr(idxStr
33060 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
33070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33080 53 51 4c 69 74 65 4d 61 72 73 68 61 6c 2e 56 61  SQLiteMarshal.Va
33090 6c 75 65 41 72 72 61 79 46 72 6f 6d 49 6e 74 50  lueArrayFromIntP
330a0 74 72 41 72 72 61 79 28 0d 0a 20 20 20 20 20 20  trArray(..      
330b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
330c0 20 20 20 20 20 20 20 20 20 20 61 72 67 76 29 29            argv))
330d0 20 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   == SQLiteErrorC
330e0 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20  ode.Ok)..       
330f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
33100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33110 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
33120 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f  QLiteErrorCode.O
33130 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
33140 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
33150 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
33160 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
33170 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
33180 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20  Exception e) /* 
33190 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74 63 68  NOTE: Must catch
331a0 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20   ALL. */..      
331b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
331c0 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c           SetTabl
331d0 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20 65 2e  eError(pVtab, e.
331e0 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20  ToString());..  
331f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
33200 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
33210 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
33220 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20  e.Error;..      
33230 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
33240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33280 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
33290 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
332a0 45 72 72 6f 72 43 6f 64 65 20 78 4e 65 78 74 28  ErrorCode xNext(
332b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
332c0 74 50 74 72 20 70 43 75 72 73 6f 72 0d 0a 20 20  tPtr pCursor..  
332d0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
332e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
332f0 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
33300 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
33310 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  ...            t
33320 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
33330 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
33340 20 20 20 70 56 74 61 62 20 3d 20 54 61 62 6c 65     pVtab = Table
33350 46 72 6f 6d 43 75 72 73 6f 72 28 70 43 75 72 73  FromCursor(pCurs
33360 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
33370 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
33380 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72  rtualTableCursor
33390 20 63 75 72 73 6f 72 20 3d 20 43 75 72 73 6f 72   cursor = Cursor
333a0 46 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20 20  FromIntPtr(..   
333b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
333c0 20 70 56 74 61 62 2c 20 70 43 75 72 73 6f 72 29   pVtab, pCursor)
333d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
333e0 20 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 20       if (cursor 
333f0 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
33400 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
33410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33420 20 69 66 20 28 4e 65 78 74 28 63 75 72 73 6f 72   if (Next(cursor
33430 29 20 3d 3d 20 53 51 4c 69 74 65 45 72 72 6f 72  ) == SQLiteError
33440 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20  Code.Ok)..      
33450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33460 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45    return SQLiteE
33470 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20  rrorCode.Ok;..  
33480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
33490 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
334a0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
334b0 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20  h (Exception e) 
334c0 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61  /* NOTE: Must ca
334d0 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20  tch ALL. */..   
334e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
334f0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54              SetT
33500 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c  ableError(pVtab,
33510 20 65 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d   e.ToString());.
33520 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
33530 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
33540 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
33550 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
33560 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
33570 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
33580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
335a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
335b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
335c0 20 20 20 20 20 70 72 69 76 61 74 65 20 69 6e 74       private int
335d0 20 78 45 6f 66 28 0d 0a 20 20 20 20 20 20 20 20   xEof(..        
335e0 20 20 20 20 49 6e 74 50 74 72 20 70 43 75 72 73      IntPtr pCurs
335f0 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
33600 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
33610 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72            IntPtr
33620 20 70 56 74 61 62 20 3d 20 49 6e 74 50 74 72 2e   pVtab = IntPtr.
33630 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Zero;....       
33640 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
33650 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
33660 20 20 20 20 20 20 20 20 20 70 56 74 61 62 20 3d           pVtab =
33670 20 54 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f 72   TableFromCursor
33680 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20  (pCursor);....  
33690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
336a0 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65  LiteVirtualTable
336b0 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 3d 20  Cursor cursor = 
336c0 43 75 72 73 6f 72 46 72 6f 6d 49 6e 74 50 74 72  CursorFromIntPtr
336d0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
336e0 20 20 20 20 20 20 20 70 56 74 61 62 2c 20 70 43         pVtab, pC
336f0 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20  ursor);....     
33700 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
33710 75 72 73 6f 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a  ursor != null)..
33720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33730 20 20 20 20 72 65 74 75 72 6e 20 45 6f 66 28 63      return Eof(c
33740 75 72 73 6f 72 29 20 3f 20 31 20 3a 20 30 3b 0d  ursor) ? 1 : 0;.
33750 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
33760 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
33770 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20  h (Exception e) 
33780 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61  /* NOTE: Must ca
33790 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20  tch ALL. */..   
337a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
337b0 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54              SetT
337c0 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c  ableError(pVtab,
337d0 20 65 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d   e.ToString());.
337e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
337f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
33800 74 75 72 6e 20 31 3b 0d 0a 20 20 20 20 20 20 20  turn 1;..       
33810 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
33820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33860 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
33870 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 45   private SQLiteE
33880 72 72 6f 72 43 6f 64 65 20 78 43 6f 6c 75 6d 6e  rrorCode xColumn
33890 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  (..            I
338a0 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d 0a  ntPtr pCursor,..
338b0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
338c0 74 72 20 70 43 6f 6e 74 65 78 74 2c 0d 0a 20 20  tr pContext,..  
338d0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e            int in
338e0 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dex..           
338f0 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
33900 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
33910 72 20 70 56 74 61 62 20 3d 20 49 6e 74 50 74 72  r pVtab = IntPtr
33920 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
33930 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
33940 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
33950 20 20 20 20 20 20 20 20 20 20 70 56 74 61 62 20            pVtab 
33960 3d 20 54 61 62 6c 65 46 72 6f 6d 43 75 72 73 6f  = TableFromCurso
33970 72 28 70 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20  r(pCursor);.... 
33980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
33990 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
339a0 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 3d  eCursor cursor =
339b0 20 43 75 72 73 6f 72 46 72 6f 6d 49 6e 74 50 74   CursorFromIntPt
339c0 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
339d0 20 20 20 20 20 20 20 20 70 56 74 61 62 2c 20 70          pVtab, p
339e0 43 75 72 73 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20  Cursor);....    
339f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
33a00 63 75 72 73 6f 72 20 21 3d 20 6e 75 6c 6c 29 0d  cursor != null).
33a10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33a20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
33a30 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
33a40 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 20 3d 20  ntext context = 
33a50 6e 65 77 20 53 51 4c 69 74 65 43 6f 6e 74 65 78  new SQLiteContex
33a60 74 28 70 43 6f 6e 74 65 78 74 29 3b 0d 0a 0d 0a  t(pContext);....
33a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33a80 20 20 20 20 72 65 74 75 72 6e 20 43 6f 6c 75 6d      return Colum
33a90 6e 28 63 75 72 73 6f 72 2c 20 63 6f 6e 74 65 78  n(cursor, contex
33aa0 74 2c 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20  t, index);..    
33ab0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
33ac0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
33ad0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
33ae0 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a  (Exception e) /*
33af0 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74 63   NOTE: Must catc
33b00 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20  h ALL. */..     
33b10 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
33b20 20 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62            SetTab
33b30 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20 65  leError(pVtab, e
33b40 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20  .ToString());.. 
33b50 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
33b60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
33b70 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
33b80 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20  de.Error;..     
33b90 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
33ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33be0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
33bf0 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
33c00 65 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 77 49  eErrorCode xRowI
33c10 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d(..            
33c20 49 6e 74 50 74 72 20 70 43 75 72 73 6f 72 2c 0d  IntPtr pCursor,.
33c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
33c40 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20 20 20   long rowId..   
33c50 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
33c60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
33c70 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 20     IntPtr pVtab 
33c80 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
33c90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
33ca0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
33cb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33cc0 20 20 70 56 74 61 62 20 3d 20 54 61 62 6c 65 46    pVtab = TableF
33cd0 72 6f 6d 43 75 72 73 6f 72 28 70 43 75 72 73 6f  romCursor(pCurso
33ce0 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
33cf0 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
33d00 74 75 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20  tualTableCursor 
33d10 63 75 72 73 6f 72 20 3d 20 43 75 72 73 6f 72 46  cursor = CursorF
33d20 72 6f 6d 49 6e 74 50 74 72 28 0d 0a 20 20 20 20  romIntPtr(..    
33d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33d40 70 56 74 61 62 2c 20 70 43 75 72 73 6f 72 29 3b  pVtab, pCursor);
33d50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
33d60 20 20 20 20 69 66 20 28 63 75 72 73 6f 72 20 21      if (cursor !
33d70 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
33d80 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
33d90 75 72 6e 20 52 6f 77 49 64 28 63 75 72 73 6f 72  urn RowId(cursor
33da0 2c 20 72 65 66 20 72 6f 77 49 64 29 3b 0d 0a 20  , ref rowId);.. 
33db0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
33dc0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
33dd0 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a  (Exception e) /*
33de0 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74 63   NOTE: Must catc
33df0 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20  h ALL. */..     
33e00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
33e10 20 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62            SetTab
33e20 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20 65  leError(pVtab, e
33e30 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20  .ToString());.. 
33e40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
33e50 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
33e60 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
33e70 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20  de.Error;..     
33e80 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
33e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ed0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
33ee0 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
33ef0 65 45 72 72 6f 72 43 6f 64 65 20 78 55 70 64 61  eErrorCode xUpda
33f00 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
33f10 20 49 6e 74 50 74 72 20 70 56 74 61 62 2c 0d 0a   IntPtr pVtab,..
33f20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
33f30 61 72 67 63 2c 0d 0a 20 20 20 20 20 20 20 20 20  argc,..         
33f40 20 20 20 49 6e 74 50 74 72 5b 5d 20 61 72 67 76     IntPtr[] argv
33f50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ,..            r
33f60 65 66 20 6c 6f 6e 67 20 72 6f 77 49 64 0d 0a 20  ef long rowId.. 
33f70 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
33f80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
33f90 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
33fa0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
33fb0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
33fc0 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
33fd0 65 20 3d 20 54 61 62 6c 65 46 72 6f 6d 49 6e 74  e = TableFromInt
33fe0 50 74 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  Ptr(pVtab);.... 
33ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
34000 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c 6c  f (table != null
34010 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
34020 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
34030 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
34040 20 55 70 64 61 74 65 28 0d 0a 20 20 20 20 20 20   Update(..      
34050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34060 20 20 74 61 62 6c 65 2c 20 53 51 4c 69 74 65 4d    table, SQLiteM
34070 61 72 73 68 61 6c 2e 56 61 6c 75 65 41 72 72 61  arshal.ValueArra
34080 79 46 72 6f 6d 49 6e 74 50 74 72 41 72 72 61 79  yFromIntPtrArray
34090 28 61 72 67 76 29 2c 0d 0a 20 20 20 20 20 20 20  (argv),..       
340a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
340b0 20 72 65 66 20 72 6f 77 49 64 29 3b 0d 0a 20 20   ref rowId);..  
340c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
340d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
340e0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
340f0 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 20  h (Exception e) 
34100 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61  /* NOTE: Must ca
34110 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20  tch ALL. */..   
34120 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
34130 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 54              SetT
34140 61 62 6c 65 45 72 72 6f 72 28 70 56 74 61 62 2c  ableError(pVtab,
34150 20 65 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d   e.ToString());.
34160 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
34170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
34180 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72  turn SQLiteError
34190 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20  Code.Error;..   
341a0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
341b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
341c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
341d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
341e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
341f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
34200 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51 4c       private SQL
34210 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 42 65  iteErrorCode xBe
34220 67 69 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  gin(..          
34230 20 20 49 6e 74 50 74 72 20 70 56 74 61 62 0d 0a    IntPtr pVtab..
34240 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
34250 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
34260 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
34270 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
34280 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
34290 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
342a0 6c 65 20 3d 20 54 61 62 6c 65 46 72 6f 6d 49 6e  le = TableFromIn
342b0 74 50 74 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a  tPtr(pVtab);....
342c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
342d0 69 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c  if (table != nul
342e0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
342f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 42          return B
34300 65 67 69 6e 28 74 61 62 6c 65 29 3b 0d 0a 20 20  egin(table);..  
34310 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
34320 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
34330 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20  Exception e) /* 
34340 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74 63 68  NOTE: Must catch
34350 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20   ALL. */..      
34360 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34370 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c           SetTabl
34380 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20 65 2e  eError(pVtab, e.
34390 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20  ToString());..  
343a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
343b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
343c0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
343d0 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20  e.Error;..      
343e0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
343f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34430 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
34440 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
34450 45 72 72 6f 72 43 6f 64 65 20 78 53 79 6e 63 28  ErrorCode xSync(
34460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
34470 74 50 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20  tPtr pVtab..    
34480 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
34490 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
344a0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
344b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
344c0 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
344d0 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 3d  ualTable table =
344e0 20 54 61 62 6c 65 46 72 6f 6d 49 6e 74 50 74 72   TableFromIntPtr
344f0 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20  (pVtab);....    
34500 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
34510 74 61 62 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  table != null)..
34520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34530 20 20 20 20 72 65 74 75 72 6e 20 53 79 6e 63 28      return Sync(
34540 74 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  table);..       
34550 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
34560 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
34570 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a  tion e) /* NOTE:
34580 20 4d 75 73 74 20 63 61 74 63 68 20 41 4c 4c 2e   Must catch ALL.
34590 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
345a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
345b0 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f      SetTableErro
345c0 72 28 70 56 74 61 62 2c 20 65 2e 54 6f 53 74 72  r(pVtab, e.ToStr
345d0 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20  ing());..       
345e0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
345f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
34600 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72  iteErrorCode.Err
34610 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  or;..        }..
34620 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
34630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34670 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
34680 76 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72  vate SQLiteError
34690 43 6f 64 65 20 78 43 6f 6d 6d 69 74 28 0d 0a 20  Code xCommit(.. 
346a0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
346b0 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20 20  r pVtab..       
346c0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
346d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
346e0 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
346f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34700 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c     SQLiteVirtual
34710 54 61 62 6c 65 20 74 61 62 6c 65 20 3d 20 54 61  Table table = Ta
34720 62 6c 65 46 72 6f 6d 49 6e 74 50 74 72 28 70 56  bleFromIntPtr(pV
34730 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tab);....       
34740 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61 62           if (tab
34750 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le != null)..   
34760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34770 20 72 65 74 75 72 6e 20 43 6f 6d 6d 69 74 28 74   return Commit(t
34780 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  able);..        
34790 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
347a0 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
347b0 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a 20  ion e) /* NOTE: 
347c0 4d 75 73 74 20 63 61 74 63 68 20 41 4c 4c 2e 20  Must catch ALL. 
347d0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
347e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
347f0 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72     SetTableError
34800 28 70 56 74 61 62 2c 20 65 2e 54 6f 53 74 72 69  (pVtab, e.ToStri
34810 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ng());..        
34820 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
34830 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
34840 74 65 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f  teErrorCode.Erro
34850 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  r;..        }...
34860 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
34870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
348a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
348b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
348c0 61 74 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43  ate SQLiteErrorC
348d0 6f 64 65 20 78 52 6f 6c 6c 62 61 63 6b 28 0d 0a  ode xRollback(..
348e0 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
348f0 74 72 20 70 56 74 61 62 0d 0a 20 20 20 20 20 20  tr pVtab..      
34900 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
34910 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
34920 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
34930 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
34940 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75 61      SQLiteVirtua
34950 6c 54 61 62 6c 65 20 74 61 62 6c 65 20 3d 20 54  lTable table = T
34960 61 62 6c 65 46 72 6f 6d 49 6e 74 50 74 72 28 70  ableFromIntPtr(p
34970 56 74 61 62 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Vtab);....      
34980 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 61            if (ta
34990 62 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ble != null)..  
349a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
349b0 20 20 72 65 74 75 72 6e 20 52 6f 6c 6c 62 61 63    return Rollbac
349c0 6b 28 74 61 62 6c 65 29 3b 0d 0a 20 20 20 20 20  k(table);..     
349d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
349e0 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
349f0 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54  eption e) /* NOT
34a00 45 3a 20 4d 75 73 74 20 63 61 74 63 68 20 41 4c  E: Must catch AL
34a10 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  L. */..         
34a20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
34a30 20 20 20 20 20 20 53 65 74 54 61 62 6c 65 45 72        SetTableEr
34a40 72 6f 72 28 70 56 74 61 62 2c 20 65 2e 54 6f 53  ror(pVtab, e.ToS
34a50 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20  tring());..     
34a60 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
34a70 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53          return S
34a80 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 45  QLiteErrorCode.E
34a90 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d  rror;..        }
34aa0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
34ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34af0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
34b00 72 69 76 61 74 65 20 69 6e 74 20 78 46 69 6e 64  rivate int xFind
34b10 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20  Function(..     
34b20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
34b30 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
34b40 20 20 69 6e 74 20 6e 41 72 67 2c 0d 0a 20 20 20    int nArg,..   
34b50 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
34b60 7a 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  zName,..        
34b70 20 20 20 20 72 65 66 20 53 51 4c 69 74 65 43 61      ref SQLiteCa
34b80 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 2c  llback callback,
34b90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
34ba0 66 20 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74  f IntPtr pClient
34bb0 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20  Data..          
34bc0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
34bd0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
34be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
34bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34c00 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
34c10 6c 65 20 74 61 62 6c 65 20 3d 20 54 61 62 6c 65  le table = Table
34c20 46 72 6f 6d 49 6e 74 50 74 72 28 70 56 74 61 62  FromIntPtr(pVtab
34c30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
34c40 20 20 20 20 20 20 69 66 20 28 74 61 62 6c 65 20        if (table 
34c50 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
34c60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
34c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34c80 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 20   SQLiteFunction 
34c90 66 75 6e 63 74 69 6f 6e 20 3d 20 6e 75 6c 6c 3b  function = null;
34ca0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
34cb0 20 20 20 20 20 20 20 20 69 66 20 28 46 69 6e 64          if (Find
34cc0 46 75 6e 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20  Function(..     
34cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34ce0 20 20 20 20 20 20 20 74 61 62 6c 65 2c 20 6e 41         table, nA
34cf0 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rg,..           
34d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34d10 20 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74   SQLiteString.St
34d20 72 69 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50  ringFromUtf8IntP
34d30 74 72 28 7a 4e 61 6d 65 29 2c 0d 0a 20 20 20 20  tr(zName),..    
34d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34d50 20 20 20 20 20 20 20 20 72 65 66 20 66 75 6e 63          ref func
34d60 74 69 6f 6e 2c 20 72 65 66 20 70 43 6c 69 65 6e  tion, ref pClien
34d70 74 44 61 74 61 29 29 0d 0a 20 20 20 20 20 20 20  tData))..       
34d80 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
34d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34da0 20 20 20 20 20 20 20 20 69 66 20 28 66 75 6e 63          if (func
34db0 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  tion != null).. 
34dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34dd0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
34de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34df0 20 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d        callback =
34e00 20 66 75 6e 63 74 69 6f 6e 2e 53 63 61 6c 61 72   function.Scalar
34e10 43 61 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20  Callback;..     
34e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34e30 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b         return 1;
34e40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34e50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
34e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34e70 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
34e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34e90 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
34ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34eb0 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28    SetTableError(
34ec0 70 56 74 61 62 2c 20 22 6e 6f 20 66 75 6e 63 74  pVtab, "no funct
34ed0 69 6f 6e 20 77 61 73 20 63 72 65 61 74 65 64 22  ion was created"
34ee0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
34ef0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
34f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34f10 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
34f20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
34f30 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
34f40 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
34f50 74 69 6f 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a  tion e) /* NOTE:
34f60 20 4d 75 73 74 20 63 61 74 63 68 20 41 4c 4c 2e   Must catch ALL.
34f70 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
34f80 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
34f90 20 20 20 20 53 65 74 54 61 62 6c 65 45 72 72 6f      SetTableErro
34fa0 72 28 70 56 74 61 62 2c 20 65 2e 54 6f 53 74 72  r(pVtab, e.ToStr
34fb0 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20  ing());..       
34fc0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
34fd0 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d        return 0;.
34fe0 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
34ff0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
35000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
35040 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
35050 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
35060 20 78 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20   xRename(..     
35070 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
35080 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
35090 20 20 49 6e 74 50 74 72 20 7a 4e 65 77 0d 0a 20    IntPtr zNew.. 
350a0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
350b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
350c0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
350d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
350e0 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
350f0 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
35100 65 20 3d 20 54 61 62 6c 65 46 72 6f 6d 49 6e 74  e = TableFromInt
35110 50 74 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  Ptr(pVtab);.... 
35120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
35130 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c 6c  f (table != null
35140 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
35150 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
35160 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
35170 20 52 65 6e 61 6d 65 28 74 61 62 6c 65 2c 0d 0a   Rename(table,..
35180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35190 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 53 74          SQLiteSt
351a0 72 69 6e 67 2e 53 74 72 69 6e 67 46 72 6f 6d 55  ring.StringFromU
351b0 74 66 38 49 6e 74 50 74 72 28 7a 4e 65 77 29 29  tf8IntPtr(zNew))
351c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
351d0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
351e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
351f0 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
35200 6e 20 65 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d 75  n e) /* NOTE: Mu
35210 73 74 20 63 61 74 63 68 20 41 4c 4c 2e 20 2a 2f  st catch ALL. */
35220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
35230 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35240 20 53 65 74 54 61 62 6c 65 45 72 72 6f 72 28 70   SetTableError(p
35250 56 74 61 62 2c 20 65 2e 54 6f 53 74 72 69 6e 67  Vtab, e.ToString
35260 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ());..          
35270 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
35280 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
35290 45 72 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b  ErrorCode.Error;
352a0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
352b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
352c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
352d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
352e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
352f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
35300 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
35310 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
35320 65 20 78 53 61 76 65 70 6f 69 6e 74 28 0d 0a 20  e xSavepoint(.. 
35330 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
35340 72 20 70 56 74 61 62 2c 0d 0a 20 20 20 20 20 20  r pVtab,..      
35350 20 20 20 20 20 20 69 6e 74 20 69 53 61 76 65 70        int iSavep
35360 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  oint..          
35370 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
35380 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
35390 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
353a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
353b0 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
353c0 6c 65 20 74 61 62 6c 65 20 3d 20 54 61 62 6c 65  le table = Table
353d0 46 72 6f 6d 49 6e 74 50 74 72 28 70 56 74 61 62  FromIntPtr(pVtab
353e0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
353f0 20 20 20 20 20 20 69 66 20 28 74 61 62 6c 65 20        if (table 
35400 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
35410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
35420 74 75 72 6e 20 53 61 76 65 70 6f 69 6e 74 28 74  turn Savepoint(t
35430 61 62 6c 65 2c 20 69 53 61 76 65 70 6f 69 6e 74  able, iSavepoint
35440 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
35450 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  }..            c
35460 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
35470 65 29 20 2f 2a 20 4e 4f 54 45 3a 20 4d 75 73 74  e) /* NOTE: Must
35480 20 63 61 74 63 68 20 41 4c 4c 2e 20 2a 2f 0d 0a   catch ALL. */..
35490 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
354a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
354b0 65 74 54 61 62 6c 65 45 72 72 6f 72 28 70 56 74  etTableError(pVt
354c0 61 62 2c 20 65 2e 54 6f 53 74 72 69 6e 67 28 29  ab, e.ToString()
354d0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
354e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
354f0 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72   return SQLiteEr
35500 72 6f 72 43 6f 64 65 2e 45 72 72 6f 72 3b 0d 0a  rorCode.Error;..
35510 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
35520 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
35530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
35570 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
35580 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
35590 78 52 65 6c 65 61 73 65 28 0d 0a 20 20 20 20 20  xRelease(..     
355a0 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
355b0 74 61 62 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tab,..          
355c0 20 20 69 6e 74 20 69 53 61 76 65 70 6f 69 6e 74    int iSavepoint
355d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
355e0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
355f0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
35600 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
35610 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
35620 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
35630 61 62 6c 65 20 3d 20 54 61 62 6c 65 46 72 6f 6d  able = TableFrom
35640 49 6e 74 50 74 72 28 70 56 74 61 62 29 3b 0d 0a  IntPtr(pVtab);..
35650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35660 20 20 69 66 20 28 74 61 62 6c 65 20 21 3d 20 6e    if (table != n
35670 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
35680 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
35690 20 52 65 6c 65 61 73 65 28 74 61 62 6c 65 2c 20   Release(table, 
356a0 69 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20  iSavepoint);..  
356b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
356c0 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
356d0 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20  Exception e) /* 
356e0 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74 63 68  NOTE: Must catch
356f0 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20   ALL. */..      
35700 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
35710 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c           SetTabl
35720 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20 65 2e  eError(pVtab, e.
35730 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20  ToString());..  
35740 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
35750 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
35760 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
35770 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20  e.Error;..      
35780 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
35790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
357e0 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
357f0 45 72 72 6f 72 43 6f 64 65 20 78 52 6f 6c 6c 62  ErrorCode xRollb
35800 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20 20 20 20  ackTo(..        
35810 20 20 20 20 49 6e 74 50 74 72 20 70 56 74 61 62      IntPtr pVtab
35820 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
35830 6e 74 20 69 53 61 76 65 70 6f 69 6e 74 0d 0a 20  nt iSavepoint.. 
35840 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
35850 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
35860 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
35870 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
35880 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56           SQLiteV
35890 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c  irtualTable tabl
358a0 65 20 3d 20 54 61 62 6c 65 46 72 6f 6d 49 6e 74  e = TableFromInt
358b0 50 74 72 28 70 56 74 61 62 29 3b 0d 0a 0d 0a 20  Ptr(pVtab);.... 
358c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
358d0 66 20 28 74 61 62 6c 65 20 21 3d 20 6e 75 6c 6c  f (table != null
358e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
358f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 52 6f         return Ro
35900 6c 6c 62 61 63 6b 54 6f 28 74 61 62 6c 65 2c 20  llbackTo(table, 
35910 69 53 61 76 65 70 6f 69 6e 74 29 3b 0d 0a 20 20  iSavepoint);..  
35920 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
35930 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
35940 45 78 63 65 70 74 69 6f 6e 20 65 29 20 2f 2a 20  Exception e) /* 
35950 4e 4f 54 45 3a 20 4d 75 73 74 20 63 61 74 63 68  NOTE: Must catch
35960 20 41 4c 4c 2e 20 2a 2f 0d 0a 20 20 20 20 20 20   ALL. */..      
35970 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
35980 20 20 20 20 20 20 20 20 20 53 65 74 54 61 62 6c           SetTabl
35990 65 45 72 72 6f 72 28 70 56 74 61 62 2c 20 65 2e  eError(pVtab, e.
359a0 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20  ToString());..  
359b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
359c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
359d0 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  n SQLiteErrorCod
359e0 65 2e 45 72 72 6f 72 3b 0d 0a 20 20 20 20 20 20  e.Error;..      
359f0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
35a00 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
35a10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
35a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
35a60 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53        #region IS
35a70 51 4c 69 74 65 4d 61 6e 61 67 65 64 4d 6f 64 75  QLiteManagedModu
35a80 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  le Members..    
35a90 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
35aa0 20 64 65 63 6c 61 72 65 64 3b 0d 0a 20 20 20 20   declared;..    
35ab0 20 20 20 20 70 75 62 6c 69 63 20 76 69 72 74 75      public virtu
35ac0 61 6c 20 62 6f 6f 6c 20 44 65 63 6c 61 72 65 64  al bool Declared
35ad0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
35ae0 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43           get { C
35af0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
35b00 72 65 74 75 72 6e 20 64 65 63 6c 61 72 65 64 3b  return declared;
35b10 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
35b20 69 6e 74 65 72 6e 61 6c 20 73 65 74 20 7b 20 64  internal set { d
35b30 65 63 6c 61 72 65 64 20 3d 20 76 61 6c 75 65 3b  eclared = value;
35b40 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
35b50 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
35b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ba0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
35bb0 61 74 65 20 73 74 72 69 6e 67 20 6e 61 6d 65 3b  ate string name;
35bc0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
35bd0 20 76 69 72 74 75 61 6c 20 73 74 72 69 6e 67 20   virtual string 
35be0 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Name..        {.
35bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
35c00 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
35c10 28 29 3b 20 72 65 74 75 72 6e 20 6e 61 6d 65 3b  (); return name;
35c20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
35c30 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
35c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
35c90 69 63 20 61 62 73 74 72 61 63 74 20 53 51 4c 69  ic abstract SQLi
35ca0 74 65 45 72 72 6f 72 43 6f 64 65 20 43 72 65 61  teErrorCode Crea
35cb0 74 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te(..           
35cc0 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
35cd0 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20  n connection,.. 
35ce0 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
35cf0 72 20 70 43 6c 69 65 6e 74 44 61 74 61 2c 0d 0a  r pClientData,..
35d00 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
35d10 6e 67 5b 5d 20 61 72 67 75 6d 65 6e 74 73 2c 0d  ng[] arguments,.
35d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66  .            ref
35d30 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
35d40 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20 20 20  ble table,..    
35d50 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
35d60 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20  ng error..      
35d70 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
35d80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
35d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
35dd0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 61 62         public ab
35de0 73 74 72 61 63 74 20 53 51 4c 69 74 65 45 72 72  stract SQLiteErr
35df0 6f 72 43 6f 64 65 20 43 6f 6e 6e 65 63 74 28 0d  orCode Connect(.
35e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
35e10 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f  iteConnection co
35e20 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20  nnection,..     
35e30 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 43         IntPtr pC
35e40 6c 69 65 6e 74 44 61 74 61 2c 0d 0a 20 20 20 20  lientData,..    
35e50 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
35e60 20 61 72 67 75 6d 65 6e 74 73 2c 0d 0a 20 20 20   arguments,..   
35e70 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c           ref SQL
35e80 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20  iteVirtualTable 
35e90 74 61 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20  table,..        
35ea0 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 65      ref string e
35eb0 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rror..          
35ec0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
35ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f10 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
35f20 20 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61     public abstra
35f30 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ct SQLiteErrorCo
35f40 64 65 20 42 65 73 74 49 6e 64 65 78 28 0d 0a 20  de BestIndex(.. 
35f50 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
35f60 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
35f70 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ble,..          
35f80 20 20 53 51 4c 69 74 65 49 6e 64 65 78 20 69 6e    SQLiteIndex in
35f90 64 65 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dex..           
35fa0 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
35fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ff0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
36000 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63    public abstrac
36010 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  t SQLiteErrorCod
36020 65 20 44 69 73 63 6f 6e 6e 65 63 74 28 0d 0a 20  e Disconnect(.. 
36030 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
36040 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
36050 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ble..           
36060 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
36070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
360a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
360b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
360c0 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63    public abstrac
360d0 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  t SQLiteErrorCod
360e0 65 20 44 65 73 74 72 6f 79 28 0d 0a 20 20 20 20  e Destroy(..    
360f0 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69          SQLiteVi
36100 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65  rtualTable table
36110 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  ..            );
36120 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
36130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36170 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
36180 75 62 6c 69 63 20 61 62 73 74 72 61 63 74 20 53  ublic abstract S
36190 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 4f  QLiteErrorCode O
361a0 70 65 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  pen(..          
361b0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
361c0 61 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20 20  able table,..   
361d0 20 20 20 20 20 20 20 20 20 72 65 66 20 53 51 4c           ref SQL
361e0 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
361f0 75 72 73 6f 72 20 63 75 72 73 6f 72 0d 0a 20 20  ursor cursor..  
36200 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a            );....
36210 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
36220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
36260 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
36270 63 20 61 62 73 74 72 61 63 74 20 53 51 4c 69 74  c abstract SQLit
36280 65 45 72 72 6f 72 43 6f 64 65 20 43 6c 6f 73 65  eErrorCode Close
36290 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  (..            S
362a0 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c  QLiteVirtualTabl
362b0 65 43 75 72 73 6f 72 20 63 75 72 73 6f 72 0d 0a  eCursor cursor..
362c0 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
362d0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
362e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
362f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36320 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
36330 6c 69 63 20 61 62 73 74 72 61 63 74 20 53 51 4c  lic abstract SQL
36340 69 74 65 45 72 72 6f 72 43 6f 64 65 20 46 69 6c  iteErrorCode Fil
36350 74 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ter(..          
36360 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
36370 61 62 6c 65 43 75 72 73 6f 72 20 63 75 72 73 6f  ableCursor curso
36380 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
36390 69 6e 74 20 69 6e 64 65 78 4e 75 6d 62 65 72 2c  int indexNumber,
363a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
363b0 72 69 6e 67 20 69 6e 64 65 78 53 74 72 69 6e 67  ring indexString
363c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ,..            S
363d0 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20 76 61 6c  QLiteValue[] val
363e0 75 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ues..           
363f0 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
36400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36440 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
36450 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63    public abstrac
36460 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  t SQLiteErrorCod
36470 65 20 4e 65 78 74 28 0d 0a 20 20 20 20 20 20 20  e Next(..       
36480 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74 75       SQLiteVirtu
36490 61 6c 54 61 62 6c 65 43 75 72 73 6f 72 20 63 75  alTableCursor cu
364a0 72 73 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rsor..          
364b0 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
364c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36500 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
36510 20 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61     public abstra
36520 63 74 20 62 6f 6f 6c 20 45 6f 66 28 0d 0a 20 20  ct bool Eof(..  
36530 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
36540 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72 73  VirtualTableCurs
36550 6f 72 20 63 75 72 73 6f 72 0d 0a 20 20 20 20 20  or cursor..     
36560 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20         );....   
36570 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
36580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
365a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
365b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
365c0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 61          public a
365d0 62 73 74 72 61 63 74 20 53 51 4c 69 74 65 45 72  bstract SQLiteEr
365e0 72 6f 72 43 6f 64 65 20 43 6f 6c 75 6d 6e 28 0d  rorCode Column(.
365f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
36600 69 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43  iteVirtualTableC
36610 75 72 73 6f 72 20 63 75 72 73 6f 72 2c 0d 0a 20  ursor cursor,.. 
36620 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
36630 65 43 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74  eContext context
36640 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ,..            i
36650 6e 74 20 69 6e 64 65 78 0d 0a 20 20 20 20 20 20  nt index..      
36660 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
36670 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
36680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
366a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
366b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
366c0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 61 62         public ab
366d0 73 74 72 61 63 74 20 53 51 4c 69 74 65 45 72 72  stract SQLiteErr
366e0 6f 72 43 6f 64 65 20 52 6f 77 49 64 28 0d 0a 20  orCode RowId(.. 
366f0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
36700 65 56 69 72 74 75 61 6c 54 61 62 6c 65 43 75 72  eVirtualTableCur
36710 73 6f 72 20 63 75 72 73 6f 72 2c 0d 0a 20 20 20  sor cursor,..   
36720 20 20 20 20 20 20 20 20 20 72 65 66 20 6c 6f 6e           ref lon
36730 67 20 72 6f 77 49 64 0d 0a 20 20 20 20 20 20 20  g rowId..       
36740 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20       );....     
36750 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
36760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
367a0 20 20 20 20 20 20 70 75 62 6c 69 63 20 61 62 73        public abs
367b0 74 72 61 63 74 20 53 51 4c 69 74 65 45 72 72 6f  tract SQLiteErro
367c0 72 43 6f 64 65 20 55 70 64 61 74 65 28 0d 0a 20  rCode Update(.. 
367d0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
367e0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
367f0 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ble,..          
36800 20 20 53 51 4c 69 74 65 56 61 6c 75 65 5b 5d 20    SQLiteValue[] 
36810 76 61 6c 75 65 73 2c 0d 0a 20 20 20 20 20 20 20  values,..       
36820 20 20 20 20 20 72 65 66 20 6c 6f 6e 67 20 72 6f       ref long ro
36830 77 49 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  wId..           
36840 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f   );....        /
36850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36890 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
368a0 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63    public abstrac
368b0 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  t SQLiteErrorCod
368c0 65 20 42 65 67 69 6e 28 0d 0a 20 20 20 20 20 20  e Begin(..      
368d0 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
368e0 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 0d 0a  ualTable table..
368f0 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a              );..
36900 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
36910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36950 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
36960 6c 69 63 20 61 62 73 74 72 61 63 74 20 53 51 4c  lic abstract SQL
36970 69 74 65 45 72 72 6f 72 43 6f 64 65 20 53 79 6e  iteErrorCode Syn
36980 63 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  c(..            
36990 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61 62  SQLiteVirtualTab
369a0 6c 65 20 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  le table..      
369b0 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20        );....    
369c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
369d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
369e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
369f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
36a10 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 61 62         public ab
36a20 73 74 72 61 63 74 20 53 51 4c 69 74 65 45 72 72  stract SQLiteErr
36a30 6f 72 43 6f 64 65 20 43 6f 6d 6d 69 74 28 0d 0a  orCode Commit(..
36a40 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
36a50 74 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74  teVirtualTable t
36a60 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20  able..          
36a70 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20    );....        
36a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ac0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
36ad0 20 20 20 70 75 62 6c 69 63 20 61 62 73 74 72 61     public abstra
36ae0 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ct SQLiteErrorCo
36af0 64 65 20 52 6f 6c 6c 62 61 63 6b 28 0d 0a 20 20  de Rollback(..  
36b00 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
36b10 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61 62  VirtualTable tab
36b20 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
36b30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
36b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b80 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
36b90 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74   public abstract
36ba0 20 62 6f 6f 6c 20 46 69 6e 64 46 75 6e 63 74 69   bool FindFuncti
36bb0 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
36bc0 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54 61   SQLiteVirtualTa
36bd0 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20 20 20  ble table,..    
36be0 20 20 20 20 20 20 20 20 69 6e 74 20 61 72 67 75          int argu
36bf0 6d 65 6e 74 43 6f 75 6e 74 2c 0d 0a 20 20 20 20  mentCount,..    
36c00 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
36c10 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
36c20 20 20 72 65 66 20 53 51 4c 69 74 65 46 75 6e 63    ref SQLiteFunc
36c30 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 2c 0d 0a  tion function,..
36c40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
36c50 49 6e 74 50 74 72 20 70 43 6c 69 65 6e 74 44 61  IntPtr pClientDa
36c60 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ta..            
36c70 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  );....        //
36c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36cc0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
36cd0 20 70 75 62 6c 69 63 20 61 62 73 74 72 61 63 74   public abstract
36ce0 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
36cf0 20 52 65 6e 61 6d 65 28 0d 0a 20 20 20 20 20 20   Rename(..      
36d00 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72 74        SQLiteVirt
36d10 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c 0d  ualTable table,.
36d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
36d30 69 6e 67 20 6e 65 77 4e 61 6d 65 0d 0a 20 20 20  ing newName..   
36d40 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20           );.... 
36d50 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
36d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
36da0 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
36db0 20 61 62 73 74 72 61 63 74 20 53 51 4c 69 74 65   abstract SQLite
36dc0 45 72 72 6f 72 43 6f 64 65 20 53 61 76 65 70 6f  ErrorCode Savepo
36dd0 69 6e 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  int(..          
36de0 20 20 53 51 4c 69 74 65 56 69 72 74 75 61 6c 54    SQLiteVirtualT
36df0 61 62 6c 65 20 74 61 62 6c 65 2c 0d 0a 20 20 20  able table,..   
36e00 20 20 20 20 20 20 20 20 20 69 6e 74 20 73 61 76           int sav
36e10 65 70 6f 69 6e 74 0d 0a 20 20 20 20 20 20 20 20  epoint..        
36e20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20      );....      
36e30 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
36e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
36e80 20 20 20 20 20 70 75 62 6c 69 63 20 61 62 73 74       public abst
36e90 72 61 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72  ract SQLiteError
36ea0 43 6f 64 65 20 52 65 6c 65 61 73 65 28 0d 0a 20  Code Release(.. 
36eb0 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
36ec0 65 56 69 72 74 75 61 6c 54 61 62 6c 65 20 74 61  eVirtualTable ta
36ed0 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ble,..          
36ee0 20 20 69 6e 74 20 73 61 76 65 70 6f 69 6e 74 0d    int savepoint.
36ef0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d  .            );.
36f00 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
36f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f50 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
36f60 62 6c 69 63 20 61 62 73 74 72 61 63 74 20 53 51  blic abstract SQ
36f70 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 6f  LiteErrorCode Ro
36f80 6c 6c 62 61 63 6b 54 6f 28 0d 0a 20 20 20 20 20  llbackTo(..     
36f90 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 69 72         SQLiteVir
36fa0 74 75 61 6c 54 61 62 6c 65 20 74 61 62 6c 65 2c  tualTable table,
36fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
36fc0 74 20 73 61 76 65 70 6f 69 6e 74 0d 0a 20 20 20  t savepoint..   
36fd0 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 20 20 20           );..   
36fe0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
36ff0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
37000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37040 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
37050 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c  egion IDisposabl
37060 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  e Members..     
37070 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44     public void D
37080 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 20 20  ispose()..      
37090 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
370a0 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
370b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 43 2e  .            GC.
370c0 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65  SuppressFinalize
370d0 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20  (this);..       
370e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
370f0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
37100 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
37110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37140 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
37150 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69       #region IDi
37160 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72  sposable "Patter
37170 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  n" Members..    
37180 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
37190 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20   disposed;..    
371a0 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
371b0 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
371c0 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
371d0 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52        {..#if THR
371e0 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a  OW_ON_DISPOSED..
371f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
37200 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
37210 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
37220 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
37230 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73  new ObjectDispos
37240 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20  edException(..  
37250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37260 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65 4d    typeof(SQLiteM
37270 6f 64 75 6c 65 29 2e 4e 61 6d 65 29 3b 0d 0a 20  odule).Name);.. 
37280 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
37290 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
372a0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
372b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
37300 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
37310 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f  void Dispose(boo
37320 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20  l disposing)..  
37330 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
37340 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
37350 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
37360 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
37370 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73      //if (dispos
37380 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
37390 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20        //{..     
373a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
373b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
373c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
373d0 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
373e0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20         //    // 
373f0 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20  dispose managed 
37400 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
37410 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
37420 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f     //    ///////
37430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
37450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
37460 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  /}....          
37470 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
37480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
374a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
374b0 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67   release unmanag
374c0 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
374d0 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
374e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
374f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
37510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37520 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
37530 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
37540 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
37550 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
37560 73 71 6c 69 74 65 33 5f 64 69 73 70 6f 73 65 5f  sqlite3_dispose_
37570 6d 6f 64 75 6c 65 28 0d 0a 20 20 20 20 20 20 20  module(..       
37580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37590 20 72 65 66 20 6e 61 74 69 76 65 4d 6f 64 75 6c   ref nativeModul
375a0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
375b0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
375c0 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
375d0 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20  xception e)..   
375e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
375f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37600 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
37610 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
37620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37630 20 20 20 20 20 20 20 20 69 66 20 28 4c 6f 67 45          if (LogE
37640 78 63 65 70 74 69 6f 6e 73 29 0d 0a 20 20 20 20  xceptions)..    
37650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37660 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
37670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37680 20 20 20 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67     SQLiteLog.Log
37690 4d 65 73 73 61 67 65 28 53 51 4c 69 74 65 42 61  Message(SQLiteBa
376a0 73 65 2e 43 4f 52 5f 45 5f 45 58 43 45 50 54 49  se.COR_E_EXCEPTI
376b0 4f 4e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ON,..           
376c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
376d0 20 20 20 20 20 53 74 72 69 6e 67 2e 46 6f 72 6d       String.Form
376e0 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43  at(CultureInfo.C
376f0 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
37700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37720 22 43 61 75 67 68 74 20 65 78 63 65 70 74 69 6f  "Caught exceptio
37730 6e 20 69 6e 20 5c 22 44 69 73 70 6f 73 65 5c 22  n in \"Dispose\"
37740 20 6d 65 74 68 6f 64 3a 20 7b 30 7d 22 2c 0d 0a   method: {0}",..
37750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37770 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  e)); /* throw */
37780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37790 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
377a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
377b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
377c0 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
377d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
377e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
377f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
37800 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
37810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37820 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
37830 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
37840 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73            dispos
37850 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
37860 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
37870 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
37880 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
37890 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
378a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
378b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
378c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
378d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
378e0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
378f0 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20  estructor..     
37900 20 20 20 7e 53 51 4c 69 74 65 4d 6f 64 75 6c 65     ~SQLiteModule
37910 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
37920 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
37930 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20  se(false);..    
37940 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
37950 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d  endregion..    }
37960 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
37970 0d 0a 7d 0d 0a                                   ..}..