System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 0e9e23c1c5953faf2c577b540b74af8700da388e:


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 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
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 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67 20  ystem;..  using 
0160: 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f  System.Collectio
0170: 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a 0d 0a 23  ns.Generic;....#
0180: 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
0190: 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
01a0: 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75   using System.Ru
01b0: 6e 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65 72  ntime.InteropSer
01c0: 76 69 63 65 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a  vices;..#endif..
01d0: 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
01e0: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 69 6e  >..  /// This in
01f0: 74 65 72 6e 61 6c 20 63 6c 61 73 73 20 70 72 6f  ternal class pro
0200: 76 69 64 65 73 20 74 68 65 20 66 6f 75 6e 64 61  vides the founda
0210: 74 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65 20 73  tion of SQLite s
0220: 75 70 70 6f 72 74 2e 20 20 49 74 20 64 65 66 69  upport.  It defi
0230: 6e 65 73 20 61 6c 6c 20 74 68 65 20 61 62 73 74  nes all the abst
0240: 72 61 63 74 20 6d 65 6d 62 65 72 73 20 6e 65 65  ract members nee
0250: 64 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  ded to implement
0260: 0d 0a 20 20 2f 2f 2f 20 61 20 53 51 4c 69 74 65  ..  /// a SQLite
0270: 20 64 61 74 61 20 70 72 6f 76 69 64 65 72 2c 20   data provider, 
0280: 61 6e 64 20 69 6e 68 65 72 69 74 73 20 66 72 6f  and inherits fro
0290: 6d 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 20  m SQLiteConvert 
02a0: 77 68 69 63 68 20 61 6c 6c 6f 77 73 20 66 6f 72  which allows for
02b0: 20 73 69 6d 70 6c 65 20 74 72 61 6e 73 6c 61 74   simple translat
02c0: 69 6f 6e 73 20 6f 66 20 73 74 72 69 6e 67 20 74  ions of string t
02d0: 6f 20 61 6e 64 20 66 72 6f 6d 20 53 51 4c 69 74  o and from SQLit
02e0: 65 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  e...  /// </summ
02f0: 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ary>..  internal
0300: 20 61 62 73 74 72 61 63 74 20 63 6c 61 73 73 20   abstract class 
0310: 53 51 4c 69 74 65 42 61 73 65 20 3a 20 53 51 4c  SQLiteBase : SQL
0320: 69 74 65 43 6f 6e 76 65 72 74 2c 20 49 44 69 73  iteConvert, IDis
0330: 70 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a 20 20  posable..  {..  
0340: 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
0350: 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20  e Constants..   
0360: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
0370: 20 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f      /// The erro
0380: 72 20 63 6f 64 65 20 75 73 65 64 20 66 6f 72 20  r code used for 
0390: 6c 6f 67 67 69 6e 67 20 65 78 63 65 70 74 69 6f  logging exceptio
03a0: 6e 73 20 63 61 75 67 68 74 20 69 6e 20 75 73 65  ns caught in use
03b0: 72 2d 70 72 6f 76 69 64 65 64 0d 0a 20 20 20 20  r-provided..    
03c0: 2f 2f 2f 20 63 6f 64 65 2e 0d 0a 20 20 20 20 2f  /// code...    /
03d0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
03e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
03f0: 74 20 69 6e 74 20 43 4f 52 5f 45 5f 45 58 43 45  t int COR_E_EXCE
0400: 50 54 49 4f 4e 20 3d 20 75 6e 63 68 65 63 6b 65  PTION = unchecke
0410: 64 28 28 69 6e 74 29 30 78 38 30 31 33 31 35 30  d((int)0x8013150
0420: 30 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67  0);..    #endreg
0430: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
0440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0480: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 69 6e 74 65  ////....    inte
0490: 72 6e 61 6c 20 53 51 4c 69 74 65 42 61 73 65 28  rnal SQLiteBase(
04a0: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
04b0: 73 20 66 6d 74 2c 20 44 61 74 65 54 69 6d 65 4b  s fmt, DateTimeK
04c0: 69 6e 64 20 6b 69 6e 64 2c 20 73 74 72 69 6e 67  ind kind, string
04d0: 20 66 6d 74 53 74 72 69 6e 67 29 0d 0a 20 20 20   fmtString)..   
04e0: 20 20 20 3a 20 62 61 73 65 28 66 6d 74 2c 20 6b     : base(fmt, k
04f0: 69 6e 64 2c 20 66 6d 74 53 74 72 69 6e 67 29 20  ind, fmtString) 
0500: 7b 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  { }....    /// <
0510: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
0520: 2f 20 52 65 74 75 72 6e 73 20 61 20 73 74 72 69  / Returns a stri
0530: 6e 67 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20  ng representing 
0540: 74 68 65 20 61 63 74 69 76 65 20 76 65 72 73 69  the active versi
0550: 6f 6e 20 6f 66 20 53 51 4c 69 74 65 0d 0a 20 20  on of SQLite..  
0560: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0570: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
0580: 62 73 74 72 61 63 74 20 73 74 72 69 6e 67 20 56  bstract string V
0590: 65 72 73 69 6f 6e 20 7b 20 67 65 74 3b 20 7d 0d  ersion { get; }.
05a0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
05b0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75  y>..    /// Retu
05c0: 72 6e 73 20 61 6e 20 69 6e 74 65 67 65 72 20 72  rns an integer r
05d0: 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20  epresenting the 
05e0: 61 63 74 69 76 65 20 76 65 72 73 69 6f 6e 20 6f  active version o
05f0: 66 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f  f SQLite..    //
0600: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
0610: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
0620: 61 63 74 20 69 6e 74 20 56 65 72 73 69 6f 6e 4e  act int VersionN
0630: 75 6d 62 65 72 20 7b 20 67 65 74 3b 20 7d 0d 0a  umber { get; }..
0640: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0650: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72  >..    /// Retur
0660: 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  ns non-zero if t
0670: 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  his connection t
0680: 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  o the database i
0690: 73 20 72 65 61 64 2d 6f 6e 6c 79 2e 0d 0a 20 20  s read-only...  
06a0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
06b0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
06c0: 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 52  bstract bool IsR
06d0: 65 61 64 4f 6e 6c 79 28 73 74 72 69 6e 67 20 6e  eadOnly(string n
06e0: 61 6d 65 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ame);..    /// <
06f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
0700: 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 72 6f  / Returns the ro
0710: 77 69 64 20 6f 66 20 74 68 65 20 6d 6f 73 74 20  wid of the most 
0720: 72 65 63 65 6e 74 20 73 75 63 63 65 73 73 66 75  recent successfu
0730: 6c 20 49 4e 53 45 52 54 20 69 6e 74 6f 20 74 68  l INSERT into th
0740: 65 20 64 61 74 61 62 61 73 65 20 66 72 6f 6d 20  e database from 
0750: 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  this connection.
0760: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
0770: 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
0780: 61 6c 20 61 62 73 74 72 61 63 74 20 6c 6f 6e 67  al abstract long
0790: 20 4c 61 73 74 49 6e 73 65 72 74 52 6f 77 49 64   LastInsertRowId
07a0: 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20 2f   { get; }..    /
07b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
07c0: 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68    /// Returns th
07d0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 68 61 6e  e number of chan
07e0: 67 65 73 20 74 68 65 20 6c 61 73 74 20 65 78 65  ges the last exe
07f0: 63 75 74 69 6e 67 20 69 6e 73 65 72 74 2f 75 70  cuting insert/up
0800: 64 61 74 65 20 63 61 75 73 65 64 2e 0d 0a 20 20  date caused...  
0810: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0820: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
0830: 62 73 74 72 61 63 74 20 69 6e 74 20 43 68 61 6e  bstract int Chan
0840: 67 65 73 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20  ges { get; }..  
0850: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0860: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
0870: 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 6d   the amount of m
0880: 65 6d 6f 72 79 20 28 69 6e 20 62 79 74 65 73 29  emory (in bytes)
0890: 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73   currently in us
08a0: 65 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20  e by the SQLite 
08b0: 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 20 20 54  core library.  T
08c0: 68 69 73 20 69 73 20 6e 6f 74 20 72 65 61 6c 6c  his is not reall
08d0: 79 20 61 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69  y a per-connecti
08e0: 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 76 61 6c 75  on..    /// valu
08f0: 65 2c 20 69 74 20 69 73 20 67 6c 6f 62 61 6c 20  e, it is global 
0900: 74 6f 20 74 68 65 20 70 72 6f 63 65 73 73 2e 0d  to the process..
0910: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0920: 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ry>..    interna
0930: 6c 20 61 62 73 74 72 61 63 74 20 6c 6f 6e 67 20  l abstract long 
0940: 4d 65 6d 6f 72 79 55 73 65 64 20 7b 20 67 65 74  MemoryUsed { get
0950: 3b 20 7d 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ; }..    /// <su
0960: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
0970: 52 65 74 75 72 6e 73 20 74 68 65 20 6d 61 78 69  Returns the maxi
0980: 6d 75 6d 20 61 6d 6f 75 6e 74 20 6f 66 20 6d 65  mum amount of me
0990: 6d 6f 72 79 20 28 69 6e 20 62 79 74 65 73 29 20  mory (in bytes) 
09a0: 75 73 65 64 20 62 79 20 74 68 65 20 53 51 4c 69  used by the SQLi
09b0: 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20  te core library 
09c0: 73 69 6e 63 65 20 74 68 65 20 68 69 67 68 2d 77  since the high-w
09d0: 61 74 65 72 20 6d 61 72 6b 20 77 61 73 20 6c 61  ater mark was la
09e0: 73 74 20 72 65 73 65 74 2e 0d 0a 20 20 20 20 2f  st reset...    /
09f0: 2f 2f 20 54 68 69 73 20 69 73 20 6e 6f 74 20 72  // This is not r
0a00: 65 61 6c 6c 79 20 61 20 70 65 72 2d 63 6f 6e 6e  eally a per-conn
0a10: 65 63 74 69 6f 6e 20 76 61 6c 75 65 2c 20 69 74  ection value, it
0a20: 20 69 73 20 67 6c 6f 62 61 6c 20 74 6f 20 74 68   is global to th
0a30: 65 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20  e process...    
0a40: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0a50: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
0a60: 74 72 61 63 74 20 6c 6f 6e 67 20 4d 65 6d 6f 72  tract long Memor
0a70: 79 48 69 67 68 77 61 74 65 72 20 7b 20 67 65 74  yHighwater { get
0a80: 3b 20 7d 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ; }..    /// <su
0a90: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
0aa0: 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f  Returns non-zero
0ab0: 20 69 66 20 74 68 65 20 75 6e 64 65 72 6c 79 69   if the underlyi
0ac0: 6e 67 20 6e 61 74 69 76 65 20 63 6f 6e 6e 65 63  ng native connec
0ad0: 74 69 6f 6e 20 68 61 6e 64 6c 65 20 69 73 20 6f  tion handle is o
0ae0: 77 6e 65 64 20 62 79 20 74 68 69 73 20 69 6e 73  wned by this ins
0af0: 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  tance...    /// 
0b00: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0b10: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
0b20: 74 20 62 6f 6f 6c 20 4f 77 6e 48 61 6e 64 6c 65  t bool OwnHandle
0b30: 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20 2f   { get; }..    /
0b40: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
0b50: 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68    /// Returns th
0b60: 65 20 6c 6f 67 69 63 61 6c 20 6c 69 73 74 20 6f  e logical list o
0b70: 66 20 66 75 6e 63 74 69 6f 6e 73 20 61 73 73 6f  f functions asso
0b80: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73  ciated with this
0b90: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20   connection...  
0ba0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0bb0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
0bc0: 62 73 74 72 61 63 74 20 49 44 69 63 74 69 6f 6e  bstract IDiction
0bd0: 61 72 79 3c 53 51 4c 69 74 65 46 75 6e 63 74 69  ary<SQLiteFuncti
0be0: 6f 6e 41 74 74 72 69 62 75 74 65 2c 20 53 51 4c  onAttribute, SQL
0bf0: 69 74 65 46 75 6e 63 74 69 6f 6e 3e 20 46 75 6e  iteFunction> Fun
0c00: 63 74 69 6f 6e 73 20 7b 20 67 65 74 3b 20 7d 0d  ctions { get; }.
0c10: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0c20: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 65 74 73  y>..    /// Sets
0c30: 20 74 68 65 20 73 74 61 74 75 73 20 6f 66 20 74   the status of t
0c40: 68 65 20 6d 65 6d 6f 72 79 20 75 73 61 67 65 20  he memory usage 
0c50: 74 72 61 63 6b 69 6e 67 20 73 75 62 73 79 73 74  tracking subsyst
0c60: 65 6d 20 69 6e 20 74 68 65 20 53 51 4c 69 74 65  em in the SQLite
0c70: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 2e 20 20   core library.  
0c80: 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 69 73  By default, this
0c90: 20 69 73 20 65 6e 61 62 6c 65 64 2e 0d 0a 20 20   is enabled...  
0ca0: 20 20 2f 2f 2f 20 49 66 20 74 68 69 73 20 69 73    /// If this is
0cb0: 20 64 69 73 61 62 6c 65 64 2c 20 6d 65 6d 6f 72   disabled, memor
0cc0: 79 20 75 73 61 67 65 20 74 72 61 63 6b 69 6e 67  y usage tracking
0cd0: 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 70 65 72   will not be per
0ce0: 66 6f 72 6d 65 64 2e 20 20 54 68 69 73 20 69 73  formed.  This is
0cf0: 20 6e 6f 74 20 72 65 61 6c 6c 79 20 61 20 70 65   not really a pe
0d00: 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 76 61 6c  r-connection val
0d10: 75 65 2c 20 69 74 20 69 73 0d 0a 20 20 20 20 2f  ue, it is..    /
0d20: 2f 2f 20 67 6c 6f 62 61 6c 20 74 6f 20 74 68 65  // global to the
0d30: 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 20 20 2f   process...    /
0d40: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0d50: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
0d60: 6d 65 3d 22 76 61 6c 75 65 22 3e 4e 6f 6e 2d 7a  me="value">Non-z
0d70: 65 72 6f 20 74 6f 20 65 6e 61 62 6c 65 20 6d 65  ero to enable me
0d80: 6d 6f 72 79 20 75 73 61 67 65 20 74 72 61 63 6b  mory usage track
0d90: 69 6e 67 2c 20 7a 65 72 6f 20 6f 74 68 65 72 77  ing, zero otherw
0da0: 69 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ise.</param>..  
0db0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41    /// <returns>A
0dc0: 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
0dd0: 20 72 65 74 75 72 6e 20 63 6f 64 65 20 28 69 2e   return code (i.
0de0: 65 2e 20 7a 65 72 6f 20 66 6f 72 20 73 75 63 63  e. zero for succ
0df0: 65 73 73 20 61 6e 64 20 6e 6f 6e 2d 7a 65 72 6f  ess and non-zero
0e00: 20 66 6f 72 20 66 61 69 6c 75 72 65 29 2e 3c 2f   for failure).</
0e10: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
0e20: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
0e30: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
0e40: 53 65 74 4d 65 6d 6f 72 79 53 74 61 74 75 73 28  SetMemoryStatus(
0e50: 62 6f 6f 6c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  bool value);..  
0e60: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0e70: 0a 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74  .    /// Attempt
0e80: 73 20 74 6f 20 66 72 65 65 20 61 73 20 6d 75 63  s to free as muc
0e90: 68 20 68 65 61 70 20 6d 65 6d 6f 72 79 20 61 73  h heap memory as
0ea0: 20 70 6f 73 73 69 62 6c 65 20 66 6f 72 20 74 68   possible for th
0eb0: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
0ec0: 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ction...    /// 
0ed0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
0ee0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 73  /// <returns>A s
0ef0: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
0f00: 65 74 75 72 6e 20 63 6f 64 65 20 28 69 2e 65 2e  eturn code (i.e.
0f10: 20 7a 65 72 6f 20 66 6f 72 20 73 75 63 63 65 73   zero for succes
0f20: 73 20 61 6e 64 20 6e 6f 6e 2d 7a 65 72 6f 20 66  s and non-zero f
0f30: 6f 72 20 66 61 69 6c 75 72 65 29 2e 3c 2f 72 65  or failure).</re
0f40: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
0f50: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53 51  rnal abstract SQ
0f60: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 52 65  LiteErrorCode Re
0f70: 6c 65 61 73 65 4d 65 6d 6f 72 79 28 29 3b 0d 0a  leaseMemory();..
0f80: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0f90: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 68 75 74 64  >..    /// Shutd
0fa0: 6f 77 6e 20 74 68 65 20 53 51 4c 69 74 65 20 65  own the SQLite e
0fb0: 6e 67 69 6e 65 20 73 6f 20 74 68 61 74 20 69 74  ngine so that it
0fc0: 20 63 61 6e 20 62 65 20 72 65 73 74 61 72 74 65   can be restarte
0fd0: 64 20 77 69 74 68 20 64 69 66 66 65 72 65 6e 74  d with different
0fe0: 20 63 6f 6e 66 69 67 20 6f 70 74 69 6f 6e 73 2e   config options.
0ff0: 0d 0a 20 20 20 20 2f 2f 2f 20 57 65 20 64 65 70  ..    /// We dep
1000: 65 6e 64 20 6f 6e 20 61 75 74 6f 20 69 6e 69 74  end on auto init
1010: 69 61 6c 69 7a 61 74 69 6f 6e 20 74 6f 20 72 65  ialization to re
1020: 63 6f 76 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20  cover...    /// 
1030: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1040: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
1050: 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  t SQLiteErrorCod
1060: 65 20 53 68 75 74 64 6f 77 6e 28 29 3b 0d 0a 20  e Shutdown();.. 
1070: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1080: 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d  ..    /// Determ
1090: 69 6e 65 73 20 69 66 20 74 68 65 20 61 73 73 6f  ines if the asso
10a0: 63 69 61 74 65 64 20 6e 61 74 69 76 65 20 63 6f  ciated native co
10b0: 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 20  nnection handle 
10c0: 69 73 20 6f 70 65 6e 2e 0d 0a 20 20 20 20 2f 2f  is open...    //
10d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10e0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
10f0: 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72  .    /// Non-zer
1100: 6f 20 69 66 20 61 20 64 61 74 61 62 61 73 65 20  o if a database 
1110: 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6f 70  connection is op
1120: 65 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  en...    /// </r
1130: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
1140: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 62  ernal abstract b
1150: 6f 6f 6c 20 49 73 4f 70 65 6e 28 29 3b 0d 0a 20  ool IsOpen();.. 
1160: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1170: 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e  ..    /// Return
1180: 73 20 74 68 65 20 66 75 6c 6c 79 20 71 75 61 6c  s the fully qual
1190: 69 66 69 65 64 20 70 61 74 68 20 61 6e 64 20 66  ified path and f
11a0: 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ile name for the
11b0: 20 63 75 72 72 65 6e 74 6c 79 20 6f 70 65 6e 0d   currently open.
11c0: 0a 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73  .    /// databas
11d0: 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20  e, if any...    
11e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
11f0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1200: 61 6d 65 3d 22 64 62 4e 61 6d 65 22 3e 0d 0a 20  ame="dbName">.. 
1210: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 61 6d 65 20     /// The name 
1220: 6f 66 20 74 68 65 20 61 74 74 61 63 68 65 64 20  of the attached 
1230: 64 61 74 61 62 61 73 65 20 74 6f 20 71 75 65 72  database to quer
1240: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  y...    /// </pa
1250: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
1260: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
1270: 20 54 68 65 20 66 75 6c 6c 79 20 71 75 61 6c 69   The fully quali
1280: 66 69 65 64 20 70 61 74 68 20 61 6e 64 20 66 69  fied path and fi
1290: 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20  le name for the 
12a0: 63 75 72 72 65 6e 74 6c 79 20 6f 70 65 6e 20 64  currently open d
12b0: 61 74 61 62 61 73 65 2c 0d 0a 20 20 20 20 2f 2f  atabase,..    //
12c0: 2f 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 2f  / if any...    /
12d0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
12e0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
12f0: 72 61 63 74 20 73 74 72 69 6e 67 20 47 65 74 46  ract string GetF
1300: 69 6c 65 4e 61 6d 65 28 73 74 72 69 6e 67 20 64  ileName(string d
1310: 62 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 2f 2f 2f  bName);..    ///
1320: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
1330: 2f 2f 2f 20 4f 70 65 6e 73 20 61 20 64 61 74 61  /// Opens a data
1340: 62 61 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  base...    /// <
1350: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1360: 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  // <remarks>..  
1370: 20 20 2f 2f 2f 20 49 6d 70 6c 65 6d 65 6e 74 65    /// Implemente
1380: 72 73 20 73 68 6f 75 6c 64 20 63 61 6c 6c 20 53  rs should call S
1390: 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 2e 42 69  QLiteFunction.Bi
13a0: 6e 64 46 75 6e 63 74 69 6f 6e 73 28 29 20 61 6e  ndFunctions() an
13b0: 64 20 73 61 76 65 20 74 68 65 20 61 72 72 61 79  d save the array
13c0: 20 61 66 74 65 72 20 6f 70 65 6e 69 6e 67 20 61   after opening a
13d0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20   connection..   
13e0: 20 2f 2f 2f 20 74 6f 20 62 69 6e 64 20 61 6c 6c   /// to bind all
13f0: 20 61 74 74 72 69 62 75 74 65 64 20 75 73 65 72   attributed user
1400: 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f  -defined functio
1410: 6e 73 20 61 6e 64 20 63 6f 6c 6c 61 74 69 6e 67  ns and collating
1420: 20 73 65 71 75 65 6e 63 65 73 20 74 6f 20 74 68   sequences to th
1430: 65 20 6e 65 77 20 63 6f 6e 6e 65 63 74 69 6f 6e  e new connection
1440: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d  ...    /// </rem
1450: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  arks>..    /// <
1460: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74 72 46  param name="strF
1470: 69 6c 65 6e 61 6d 65 22 3e 54 68 65 20 66 69 6c  ilename">The fil
1480: 65 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74  ename of the dat
1490: 61 62 61 73 65 20 74 6f 20 6f 70 65 6e 2e 20 20  abase to open.  
14a0: 53 51 4c 69 74 65 20 61 75 74 6f 6d 61 74 69 63  SQLite automatic
14b0: 61 6c 6c 79 20 63 72 65 61 74 65 73 20 69 74 20  ally creates it 
14c0: 69 66 20 69 74 20 64 6f 65 73 6e 27 74 20 65 78  if it doesn't ex
14d0: 69 73 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ist.</param>..  
14e0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
14f0: 65 3d 22 76 66 73 4e 61 6d 65 22 3e 54 68 65 20  e="vfsName">The 
1500: 6e 61 6d 65 20 6f 66 20 74 68 65 20 56 46 53 20  name of the VFS 
1510: 74 6f 20 75 73 65 20 2d 4f 52 2d 20 6e 75 6c 6c  to use -OR- null
1520: 20 74 6f 20 75 73 65 20 74 68 65 20 64 65 66 61   to use the defa
1530: 75 6c 74 20 56 46 53 2e 3c 2f 70 61 72 61 6d 3e  ult VFS.</param>
1540: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
1550: 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f   name="connectio
1560: 6e 46 6c 61 67 73 22 3e 54 68 65 20 66 6c 61 67  nFlags">The flag
1570: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
1580: 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e  h the parent con
1590: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 3c 2f  nection object</
15a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
15b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 70 65  <param name="ope
15c0: 6e 46 6c 61 67 73 22 3e 54 68 65 20 6f 70 65 6e  nFlags">The open
15d0: 20 66 6c 61 67 73 20 74 6f 20 75 73 65 20 77 68   flags to use wh
15e0: 65 6e 20 63 72 65 61 74 69 6e 67 20 74 68 65 20  en creating the 
15f0: 63 6f 6e 6e 65 63 74 69 6f 6e 3c 2f 70 61 72 61  connection</para
1600: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
1610: 61 6d 20 6e 61 6d 65 3d 22 6d 61 78 50 6f 6f 6c  am name="maxPool
1620: 53 69 7a 65 22 3e 54 68 65 20 6d 61 78 69 6d 75  Size">The maximu
1630: 6d 20 73 69 7a 65 20 6f 66 20 74 68 65 20 70 6f  m size of the po
1640: 6f 6c 20 66 6f 72 20 74 68 65 20 67 69 76 65 6e  ol for the given
1650: 20 66 69 6c 65 6e 61 6d 65 3c 2f 70 61 72 61 6d   filename</param
1660: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
1670: 6d 20 6e 61 6d 65 3d 22 75 73 65 50 6f 6f 6c 22  m name="usePool"
1680: 3e 49 66 20 74 72 75 65 2c 20 74 68 65 20 63 6f  >If true, the co
1690: 6e 6e 65 63 74 69 6f 6e 20 63 61 6e 20 62 65 20  nnection can be 
16a0: 70 75 6c 6c 65 64 20 66 72 6f 6d 20 74 68 65 20  pulled from the 
16b0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 6f 6c 3c  connection pool<
16c0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74  /param>..    int
16d0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
16e0: 6f 69 64 20 4f 70 65 6e 28 73 74 72 69 6e 67 20  oid Open(string 
16f0: 73 74 72 46 69 6c 65 6e 61 6d 65 2c 20 73 74 72  strFilename, str
1700: 69 6e 67 20 76 66 73 4e 61 6d 65 2c 20 53 51 4c  ing vfsName, SQL
1710: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
1720: 67 73 20 63 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  gs connectionFla
1730: 67 73 2c 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c  gs, SQLiteOpenFl
1740: 61 67 73 45 6e 75 6d 20 6f 70 65 6e 46 6c 61 67  agsEnum openFlag
1750: 73 2c 20 69 6e 74 20 6d 61 78 50 6f 6f 6c 53 69  s, int maxPoolSi
1760: 7a 65 2c 20 62 6f 6f 6c 20 75 73 65 50 6f 6f 6c  ze, bool usePool
1770: 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  );..    /// <sum
1780: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
1790: 6c 6f 73 65 73 20 74 68 65 20 63 75 72 72 65 6e  loses the curren
17a0: 74 6c 79 2d 6f 70 65 6e 20 64 61 74 61 62 61 73  tly-open databas
17b0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
17c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
17d0: 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f  <remarks>..    /
17e0: 2f 2f 20 41 66 74 65 72 20 74 68 65 20 64 61 74  // After the dat
17f0: 61 62 61 73 65 20 68 61 73 20 62 65 65 6e 20 63  abase has been c
1800: 6c 6f 73 65 64 20 69 6d 70 6c 65 6d 65 74 65 72  losed implemeter
1810: 73 20 73 68 6f 75 6c 64 20 63 61 6c 6c 20 53 51  s should call SQ
1820: 4c 69 74 65 46 75 6e 63 74 69 6f 6e 2e 55 6e 62  LiteFunction.Unb
1830: 69 6e 64 46 75 6e 63 74 69 6f 6e 73 28 29 20 74  indFunctions() t
1840: 6f 20 64 65 61 6c 6c 6f 63 61 74 65 20 61 6c 6c  o deallocate all
1850: 20 69 6e 74 65 72 6f 70 20 61 6c 6c 6f 63 61 74   interop allocat
1860: 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 6d 65 6d 6f  ed..    /// memo
1870: 72 79 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ry associated wi
1880: 74 68 20 74 68 65 20 75 73 65 72 2d 64 65 66 69  th the user-defi
1890: 6e 65 64 20 66 75 6e 63 74 69 6f 6e 73 20 61 6e  ned functions an
18a0: 64 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75  d collating sequ
18b0: 65 6e 63 65 73 20 74 69 65 64 20 74 6f 20 74 68  ences tied to th
18c0: 65 20 63 6c 6f 73 65 64 20 63 6f 6e 6e 65 63 74  e closed connect
18d0: 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ion...    /// </
18e0: 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f  remarks>..    //
18f0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
1900: 69 73 70 6f 73 69 6e 67 22 3e 4e 6f 6e 2d 7a 65  isposing">Non-ze
1910: 72 6f 20 69 66 20 63 6f 6e 6e 65 63 74 69 6f 6e  ro if connection
1920: 20 69 73 20 62 65 69 6e 67 20 64 69 73 70 6f 73   is being dispos
1930: 65 64 2c 20 7a 65 72 6f 20 6f 74 68 65 72 77 69  ed, zero otherwi
1940: 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  se.</param>..   
1950: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
1960: 63 74 20 76 6f 69 64 20 43 6c 6f 73 65 28 62 6f  ct void Close(bo
1970: 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 3b 0d 0a  ol disposing);..
1980: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
1990: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 65 74 73 20  >..    /// Sets 
19a0: 74 68 65 20 62 75 73 79 20 74 69 6d 65 6f 75 74  the busy timeout
19b0: 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69   on the connecti
19c0: 6f 6e 2e 20 20 53 51 4c 69 74 65 43 6f 6d 6d 61  on.  SQLiteComma
19d0: 6e 64 20 77 69 6c 6c 20 63 61 6c 6c 20 74 68 69  nd will call thi
19e0: 73 20 62 65 66 6f 72 65 20 65 78 65 63 75 74 69  s before executi
19f0: 6e 67 20 61 6e 79 20 63 6f 6d 6d 61 6e 64 2e 0d  ng any command..
1a00: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
1a10: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
1a20: 72 61 6d 20 6e 61 6d 65 3d 22 6e 54 69 6d 65 6f  ram name="nTimeo
1a30: 75 74 4d 53 22 3e 54 68 65 20 6e 75 6d 62 65 72  utMS">The number
1a40: 20 6f 66 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73   of milliseconds
1a50: 20 74 6f 20 77 61 69 74 20 62 65 66 6f 72 65 20   to wait before 
1a60: 72 65 74 75 72 6e 69 6e 67 20 53 51 4c 49 54 45  returning SQLITE
1a70: 5f 42 55 53 59 3c 2f 70 61 72 61 6d 3e 0d 0a 20  _BUSY</param>.. 
1a80: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
1a90: 72 61 63 74 20 76 6f 69 64 20 53 65 74 54 69 6d  ract void SetTim
1aa0: 65 6f 75 74 28 69 6e 74 20 6e 54 69 6d 65 6f 75  eout(int nTimeou
1ab0: 74 4d 53 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tMS);..    /// <
1ac0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1ad0: 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 74 65  / Returns the te
1ae0: 78 74 20 6f 66 20 74 68 65 20 6c 61 73 74 20 65  xt of the last e
1af0: 72 72 6f 72 20 69 73 73 75 65 64 20 62 79 20 53  rror issued by S
1b00: 51 4c 69 74 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  QLite..    /// <
1b10: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1b20: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65  // <returns></re
1b30: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
1b40: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74  rnal abstract st
1b50: 72 69 6e 67 20 47 65 74 4c 61 73 74 45 72 72 6f  ring GetLastErro
1b60: 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  r();....    /// 
1b70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1b80: 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 74  // Returns the t
1b90: 65 78 74 20 6f 66 20 74 68 65 20 6c 61 73 74 20  ext of the last 
1ba0: 65 72 72 6f 72 20 69 73 73 75 65 64 20 62 79 20  error issued by 
1bb0: 53 51 4c 69 74 65 20 2d 4f 52 2d 20 74 68 65 20  SQLite -OR- the 
1bc0: 73 70 65 63 69 66 69 65 64 20 64 65 66 61 75 6c  specified defaul
1bd0: 74 20 65 72 72 6f 72 20 74 65 78 74 20 69 66 0d  t error text if.
1be0: 0a 20 20 20 20 2f 2f 2f 20 6e 6f 6e 65 20 69 73  .    /// none is
1bf0: 20 61 76 61 69 6c 61 62 6c 65 20 66 72 6f 6d 20   available from 
1c00: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
1c10: 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f  library...    //
1c20: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1c30: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1c40: 65 3d 22 64 65 66 56 61 6c 75 65 22 3e 0d 0a 20  e="defValue">.. 
1c50: 20 20 20 2f 2f 2f 20 54 68 65 20 65 72 72 6f 72     /// The error
1c60: 20 74 65 78 74 20 74 6f 20 72 65 74 75 72 6e 20   text to return 
1c70: 69 6e 20 74 68 65 20 65 76 65 6e 74 20 74 68 61  in the event tha
1c80: 74 20 6f 6e 65 20 69 73 20 6e 6f 74 20 61 76 61  t one is not ava
1c90: 69 6c 61 62 6c 65 20 66 72 6f 6d 20 74 68 65 20  ilable from the 
1ca0: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
1cb0: 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ary...    /// </
1cc0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
1cd0: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
1ce0: 2f 2f 20 54 68 65 20 65 72 72 6f 72 20 74 65 78  // The error tex
1cf0: 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  t...    /// </re
1d00: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
1d10: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74  rnal abstract st
1d20: 72 69 6e 67 20 47 65 74 4c 61 73 74 45 72 72 6f  ring GetLastErro
1d30: 72 28 73 74 72 69 6e 67 20 64 65 66 56 61 6c 75  r(string defValu
1d40: 65 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  e);....    /// <
1d50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
1d60: 2f 20 57 68 65 6e 20 70 6f 6f 6c 69 6e 67 20 69  / When pooling i
1d70: 73 20 65 6e 61 62 6c 65 64 2c 20 66 6f 72 63 65  s enabled, force
1d80: 20 74 68 69 73 20 63 6f 6e 6e 65 63 74 69 6f 6e   this connection
1d90: 20 74 6f 20 62 65 20 64 69 73 70 6f 73 65 64 20   to be disposed 
1da0: 72 61 74 68 65 72 20 74 68 61 6e 20 72 65 74 75  rather than retu
1db0: 72 6e 65 64 20 74 6f 20 74 68 65 20 70 6f 6f 6c  rned to the pool
1dc0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1dd0: 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
1de0: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
1df0: 20 43 6c 65 61 72 50 6f 6f 6c 28 29 3b 0d 0a 0d   ClearPool();...
1e00: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
1e10: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65 6e  y>..    /// When
1e20: 20 70 6f 6f 6c 69 6e 67 20 69 73 20 65 6e 61 62   pooling is enab
1e30: 6c 65 64 2c 20 72 65 74 75 72 6e 73 20 74 68 65  led, returns the
1e40: 20 6e 75 6d 62 65 72 20 6f 66 20 70 6f 6f 6c 20   number of pool 
1e50: 65 6e 74 72 69 65 73 20 6d 61 74 63 68 69 6e 67  entries matching
1e60: 20 74 68 65 20 63 75 72 72 65 6e 74 20 66 69 6c   the current fil
1e70: 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f  e name...    ///
1e80: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1e90: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68   /// <returns>Th
1ea0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 6f 6f 6c  e number of pool
1eb0: 20 65 6e 74 72 69 65 73 20 6d 61 74 63 68 69 6e   entries matchin
1ec0: 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 66 69  g the current fi
1ed0: 6c 65 20 6e 61 6d 65 2e 3c 2f 72 65 74 75 72 6e  le name.</return
1ee0: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
1ef0: 20 61 62 73 74 72 61 63 74 20 69 6e 74 20 43 6f   abstract int Co
1f00: 75 6e 74 50 6f 6f 6c 28 29 3b 0d 0a 0d 0a 20 20  untPool();....  
1f10: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
1f20: 0a 20 20 20 20 2f 2f 2f 20 50 72 65 70 61 72 65  .    /// Prepare
1f30: 73 20 61 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  s a SQL statemen
1f40: 74 20 66 6f 72 20 65 78 65 63 75 74 69 6f 6e 2e  t for execution.
1f50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
1f60: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
1f70: 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6e 6e 22 3e  aram name="cnn">
1f80: 54 68 65 20 73 6f 75 72 63 65 20 63 6f 6e 6e 65  The source conne
1f90: 63 74 69 6f 6e 20 70 72 65 70 61 72 69 6e 67 20  ction preparing 
1fa0: 74 68 65 20 63 6f 6d 6d 61 6e 64 2e 20 20 43 61  the command.  Ca
1fb0: 6e 20 62 65 20 6e 75 6c 6c 20 66 6f 72 20 61 6e  n be null for an
1fc0: 79 20 63 61 6c 6c 65 72 20 65 78 63 65 70 74 20  y caller except 
1fd0: 4c 49 4e 51 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  LINQ</param>..  
1fe0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1ff0: 65 3d 22 73 74 72 53 71 6c 22 3e 54 68 65 20 53  e="strSql">The S
2000: 51 4c 20 63 6f 6d 6d 61 6e 64 20 74 65 78 74 20  QL command text 
2010: 74 6f 20 70 72 65 70 61 72 65 3c 2f 70 61 72 61  to prepare</para
2020: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
2030: 61 6d 20 6e 61 6d 65 3d 22 70 72 65 76 69 6f 75  am name="previou
2040: 73 22 3e 54 68 65 20 70 72 65 76 69 6f 75 73 20  s">The previous 
2050: 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 61 20 6d  statement in a m
2060: 75 6c 74 69 2d 73 74 61 74 65 6d 65 6e 74 20 63  ulti-statement c
2070: 6f 6d 6d 61 6e 64 2c 20 6f 72 20 6e 75 6c 6c 20  ommand, or null 
2080: 69 66 20 6e 6f 20 70 72 65 76 69 6f 75 73 20 73  if no previous s
2090: 74 61 74 65 6d 65 6e 74 20 65 78 69 73 74 73 3c  tatement exists<
20a0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
20b0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 69   <param name="ti
20c0: 6d 65 6f 75 74 4d 53 22 3e 54 68 65 20 74 69 6d  meoutMS">The tim
20d0: 65 6f 75 74 20 74 6f 20 77 61 69 74 20 62 65 66  eout to wait bef
20e0: 6f 72 65 20 61 62 6f 72 74 69 6e 67 20 74 68 65  ore aborting the
20f0: 20 70 72 65 70 61 72 65 3c 2f 70 61 72 61 6d 3e   prepare</param>
2100: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
2110: 20 6e 61 6d 65 3d 22 73 74 72 52 65 6d 61 69 6e   name="strRemain
2120: 22 3e 54 68 65 20 72 65 6d 61 69 6e 64 65 72 20  ">The remainder 
2130: 6f 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  of the statement
2140: 20 74 68 61 74 20 77 61 73 20 6e 6f 74 20 70 72   that was not pr
2150: 6f 63 65 73 73 65 64 2e 20 20 45 61 63 68 20 63  ocessed.  Each c
2160: 61 6c 6c 20 74 6f 20 70 72 65 70 61 72 65 20 70  all to prepare p
2170: 61 72 73 65 73 20 74 68 65 0d 0a 20 20 20 20 2f  arses the..    /
2180: 2f 2f 20 53 51 4c 20 75 70 20 74 6f 20 74 6f 20  // SQL up to to 
2190: 65 69 74 68 65 72 20 74 68 65 20 65 6e 64 20 6f  either the end o
21a0: 66 20 74 68 65 20 74 65 78 74 20 6f 72 20 74 6f  f the text or to
21b0: 20 74 68 65 20 66 69 72 73 74 20 73 65 6d 69 2d   the first semi-
21c0: 63 6f 6c 6f 6e 20 64 65 6c 69 6d 69 74 65 72 2e  colon delimiter.
21d0: 20 20 54 68 65 20 72 65 6d 61 69 6e 69 6e 67 20    The remaining 
21e0: 74 65 78 74 20 69 73 20 72 65 74 75 72 6e 65 64  text is returned
21f0: 0d 0a 20 20 20 20 2f 2f 2f 20 68 65 72 65 20 66  ..    /// here f
2200: 6f 72 20 61 20 73 75 62 73 65 71 75 65 6e 74 20  or a subsequent 
2210: 63 61 6c 6c 20 74 6f 20 50 72 65 70 61 72 65 28  call to Prepare(
2220: 29 20 75 6e 74 69 6c 20 61 6c 6c 20 74 68 65 20  ) until all the 
2230: 74 65 78 74 20 68 61 73 20 62 65 65 6e 20 70 72  text has been pr
2240: 6f 63 65 73 73 65 64 2e 3c 2f 70 61 72 61 6d 3e  ocessed.</param>
2250: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
2260: 6e 73 3e 52 65 74 75 72 6e 73 20 61 6e 20 69 6e  ns>Returns an in
2270: 69 74 69 61 6c 69 7a 65 64 20 53 51 4c 69 74 65  itialized SQLite
2280: 53 74 61 74 65 6d 65 6e 74 2e 3c 2f 72 65 74 75  Statement.</retu
2290: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
22a0: 61 6c 20 61 62 73 74 72 61 63 74 20 53 51 4c 69  al abstract SQLi
22b0: 74 65 53 74 61 74 65 6d 65 6e 74 20 50 72 65 70  teStatement Prep
22c0: 61 72 65 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63  are(SQLiteConnec
22d0: 74 69 6f 6e 20 63 6e 6e 2c 20 73 74 72 69 6e 67  tion cnn, string
22e0: 20 73 74 72 53 71 6c 2c 20 53 51 4c 69 74 65 53   strSql, SQLiteS
22f0: 74 61 74 65 6d 65 6e 74 20 70 72 65 76 69 6f 75  tatement previou
2300: 73 2c 20 75 69 6e 74 20 74 69 6d 65 6f 75 74 4d  s, uint timeoutM
2310: 53 2c 20 72 65 66 20 73 74 72 69 6e 67 20 73 74  S, ref string st
2320: 72 52 65 6d 61 69 6e 29 3b 0d 0a 20 20 20 20 2f  rRemain);..    /
2330: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
2340: 20 20 2f 2f 2f 20 53 74 65 70 73 20 74 68 72 6f    /// Steps thro
2350: 75 67 68 20 61 20 70 72 65 70 61 72 65 64 20 73  ugh a prepared s
2360: 74 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 2f  tatement...    /
2370: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
2380: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
2390: 6d 65 3d 22 73 74 6d 74 22 3e 54 68 65 20 53 51  me="stmt">The SQ
23a0: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 74 6f  LiteStatement to
23b0: 20 73 74 65 70 20 74 68 72 6f 75 67 68 3c 2f 70   step through</p
23c0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
23d0: 72 65 74 75 72 6e 73 3e 54 72 75 65 20 69 66 20  returns>True if 
23e0: 61 20 72 6f 77 20 77 61 73 20 72 65 74 75 72 6e  a row was return
23f0: 65 64 2c 20 46 61 6c 73 65 20 69 66 20 6e 6f 74  ed, False if not
2400: 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
2410: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
2420: 63 74 20 62 6f 6f 6c 20 53 74 65 70 28 53 51 4c  ct bool Step(SQL
2430: 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d  iteStatement stm
2440: 74 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  t);..    /// <su
2450: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2460: 52 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f  Returns non-zero
2470: 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65   if the specifie
2480: 64 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 72  d statement is r
2490: 65 61 64 2d 6f 6e 6c 79 20 69 6e 20 6e 61 74 75  ead-only in natu
24a0: 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  re...    /// </s
24b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
24c0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 74   <param name="st
24d0: 6d 74 22 3e 54 68 65 20 73 74 61 74 65 6d 65 6e  mt">The statemen
24e0: 74 20 74 6f 20 63 68 65 63 6b 2e 3c 2f 70 61 72  t to check.</par
24f0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
2500: 74 75 72 6e 73 3e 54 72 75 65 20 69 66 20 74 68  turns>True if th
2510: 65 20 6f 75 74 65 72 20 71 75 65 72 79 20 69 73  e outer query is
2520: 20 72 65 61 64 2d 6f 6e 6c 79 2e 3c 2f 72 65 74   read-only.</ret
2530: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
2540: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f  nal abstract boo
2550: 6c 20 49 73 52 65 61 64 4f 6e 6c 79 28 53 51 4c  l IsReadOnly(SQL
2560: 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d  iteStatement stm
2570: 74 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  t);..    /// <su
2580: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
2590: 52 65 73 65 74 73 20 61 20 70 72 65 70 61 72 65  Resets a prepare
25a0: 64 20 73 74 61 74 65 6d 65 6e 74 20 73 6f 20 69  d statement so i
25b0: 74 20 63 61 6e 20 62 65 20 65 78 65 63 75 74 65  t can be execute
25c0: 64 20 61 67 61 69 6e 2e 20 20 49 66 20 74 68 65  d again.  If the
25d0: 20 65 72 72 6f 72 20 72 65 74 75 72 6e 65 64 20   error returned 
25e0: 69 73 20 53 51 4c 49 54 45 5f 53 43 48 45 4d 41  is SQLITE_SCHEMA
25f0: 2c 0d 0a 20 20 20 20 2f 2f 2f 20 74 72 61 6e 73  ,..    /// trans
2600: 70 61 72 65 6e 74 6c 79 20 61 74 74 65 6d 70 74  parently attempt
2610: 20 74 6f 20 72 65 62 75 69 6c 64 20 74 68 65 20   to rebuild the 
2620: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 61 6e  SQL statement an
2630: 64 20 74 68 72 6f 77 20 61 6e 20 65 72 72 6f 72  d throw an error
2640: 20 69 66 20 74 68 61 74 20 77 61 73 20 6e 6f 74   if that was not
2650: 20 70 6f 73 73 69 62 6c 65 2e 0d 0a 20 20 20 20   possible...    
2660: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
2670: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
2680: 61 6d 65 3d 22 73 74 6d 74 22 3e 54 68 65 20 73  ame="stmt">The s
2690: 74 61 74 65 6d 65 6e 74 20 74 6f 20 72 65 73 65  tatement to rese
26a0: 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  t</param>..    /
26b0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 52 65 74 75  // <returns>Retu
26c0: 72 6e 73 20 2d 31 20 69 66 20 74 68 65 20 73 63  rns -1 if the sc
26d0: 68 65 6d 61 20 63 68 61 6e 67 65 64 20 77 68 69  hema changed whi
26e0: 6c 65 20 72 65 73 65 74 74 69 6e 67 2c 20 30 20  le resetting, 0 
26f0: 69 66 20 74 68 65 20 72 65 73 65 74 20 77 61 73  if the reset was
2700: 20 73 75 63 65 73 73 66 75 6c 20 6f 72 20 36 20   sucessful or 6 
2710: 28 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 29 20  (SQLITE_LOCKED) 
2720: 69 66 20 74 68 65 20 72 65 73 65 74 20 66 61 69  if the reset fai
2730: 6c 65 64 20 64 75 65 20 74 6f 20 61 20 6c 6f 63  led due to a loc
2740: 6b 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  k</returns>..   
2750: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
2760: 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  ct SQLiteErrorCo
2770: 64 65 20 52 65 73 65 74 28 53 51 4c 69 74 65 53  de Reset(SQLiteS
2780: 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 29 3b 0d  tatement stmt);.
2790: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
27a0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 74  ary>..    /// At
27b0: 74 65 6d 70 74 73 20 74 6f 20 69 6e 74 65 72 72  tempts to interr
27c0: 75 70 74 20 74 68 65 20 71 75 65 72 79 20 63 75  upt the query cu
27d0: 72 72 65 6e 74 6c 79 20 65 78 65 63 75 74 69 6e  rrently executin
27e0: 67 20 6f 6e 20 74 68 65 20 61 73 73 6f 63 69 61  g on the associa
27f0: 74 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 6e 61 74  ted..    /// nat
2800: 69 76 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ive database con
2810: 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  nection...    //
2820: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2830: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
2840: 61 63 74 20 76 6f 69 64 20 43 61 6e 63 65 6c 28  act void Cancel(
2850: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  );....    /// <s
2860: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2870: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 62   This function b
2880: 69 6e 64 73 20 61 20 75 73 65 72 2d 64 65 66 69  inds a user-defi
2890: 6e 65 64 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20  ned function to 
28a0: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  the connection..
28b0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
28c0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
28d0: 72 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69  ram name="functi
28e0: 6f 6e 41 74 74 72 69 62 75 74 65 22 3e 0d 0a 20  onAttribute">.. 
28f0: 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20     /// The <see 
2900: 63 72 65 66 3d 22 53 51 4c 69 74 65 46 75 6e 63  cref="SQLiteFunc
2910: 74 69 6f 6e 41 74 74 72 69 62 75 74 65 22 2f 3e  tionAttribute"/>
2920: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
2930: 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20   containing..   
2940: 20 2f 2f 2f 20 74 68 65 20 6d 65 74 61 64 61 74   /// the metadat
2950: 61 20 66 6f 72 20 74 68 65 20 66 75 6e 63 74 69  a for the functi
2960: 6f 6e 20 74 6f 20 62 65 20 62 6f 75 6e 64 2e 0d  on to be bound..
2970: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
2980: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
2990: 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f 6e  m name="function
29a0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
29b0: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
29c0: 65 46 75 6e 63 74 69 6f 6e 22 2f 3e 20 6f 62 6a  eFunction"/> obj
29d0: 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74 68 61  ect instance tha
29e0: 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65  t implements the
29f0: 0d 0a 20 20 20 20 2f 2f 2f 20 66 75 6e 63 74 69  ..    /// functi
2a00: 6f 6e 20 74 6f 20 62 65 20 62 6f 75 6e 64 2e 0d  on to be bound..
2a10: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
2a20: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
2a30: 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d  m name="flags">.
2a40: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61  .    /// The fla
2a50: 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  gs associated wi
2a60: 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f  th the parent co
2a70: 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e  nnection object.
2a80: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
2a90: 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  m>..    internal
2aa0: 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 42   abstract void B
2ab0: 69 6e 64 46 75 6e 63 74 69 6f 6e 28 53 51 4c 69  indFunction(SQLi
2ac0: 74 65 46 75 6e 63 74 69 6f 6e 41 74 74 72 69 62  teFunctionAttrib
2ad0: 75 74 65 20 66 75 6e 63 74 69 6f 6e 41 74 74 72  ute functionAttr
2ae0: 69 62 75 74 65 2c 20 53 51 4c 69 74 65 46 75 6e  ibute, SQLiteFun
2af0: 63 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 2c 20  ction function, 
2b00: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
2b10: 46 6c 61 67 73 20 66 6c 61 67 73 29 3b 0d 0a 0d  Flags flags);...
2b20: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
2b30: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
2b40: 20 66 75 6e 63 74 69 6f 6e 20 75 6e 62 69 6e 64   function unbind
2b50: 73 20 61 20 75 73 65 72 2d 64 65 66 69 6e 65 64  s a user-defined
2b60: 20 66 75 6e 63 74 69 6f 6e 20 66 72 6f 6d 20 74   function from t
2b70: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  he connection...
2b80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
2b90: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
2ba0: 61 6d 20 6e 61 6d 65 3d 22 66 75 6e 63 74 69 6f  am name="functio
2bb0: 6e 41 74 74 72 69 62 75 74 65 22 3e 0d 0a 20 20  nAttribute">..  
2bc0: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
2bd0: 72 65 66 3d 22 53 51 4c 69 74 65 46 75 6e 63 74  ref="SQLiteFunct
2be0: 69 6f 6e 41 74 74 72 69 62 75 74 65 22 2f 3e 20  ionAttribute"/> 
2bf0: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
2c00: 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20  containing..    
2c10: 2f 2f 2f 20 74 68 65 20 6d 65 74 61 64 61 74 61  /// the metadata
2c20: 20 66 6f 72 20 74 68 65 20 66 75 6e 63 74 69 6f   for the functio
2c30: 6e 20 74 6f 20 62 65 20 75 6e 62 6f 75 6e 64 2e  n to be unbound.
2c40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
2c50: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
2c60: 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
2c70: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c  ..    /// The fl
2c80: 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ags associated w
2c90: 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20 63  ith the parent c
2ca0: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74  onnection object
2cb0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
2cc0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
2cd0: 74 75 72 6e 73 3e 4e 6f 6e 2d 7a 65 72 6f 20 69  turns>Non-zero i
2ce0: 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 77  f the function w
2cf0: 61 73 20 75 6e 62 6f 75 6e 64 2e 3c 2f 72 65 74  as unbound.</ret
2d00: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
2d10: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f  nal abstract boo
2d20: 6c 20 55 6e 62 69 6e 64 46 75 6e 63 74 69 6f 6e  l UnbindFunction
2d30: 28 53 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 41  (SQLiteFunctionA
2d40: 74 74 72 69 62 75 74 65 20 66 75 6e 63 74 69 6f  ttribute functio
2d50: 6e 41 74 74 72 69 62 75 74 65 2c 20 53 51 4c 69  nAttribute, SQLi
2d60: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
2d70: 73 20 66 6c 61 67 73 29 3b 0d 0a 0d 0a 20 20 20  s flags);....   
2d80: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
2d90: 63 74 20 76 6f 69 64 20 42 69 6e 64 5f 44 6f 75  ct void Bind_Dou
2da0: 62 6c 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d  ble(SQLiteStatem
2db0: 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69 74 65  ent stmt, SQLite
2dc0: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
2dd0: 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e 64 65 78  flags, int index
2de0: 2c 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 29 3b  , double value);
2df0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
2e00: 62 73 74 72 61 63 74 20 76 6f 69 64 20 42 69 6e  bstract void Bin
2e10: 64 5f 49 6e 74 33 32 28 53 51 4c 69 74 65 53 74  d_Int32(SQLiteSt
2e20: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51  atement stmt, SQ
2e30: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
2e40: 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74 20 69  ags flags, int i
2e50: 6e 64 65 78 2c 20 49 6e 74 33 32 20 76 61 6c 75  ndex, Int32 valu
2e60: 65 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  e);..    interna
2e70: 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20  l abstract void 
2e80: 42 69 6e 64 5f 55 49 6e 74 33 32 28 53 51 4c 69  Bind_UInt32(SQLi
2e90: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
2ea0: 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  , SQLiteConnecti
2eb0: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69  onFlags flags, i
2ec0: 6e 74 20 69 6e 64 65 78 2c 20 55 49 6e 74 33 32  nt index, UInt32
2ed0: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e   value);..    in
2ee0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
2ef0: 76 6f 69 64 20 42 69 6e 64 5f 49 6e 74 36 34 28  void Bind_Int64(
2f00: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
2f10: 73 74 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e 6e  stmt, SQLiteConn
2f20: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
2f30: 73 2c 20 69 6e 74 20 69 6e 64 65 78 2c 20 49 6e  s, int index, In
2f40: 74 36 34 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20  t64 value);..   
2f50: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
2f60: 63 74 20 76 6f 69 64 20 42 69 6e 64 5f 55 49 6e  ct void Bind_UIn
2f70: 74 36 34 28 53 51 4c 69 74 65 53 74 61 74 65 6d  t64(SQLiteStatem
2f80: 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69 74 65  ent stmt, SQLite
2f90: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
2fa0: 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e 64 65 78  flags, int index
2fb0: 2c 20 55 49 6e 74 36 34 20 76 61 6c 75 65 29 3b  , UInt64 value);
2fc0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
2fd0: 62 73 74 72 61 63 74 20 76 6f 69 64 20 42 69 6e  bstract void Bin
2fe0: 64 5f 42 6f 6f 6c 65 61 6e 28 53 51 4c 69 74 65  d_Boolean(SQLite
2ff0: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
3000: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
3010: 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74  Flags flags, int
3020: 20 69 6e 64 65 78 2c 20 62 6f 6f 6c 20 76 61 6c   index, bool val
3030: 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ue);..    intern
3040: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
3050: 20 42 69 6e 64 5f 54 65 78 74 28 53 51 4c 69 74   Bind_Text(SQLit
3060: 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c  eStatement stmt,
3070: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
3080: 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69 6e  nFlags flags, in
3090: 74 20 69 6e 64 65 78 2c 20 73 74 72 69 6e 67 20  t index, string 
30a0: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74  value);..    int
30b0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
30c0: 6f 69 64 20 42 69 6e 64 5f 42 6c 6f 62 28 53 51  oid Bind_Blob(SQ
30d0: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
30e0: 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  mt, SQLiteConnec
30f0: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c  tionFlags flags,
3100: 20 69 6e 74 20 69 6e 64 65 78 2c 20 62 79 74 65   int index, byte
3110: 5b 5d 20 62 6c 6f 62 44 61 74 61 29 3b 0d 0a 20  [] blobData);.. 
3120: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3130: 72 61 63 74 20 76 6f 69 64 20 42 69 6e 64 5f 44  ract void Bind_D
3140: 61 74 65 54 69 6d 65 28 53 51 4c 69 74 65 53 74  ateTime(SQLiteSt
3150: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51  atement stmt, SQ
3160: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
3170: 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74 20 69  ags flags, int i
3180: 6e 64 65 78 2c 20 44 61 74 65 54 69 6d 65 20 64  ndex, DateTime d
3190: 74 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  t);..    interna
31a0: 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20  l abstract void 
31b0: 42 69 6e 64 5f 4e 75 6c 6c 28 53 51 4c 69 74 65  Bind_Null(SQLite
31c0: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
31d0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
31e0: 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69 6e 74  Flags flags, int
31f0: 20 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20   index);....    
3200: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
3210: 74 20 69 6e 74 20 42 69 6e 64 5f 50 61 72 61 6d  t int Bind_Param
3220: 43 6f 75 6e 74 28 53 51 4c 69 74 65 53 74 61 74  Count(SQLiteStat
3230: 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c 69  ement stmt, SQLi
3240: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
3250: 73 20 66 6c 61 67 73 29 3b 0d 0a 20 20 20 20 69  s flags);..    i
3260: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
3270: 20 73 74 72 69 6e 67 20 42 69 6e 64 5f 50 61 72   string Bind_Par
3280: 61 6d 4e 61 6d 65 28 53 51 4c 69 74 65 53 74 61  amName(SQLiteSta
3290: 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 53 51 4c  tement stmt, SQL
32a0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
32b0: 67 73 20 66 6c 61 67 73 2c 20 69 6e 74 20 69 6e  gs flags, int in
32c0: 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  dex);..    inter
32d0: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 69 6e 74  nal abstract int
32e0: 20 42 69 6e 64 5f 50 61 72 61 6d 49 6e 64 65 78   Bind_ParamIndex
32f0: 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74  (SQLiteStatement
3300: 20 73 74 6d 74 2c 20 53 51 4c 69 74 65 43 6f 6e   stmt, SQLiteCon
3310: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
3320: 67 73 2c 20 73 74 72 69 6e 67 20 70 61 72 61 6d  gs, string param
3330: 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e  Name);....    in
3340: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
3350: 69 6e 74 20 43 6f 6c 75 6d 6e 43 6f 75 6e 74 28  int ColumnCount(
3360: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3370: 73 74 6d 74 29 3b 0d 0a 20 20 20 20 69 6e 74 65  stmt);..    inte
3380: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74  rnal abstract st
3390: 72 69 6e 67 20 43 6f 6c 75 6d 6e 4e 61 6d 65 28  ring ColumnName(
33a0: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
33b0: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
33c0: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
33d0: 61 62 73 74 72 61 63 74 20 54 79 70 65 41 66 66  abstract TypeAff
33e0: 69 6e 69 74 79 20 43 6f 6c 75 6d 6e 41 66 66 69  inity ColumnAffi
33f0: 6e 69 74 79 28 53 51 4c 69 74 65 53 74 61 74 65  nity(SQLiteState
3400: 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69  ment stmt, int i
3410: 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65  ndex);..    inte
3420: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74  rnal abstract st
3430: 72 69 6e 67 20 43 6f 6c 75 6d 6e 54 79 70 65 28  ring ColumnType(
3440: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3450: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 2c  stmt, int index,
3460: 20 72 65 66 20 54 79 70 65 41 66 66 69 6e 69 74   ref TypeAffinit
3470: 79 20 6e 41 66 66 69 6e 69 74 79 29 3b 0d 0a 20  y nAffinity);.. 
3480: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3490: 72 61 63 74 20 69 6e 74 20 43 6f 6c 75 6d 6e 49  ract int ColumnI
34a0: 6e 64 65 78 28 53 51 4c 69 74 65 53 74 61 74 65  ndex(SQLiteState
34b0: 6d 65 6e 74 20 73 74 6d 74 2c 20 73 74 72 69 6e  ment stmt, strin
34c0: 67 20 63 6f 6c 75 6d 6e 4e 61 6d 65 29 3b 0d 0a  g columnName);..
34d0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
34e0: 74 72 61 63 74 20 73 74 72 69 6e 67 20 43 6f 6c  tract string Col
34f0: 75 6d 6e 4f 72 69 67 69 6e 61 6c 4e 61 6d 65 28  umnOriginalName(
3500: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3510: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
3520: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
3530: 61 62 73 74 72 61 63 74 20 73 74 72 69 6e 67 20  abstract string 
3540: 43 6f 6c 75 6d 6e 44 61 74 61 62 61 73 65 4e 61  ColumnDatabaseNa
3550: 6d 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  me(SQLiteStateme
3560: 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  nt stmt, int ind
3570: 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ex);..    intern
3580: 61 6c 20 61 62 73 74 72 61 63 74 20 73 74 72 69  al abstract stri
3590: 6e 67 20 43 6f 6c 75 6d 6e 54 61 62 6c 65 4e 61  ng ColumnTableNa
35a0: 6d 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  me(SQLiteStateme
35b0: 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  nt stmt, int ind
35c0: 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ex);..    intern
35d0: 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c  al abstract bool
35e0: 20 44 6f 65 73 54 61 62 6c 65 45 78 69 73 74 28   DoesTableExist(
35f0: 73 74 72 69 6e 67 20 64 61 74 61 42 61 73 65 2c  string dataBase,
3600: 20 73 74 72 69 6e 67 20 74 61 62 6c 65 29 3b 0d   string table);.
3610: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
3620: 73 74 72 61 63 74 20 62 6f 6f 6c 20 43 6f 6c 75  stract bool Colu
3630: 6d 6e 4d 65 74 61 44 61 74 61 28 73 74 72 69 6e  mnMetaData(strin
3640: 67 20 64 61 74 61 42 61 73 65 2c 20 73 74 72 69  g dataBase, stri
3650: 6e 67 20 74 61 62 6c 65 2c 20 73 74 72 69 6e 67  ng table, string
3660: 20 63 6f 6c 75 6d 6e 2c 20 62 6f 6f 6c 20 63 61   column, bool ca
3670: 6e 54 68 72 6f 77 2c 20 72 65 66 20 73 74 72 69  nThrow, ref stri
3680: 6e 67 20 64 61 74 61 54 79 70 65 2c 20 72 65 66  ng dataType, ref
3690: 20 73 74 72 69 6e 67 20 63 6f 6c 6c 61 74 65 53   string collateS
36a0: 65 71 75 65 6e 63 65 2c 20 72 65 66 20 62 6f 6f  equence, ref boo
36b0: 6c 20 6e 6f 74 4e 75 6c 6c 2c 20 72 65 66 20 62  l notNull, ref b
36c0: 6f 6f 6c 20 70 72 69 6d 61 72 79 4b 65 79 2c 20  ool primaryKey, 
36d0: 72 65 66 20 62 6f 6f 6c 20 61 75 74 6f 49 6e 63  ref bool autoInc
36e0: 72 65 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 69 6e  rement);..    in
36f0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
3700: 76 6f 69 64 20 47 65 74 49 6e 64 65 78 43 6f 6c  void GetIndexCol
3710: 75 6d 6e 45 78 74 65 6e 64 65 64 49 6e 66 6f 28  umnExtendedInfo(
3720: 73 74 72 69 6e 67 20 64 61 74 61 62 61 73 65 2c  string database,
3730: 20 73 74 72 69 6e 67 20 69 6e 64 65 78 2c 20 73   string index, s
3740: 74 72 69 6e 67 20 63 6f 6c 75 6d 6e 2c 20 72 65  tring column, re
3750: 66 20 69 6e 74 20 73 6f 72 74 4d 6f 64 65 2c 20  f int sortMode, 
3760: 72 65 66 20 69 6e 74 20 6f 6e 45 72 72 6f 72 2c  ref int onError,
3770: 20 72 65 66 20 73 74 72 69 6e 67 20 63 6f 6c 6c   ref string coll
3780: 61 74 69 6f 6e 53 65 71 75 65 6e 63 65 29 3b 0d  ationSequence);.
3790: 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
37a0: 61 62 73 74 72 61 63 74 20 6f 62 6a 65 63 74 20  abstract object 
37b0: 47 65 74 4f 62 6a 65 63 74 28 53 51 4c 69 74 65  GetObject(SQLite
37c0: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
37d0: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20  int index);..   
37e0: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
37f0: 63 74 20 64 6f 75 62 6c 65 20 47 65 74 44 6f 75  ct double GetDou
3800: 62 6c 65 28 53 51 4c 69 74 65 53 74 61 74 65 6d  ble(SQLiteStatem
3810: 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  ent stmt, int in
3820: 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  dex);..    inter
3830: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 42 6f 6f  nal abstract Boo
3840: 6c 65 61 6e 20 47 65 74 42 6f 6f 6c 65 61 6e 28  lean GetBoolean(
3850: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3860: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
3870: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
3880: 61 62 73 74 72 61 63 74 20 53 42 79 74 65 20 47  abstract SByte G
3890: 65 74 53 42 79 74 65 28 53 51 4c 69 74 65 53 74  etSByte(SQLiteSt
38a0: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e  atement stmt, in
38b0: 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69  t index);..    i
38c0: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
38d0: 20 42 79 74 65 20 47 65 74 42 79 74 65 28 53 51   Byte GetByte(SQ
38e0: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
38f0: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
3900: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
3910: 73 74 72 61 63 74 20 49 6e 74 31 36 20 47 65 74  stract Int16 Get
3920: 49 6e 74 31 36 28 53 51 4c 69 74 65 53 74 61 74  Int16(SQLiteStat
3930: 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20  ement stmt, int 
3940: 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74  index);..    int
3950: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 55  ernal abstract U
3960: 49 6e 74 31 36 20 47 65 74 55 49 6e 74 31 36 28  Int16 GetUInt16(
3970: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
3980: 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29  stmt, int index)
3990: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
39a0: 61 62 73 74 72 61 63 74 20 49 6e 74 33 32 20 47  abstract Int32 G
39b0: 65 74 49 6e 74 33 32 28 53 51 4c 69 74 65 53 74  etInt32(SQLiteSt
39c0: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e  atement stmt, in
39d0: 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20 20 69  t index);..    i
39e0: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
39f0: 20 55 49 6e 74 33 32 20 47 65 74 55 49 6e 74 33   UInt32 GetUInt3
3a00: 32 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e  2(SQLiteStatemen
3a10: 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65  t stmt, int inde
3a20: 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  x);..    interna
3a30: 6c 20 61 62 73 74 72 61 63 74 20 49 6e 74 36 34  l abstract Int64
3a40: 20 47 65 74 49 6e 74 36 34 28 53 51 4c 69 74 65   GetInt64(SQLite
3a50: 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20  Statement stmt, 
3a60: 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20 20 20  int index);..   
3a70: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
3a80: 63 74 20 55 49 6e 74 36 34 20 47 65 74 55 49 6e  ct UInt64 GetUIn
3a90: 74 36 34 28 53 51 4c 69 74 65 53 74 61 74 65 6d  t64(SQLiteStatem
3aa0: 65 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e  ent stmt, int in
3ab0: 64 65 78 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  dex);..    inter
3ac0: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 73 74 72  nal abstract str
3ad0: 69 6e 67 20 47 65 74 54 65 78 74 28 53 51 4c 69  ing GetText(SQLi
3ae0: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
3af0: 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d 0a 20  , int index);.. 
3b00: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
3b10: 72 61 63 74 20 6c 6f 6e 67 20 47 65 74 42 79 74  ract long GetByt
3b20: 65 73 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  es(SQLiteStateme
3b30: 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  nt stmt, int ind
3b40: 65 78 2c 20 69 6e 74 20 6e 44 61 74 61 6f 66 66  ex, int nDataoff
3b50: 73 65 74 2c 20 62 79 74 65 5b 5d 20 62 44 65 73  set, byte[] bDes
3b60: 74 2c 20 69 6e 74 20 6e 53 74 61 72 74 2c 20 69  t, int nStart, i
3b70: 6e 74 20 6e 4c 65 6e 67 74 68 29 3b 0d 0a 20 20  nt nLength);..  
3b80: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
3b90: 61 63 74 20 63 68 61 72 20 47 65 74 43 68 61 72  act char GetChar
3ba0: 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74  (SQLiteStatement
3bb0: 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78   stmt, int index
3bc0: 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  );..    internal
3bd0: 20 61 62 73 74 72 61 63 74 20 6c 6f 6e 67 20 47   abstract long G
3be0: 65 74 43 68 61 72 73 28 53 51 4c 69 74 65 53 74  etChars(SQLiteSt
3bf0: 61 74 65 6d 65 6e 74 20 73 74 6d 74 2c 20 69 6e  atement stmt, in
3c00: 74 20 69 6e 64 65 78 2c 20 69 6e 74 20 6e 44 61  t index, int nDa
3c10: 74 61 6f 66 66 73 65 74 2c 20 63 68 61 72 5b 5d  taoffset, char[]
3c20: 20 62 44 65 73 74 2c 20 69 6e 74 20 6e 53 74 61   bDest, int nSta
3c30: 72 74 2c 20 69 6e 74 20 6e 4c 65 6e 67 74 68 29  rt, int nLength)
3c40: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
3c50: 61 62 73 74 72 61 63 74 20 44 61 74 65 54 69 6d  abstract DateTim
3c60: 65 20 47 65 74 44 61 74 65 54 69 6d 65 28 53 51  e GetDateTime(SQ
3c70: 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74  LiteStatement st
3c80: 6d 74 2c 20 69 6e 74 20 69 6e 64 65 78 29 3b 0d  mt, int index);.
3c90: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
3ca0: 73 74 72 61 63 74 20 62 6f 6f 6c 20 49 73 4e 75  stract bool IsNu
3cb0: 6c 6c 28 53 51 4c 69 74 65 53 74 61 74 65 6d 65  ll(SQLiteStateme
3cc0: 6e 74 20 73 74 6d 74 2c 20 69 6e 74 20 69 6e 64  nt stmt, int ind
3cd0: 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65  ex);....    inte
3ce0: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53 51  rnal abstract SQ
3cf0: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 43 72  LiteErrorCode Cr
3d00: 65 61 74 65 43 6f 6c 6c 61 74 69 6f 6e 28 73 74  eateCollation(st
3d10: 72 69 6e 67 20 73 74 72 43 6f 6c 6c 61 74 69 6f  ring strCollatio
3d20: 6e 2c 20 53 51 4c 69 74 65 43 6f 6c 6c 61 74 69  n, SQLiteCollati
3d30: 6f 6e 20 66 75 6e 63 2c 20 53 51 4c 69 74 65 43  on func, SQLiteC
3d40: 6f 6c 6c 61 74 69 6f 6e 20 66 75 6e 63 31 36 2c  ollation func16,
3d50: 20 62 6f 6f 6c 20 40 74 68 72 6f 77 29 3b 0d 0a   bool @throw);..
3d60: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
3d70: 74 72 61 63 74 20 53 51 4c 69 74 65 45 72 72 6f  tract SQLiteErro
3d80: 72 43 6f 64 65 20 43 72 65 61 74 65 46 75 6e 63  rCode CreateFunc
3d90: 74 69 6f 6e 28 73 74 72 69 6e 67 20 73 74 72 46  tion(string strF
3da0: 75 6e 63 74 69 6f 6e 2c 20 69 6e 74 20 6e 41 72  unction, int nAr
3db0: 67 73 2c 20 62 6f 6f 6c 20 6e 65 65 64 43 6f 6c  gs, bool needCol
3dc0: 6c 53 65 71 2c 20 53 51 4c 69 74 65 43 61 6c 6c  lSeq, SQLiteCall
3dd0: 62 61 63 6b 20 66 75 6e 63 2c 20 53 51 4c 69 74  back func, SQLit
3de0: 65 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 73 74  eCallback funcst
3df0: 65 70 2c 20 53 51 4c 69 74 65 46 69 6e 61 6c 43  ep, SQLiteFinalC
3e00: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 66 69 6e 61  allback funcfina
3e10: 6c 2c 20 62 6f 6f 6c 20 40 74 68 72 6f 77 29 3b  l, bool @throw);
3e20: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61  ..    internal a
3e30: 62 73 74 72 61 63 74 20 43 6f 6c 6c 61 74 69 6f  bstract Collatio
3e40: 6e 53 65 71 75 65 6e 63 65 20 47 65 74 43 6f 6c  nSequence GetCol
3e50: 6c 61 74 69 6f 6e 53 65 71 75 65 6e 63 65 28 53  lationSequence(S
3e60: 51 4c 69 74 65 46 75 6e 63 74 69 6f 6e 20 66 75  QLiteFunction fu
3e70: 6e 63 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65  nc, IntPtr conte
3e80: 78 74 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  xt);..    intern
3e90: 61 6c 20 61 62 73 74 72 61 63 74 20 69 6e 74 20  al abstract int 
3ea0: 43 6f 6e 74 65 78 74 43 6f 6c 6c 61 74 65 43 6f  ContextCollateCo
3eb0: 6d 70 61 72 65 28 43 6f 6c 6c 61 74 69 6f 6e 45  mpare(CollationE
3ec0: 6e 63 6f 64 69 6e 67 45 6e 75 6d 20 65 6e 63 2c  ncodingEnum enc,
3ed0: 20 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c   IntPtr context,
3ee0: 20 73 74 72 69 6e 67 20 73 31 2c 20 73 74 72 69   string s1, stri
3ef0: 6e 67 20 73 32 29 3b 0d 0a 20 20 20 20 69 6e 74  ng s2);..    int
3f00: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 69  ernal abstract i
3f10: 6e 74 20 43 6f 6e 74 65 78 74 43 6f 6c 6c 61 74  nt ContextCollat
3f20: 65 43 6f 6d 70 61 72 65 28 43 6f 6c 6c 61 74 69  eCompare(Collati
3f30: 6f 6e 45 6e 63 6f 64 69 6e 67 45 6e 75 6d 20 65  onEncodingEnum e
3f40: 6e 63 2c 20 49 6e 74 50 74 72 20 63 6f 6e 74 65  nc, IntPtr conte
3f50: 78 74 2c 20 63 68 61 72 5b 5d 20 63 31 2c 20 63  xt, char[] c1, c
3f60: 68 61 72 5b 5d 20 63 32 29 3b 0d 0a 0d 0a 20 20  har[] c2);....  
3f70: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
3f80: 61 63 74 20 69 6e 74 20 41 67 67 72 65 67 61 74  act int Aggregat
3f90: 65 43 6f 75 6e 74 28 49 6e 74 50 74 72 20 63 6f  eCount(IntPtr co
3fa0: 6e 74 65 78 74 29 3b 0d 0a 20 20 20 20 69 6e 74  ntext);..    int
3fb0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 49  ernal abstract I
3fc0: 6e 74 50 74 72 20 41 67 67 72 65 67 61 74 65 43  ntPtr AggregateC
3fd0: 6f 6e 74 65 78 74 28 49 6e 74 50 74 72 20 63 6f  ontext(IntPtr co
3fe0: 6e 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 69  ntext);....    i
3ff0: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
4000: 20 6c 6f 6e 67 20 47 65 74 50 61 72 61 6d 56 61   long GetParamVa
4010: 6c 75 65 42 79 74 65 73 28 49 6e 74 50 74 72 20  lueBytes(IntPtr 
4020: 70 74 72 2c 20 69 6e 74 20 6e 44 61 74 61 4f 66  ptr, int nDataOf
4030: 66 73 65 74 2c 20 62 79 74 65 5b 5d 20 62 44 65  fset, byte[] bDe
4040: 73 74 2c 20 69 6e 74 20 6e 53 74 61 72 74 2c 20  st, int nStart, 
4050: 69 6e 74 20 6e 4c 65 6e 67 74 68 29 3b 0d 0a 20  int nLength);.. 
4060: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
4070: 72 61 63 74 20 64 6f 75 62 6c 65 20 47 65 74 50  ract double GetP
4080: 61 72 61 6d 56 61 6c 75 65 44 6f 75 62 6c 65 28  aramValueDouble(
4090: 49 6e 74 50 74 72 20 70 74 72 29 3b 0d 0a 20 20  IntPtr ptr);..  
40a0: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
40b0: 61 63 74 20 69 6e 74 20 47 65 74 50 61 72 61 6d  act int GetParam
40c0: 56 61 6c 75 65 49 6e 74 33 32 28 49 6e 74 50 74  ValueInt32(IntPt
40d0: 72 20 70 74 72 29 3b 0d 0a 20 20 20 20 69 6e 74  r ptr);..    int
40e0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 49  ernal abstract I
40f0: 6e 74 36 34 20 47 65 74 50 61 72 61 6d 56 61 6c  nt64 GetParamVal
4100: 75 65 49 6e 74 36 34 28 49 6e 74 50 74 72 20 70  ueInt64(IntPtr p
4110: 74 72 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  tr);..    intern
4120: 61 6c 20 61 62 73 74 72 61 63 74 20 73 74 72 69  al abstract stri
4130: 6e 67 20 47 65 74 50 61 72 61 6d 56 61 6c 75 65  ng GetParamValue
4140: 54 65 78 74 28 49 6e 74 50 74 72 20 70 74 72 29  Text(IntPtr ptr)
4150: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
4160: 61 62 73 74 72 61 63 74 20 54 79 70 65 41 66 66  abstract TypeAff
4170: 69 6e 69 74 79 20 47 65 74 50 61 72 61 6d 56 61  inity GetParamVa
4180: 6c 75 65 54 79 70 65 28 49 6e 74 50 74 72 20 70  lueType(IntPtr p
4190: 74 72 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65  tr);....    inte
41a0: 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f  rnal abstract vo
41b0: 69 64 20 52 65 74 75 72 6e 42 6c 6f 62 28 49 6e  id ReturnBlob(In
41c0: 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 62 79  tPtr context, by
41d0: 74 65 5b 5d 20 76 61 6c 75 65 29 3b 0d 0a 20 20  te[] value);..  
41e0: 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72    internal abstr
41f0: 61 63 74 20 76 6f 69 64 20 52 65 74 75 72 6e 44  act void ReturnD
4200: 6f 75 62 6c 65 28 49 6e 74 50 74 72 20 63 6f 6e  ouble(IntPtr con
4210: 74 65 78 74 2c 20 64 6f 75 62 6c 65 20 76 61 6c  text, double val
4220: 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ue);..    intern
4230: 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64  al abstract void
4240: 20 52 65 74 75 72 6e 45 72 72 6f 72 28 49 6e 74   ReturnError(Int
4250: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 73 74 72  Ptr context, str
4260: 69 6e 67 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20  ing value);..   
4270: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
4280: 63 74 20 76 6f 69 64 20 52 65 74 75 72 6e 49 6e  ct void ReturnIn
4290: 74 33 32 28 49 6e 74 50 74 72 20 63 6f 6e 74 65  t32(IntPtr conte
42a0: 78 74 2c 20 49 6e 74 33 32 20 76 61 6c 75 65 29  xt, Int32 value)
42b0: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
42c0: 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 52 65  abstract void Re
42d0: 74 75 72 6e 49 6e 74 36 34 28 49 6e 74 50 74 72  turnInt64(IntPtr
42e0: 20 63 6f 6e 74 65 78 74 2c 20 49 6e 74 36 34 20   context, Int64 
42f0: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 69 6e 74  value);..    int
4300: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
4310: 6f 69 64 20 52 65 74 75 72 6e 4e 75 6c 6c 28 49  oid ReturnNull(I
4320: 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 29 3b 0d  ntPtr context);.
4330: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
4340: 73 74 72 61 63 74 20 76 6f 69 64 20 52 65 74 75  stract void Retu
4350: 72 6e 54 65 78 74 28 49 6e 74 50 74 72 20 63 6f  rnText(IntPtr co
4360: 6e 74 65 78 74 2c 20 73 74 72 69 6e 67 20 76 61  ntext, string va
4370: 6c 75 65 29 3b 0d 0a 0d 0a 23 69 66 20 49 4e 54  lue);....#if INT
4380: 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54 41 42  EROP_VIRTUAL_TAB
4390: 4c 45 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  LE..    /// <sum
43a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
43b0: 61 6c 6c 73 20 74 68 65 20 6e 61 74 69 76 65 20  alls the native 
43c0: 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72  SQLite core libr
43d0: 61 72 79 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  ary in order to 
43e0: 63 72 65 61 74 65 20 61 20 64 69 73 70 6f 73 61  create a disposa
43f0: 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20 6d 6f 64  ble..    /// mod
4400: 75 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ule containing t
4410: 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  he implementatio
4420: 6e 20 6f 66 20 61 20 76 69 72 74 75 61 6c 20 74  n of a virtual t
4430: 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  able...    /// <
4440: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
4450: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
4460: 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20 20 2f 2f  module">..    //
4470: 2f 20 54 68 65 20 6d 6f 64 75 6c 65 20 6f 62 6a  / The module obj
4480: 65 63 74 20 74 6f 20 62 65 20 75 73 65 64 20 77  ect to be used w
4490: 68 65 6e 20 63 72 65 61 74 69 6e 67 20 74 68 65  hen creating the
44a0: 20 6e 61 74 69 76 65 20 64 69 73 70 6f 73 61 62   native disposab
44b0: 6c 65 20 6d 6f 64 75 6c 65 2e 0d 0a 20 20 20 20  le module...    
44c0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
44d0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
44e0: 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20 20 20  e="flags">..    
44f0: 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20 66 6f  /// The flags fo
4500: 72 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  r the associated
4510: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
4520: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e  teConnection" />
4530: 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65   object instance
4540: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
4550: 61 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  am>..    interna
4560: 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69 64 20  l abstract void 
4570: 43 72 65 61 74 65 4d 6f 64 75 6c 65 28 53 51 4c  CreateModule(SQL
4580: 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65  iteModule module
4590: 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  , SQLiteConnecti
45a0: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 29 3b 0d  onFlags flags);.
45b0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
45c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 61  ary>..    /// Ca
45d0: 6c 6c 73 20 74 68 65 20 6e 61 74 69 76 65 20 53  lls the native S
45e0: 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
45f0: 72 79 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 63  ry in order to c
4600: 6c 65 61 6e 75 70 20 74 68 65 20 72 65 73 6f 75  leanup the resou
4610: 72 63 65 73 0d 0a 20 20 20 20 2f 2f 2f 20 61 73  rces..    /// as
4620: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 61 20  sociated with a 
4630: 6d 6f 64 75 6c 65 20 63 6f 6e 74 61 69 6e 69 6e  module containin
4640: 67 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61  g the implementa
4650: 74 69 6f 6e 20 6f 66 20 61 20 76 69 72 74 75 61  tion of a virtua
4660: 6c 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f  l table...    //
4670: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4680: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4690: 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a 20 20 20  e="module">..   
46a0: 20 2f 2f 2f 20 54 68 65 20 6d 6f 64 75 6c 65 20   /// The module 
46b0: 6f 62 6a 65 63 74 20 70 72 65 76 69 6f 75 73 6c  object previousl
46c0: 79 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20  y passed to the 
46d0: 3c 73 65 65 20 63 72 65 66 3d 22 43 72 65 61 74  <see cref="Creat
46e0: 65 4d 6f 64 75 6c 65 22 20 2f 3e 0d 0a 20 20 20  eModule" />..   
46f0: 20 2f 2f 2f 20 6d 65 74 68 6f 64 2e 0d 0a 20 20   /// method...  
4700: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
4710: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
4720: 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a 20 20  ame="flags">..  
4730: 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67 73 20    /// The flags 
4740: 66 6f 72 20 74 68 65 20 61 73 73 6f 63 69 61 74  for the associat
4750: 65 64 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  ed <see cref="SQ
4760: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20  LiteConnection" 
4770: 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  /> object instan
4780: 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ce...    /// </p
4790: 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72  aram>..    inter
47a0: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69  nal abstract voi
47b0: 64 20 44 69 73 70 6f 73 65 4d 6f 64 75 6c 65 28  d DisposeModule(
47c0: 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f 64  SQLiteModule mod
47d0: 75 6c 65 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65  ule, SQLiteConne
47e0: 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73  ctionFlags flags
47f0: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  );....    /// <s
4800: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
4810: 20 43 61 6c 6c 73 20 74 68 65 20 6e 61 74 69 76   Calls the nativ
4820: 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
4830: 62 72 61 72 79 20 69 6e 20 6f 72 64 65 72 20 74  brary in order t
4840: 6f 20 64 65 63 6c 61 72 65 20 61 20 76 69 72 74  o declare a virt
4850: 75 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 2f  ual table..    /
4860: 2f 2f 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74  // in response t
4870: 6f 20 61 20 63 61 6c 6c 20 69 6e 74 6f 20 74 68  o a call into th
4880: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51  e <see cref="ISQ
4890: 4c 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65  LiteNativeModule
48a0: 2e 78 43 72 65 61 74 65 22 20 2f 3e 0d 0a 20 20  .xCreate" />..  
48b0: 20 20 2f 2f 2f 20 6f 72 20 3c 73 65 65 20 63 72    /// or <see cr
48c0: 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69 76  ef="ISQLiteNativ
48d0: 65 4d 6f 64 75 6c 65 2e 78 43 6f 6e 6e 65 63 74  eModule.xConnect
48e0: 22 20 2f 3e 20 76 69 72 74 75 61 6c 20 74 61 62  " /> virtual tab
48f0: 6c 65 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20  le methods...   
4900: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4910: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
4920: 6e 61 6d 65 3d 22 6d 6f 64 75 6c 65 22 3e 0d 0a  name="module">..
4930: 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 69 72 74      /// The virt
4940: 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65  ual table module
4950: 20 74 68 61 74 20 69 73 20 74 6f 20 62 65 20 72   that is to be r
4960: 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 74  esponsible for t
4970: 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
4980: 0d 0a 20 20 20 20 2f 2f 2f 20 62 65 69 6e 67 20  ..    /// being 
4990: 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20 2f  declared...    /
49a0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
49b0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
49c0: 3d 22 73 74 72 53 71 6c 22 3e 0d 0a 20 20 20 20  ="strSql">..    
49d0: 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67 20 63  /// The string c
49e0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 53 51  ontaining the SQ
49f0: 4c 20 73 74 61 74 65 6d 65 6e 74 20 64 65 73 63  L statement desc
4a00: 72 69 62 69 6e 67 20 74 68 65 20 76 69 72 74 75  ribing the virtu
4a10: 61 6c 20 74 61 62 6c 65 20 74 6f 0d 0a 20 20 20  al table to..   
4a20: 20 2f 2f 2f 20 62 65 20 64 65 63 6c 61 72 65 64   /// be declared
4a30: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
4a40: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
4a50: 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22  ram name="error"
4a60: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20  >..    /// Upon 
4a70: 73 75 63 63 65 73 73 2c 20 74 68 65 20 63 6f 6e  success, the con
4a80: 74 65 6e 74 73 20 6f 66 20 74 68 69 73 20 70 61  tents of this pa
4a90: 72 61 6d 65 74 65 72 20 61 72 65 20 75 6e 64 65  rameter are unde
4aa0: 66 69 6e 65 64 2e 20 20 55 70 6f 6e 20 66 61 69  fined.  Upon fai
4ab0: 6c 75 72 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20 69  lure,..    /// i
4ac0: 74 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e  t should contain
4ad0: 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20   an appropriate 
4ae0: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a  error message...
4af0: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
4b00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
4b10: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 73  ns>..    /// A s
4b20: 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65 20 72  tandard SQLite r
4b30: 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20 20 20  eturn code...   
4b40: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
4b50: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
4b60: 73 74 72 61 63 74 20 53 51 4c 69 74 65 45 72 72  stract SQLiteErr
4b70: 6f 72 43 6f 64 65 20 44 65 63 6c 61 72 65 56 69  orCode DeclareVi
4b80: 72 74 75 61 6c 54 61 62 6c 65 28 53 51 4c 69 74  rtualTable(SQLit
4b90: 65 4d 6f 64 75 6c 65 20 6d 6f 64 75 6c 65 2c 20  eModule module, 
4ba0: 73 74 72 69 6e 67 20 73 74 72 53 71 6c 2c 20 72  string strSql, r
4bb0: 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 29  ef string error)
4bc0: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
4bd0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
4be0: 43 61 6c 6c 73 20 74 68 65 20 6e 61 74 69 76 65  Calls the native
4bf0: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
4c00: 72 61 72 79 20 69 6e 20 6f 72 64 65 72 20 74 6f  rary in order to
4c10: 20 64 65 63 6c 61 72 65 20 61 20 76 69 72 74 75   declare a virtu
4c20: 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 2f 2f  al table..    //
4c30: 2f 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 72 65  / function in re
4c40: 73 70 6f 6e 73 65 20 74 6f 20 61 20 63 61 6c 6c  sponse to a call
4c50: 20 69 6e 74 6f 20 74 68 65 20 3c 73 65 65 20 63   into the <see c
4c60: 72 65 66 3d 22 49 53 51 4c 69 74 65 4e 61 74 69  ref="ISQLiteNati
4c70: 76 65 4d 6f 64 75 6c 65 2e 78 43 72 65 61 74 65  veModule.xCreate
4c80: 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 6f 72  " />..    /// or
4c90: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 53 51 4c   <see cref="ISQL
4ca0: 69 74 65 4e 61 74 69 76 65 4d 6f 64 75 6c 65 2e  iteNativeModule.
4cb0: 78 43 6f 6e 6e 65 63 74 22 20 2f 3e 20 76 69 72  xConnect" /> vir
4cc0: 74 75 61 6c 20 74 61 62 6c 65 20 6d 65 74 68 6f  tual table metho
4cd0: 64 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ds...    /// </s
4ce0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
4cf0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6d 6f   <param name="mo
4d00: 64 75 6c 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  dule">..    /// 
4d10: 54 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  The virtual tabl
4d20: 65 20 6d 6f 64 75 6c 65 20 74 68 61 74 20 69 73  e module that is
4d30: 20 74 6f 20 62 65 20 72 65 73 70 6f 6e 73 69 62   to be responsib
4d40: 6c 65 20 66 6f 72 20 74 68 65 20 76 69 72 74 75  le for the virtu
4d50: 61 6c 20 74 61 62 6c 65 0d 0a 20 20 20 20 2f 2f  al table..    //
4d60: 2f 20 66 75 6e 63 74 69 6f 6e 20 62 65 69 6e 67  / function being
4d70: 20 64 65 63 6c 61 72 65 64 2e 0d 0a 20 20 20 20   declared...    
4d80: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
4d90: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4da0: 65 3d 22 61 72 67 75 6d 65 6e 74 43 6f 75 6e 74  e="argumentCount
4db0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
4dc0: 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65  number of argume
4dd0: 6e 74 73 20 74 6f 20 74 68 65 20 66 75 6e 63 74  nts to the funct
4de0: 69 6f 6e 20 62 65 69 6e 67 20 64 65 63 6c 61 72  ion being declar
4df0: 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ed...    /// </p
4e00: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
4e10: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d 65  param name="name
4e20: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
4e30: 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 75 6e 63  name of the func
4e40: 74 69 6f 6e 20 62 65 69 6e 67 20 64 65 63 6c 61  tion being decla
4e50: 72 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  red...    /// </
4e60: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
4e70: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72  <param name="err
4e80: 6f 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 70  or">..    /// Up
4e90: 6f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 65 20  on success, the 
4ea0: 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 69 73  contents of this
4eb0: 20 70 61 72 61 6d 65 74 65 72 20 61 72 65 20 75   parameter are u
4ec0: 6e 64 65 66 69 6e 65 64 2e 20 20 55 70 6f 6e 20  ndefined.  Upon 
4ed0: 66 61 69 6c 75 72 65 2c 0d 0a 20 20 20 20 2f 2f  failure,..    //
4ee0: 2f 20 69 74 20 73 68 6f 75 6c 64 20 63 6f 6e 74  / it should cont
4ef0: 61 69 6e 20 61 6e 20 61 70 70 72 6f 70 72 69 61  ain an appropria
4f00: 74 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  te error message
4f10: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
4f20: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
4f30: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
4f40: 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74  A standard SQLit
4f50: 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a  e return code...
4f60: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
4f70: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
4f80: 20 61 62 73 74 72 61 63 74 20 53 51 4c 69 74 65   abstract SQLite
4f90: 45 72 72 6f 72 43 6f 64 65 20 44 65 63 6c 61 72  ErrorCode Declar
4fa0: 65 56 69 72 74 75 61 6c 46 75 6e 63 74 69 6f 6e  eVirtualFunction
4fb0: 28 53 51 4c 69 74 65 4d 6f 64 75 6c 65 20 6d 6f  (SQLiteModule mo
4fc0: 64 75 6c 65 2c 20 69 6e 74 20 61 72 67 75 6d 65  dule, int argume
4fd0: 6e 74 43 6f 75 6e 74 2c 20 73 74 72 69 6e 67 20  ntCount, string 
4fe0: 6e 61 6d 65 2c 20 72 65 66 20 73 74 72 69 6e 67  name, ref string
4ff0: 20 65 72 72 6f 72 29 3b 0d 0a 23 65 6e 64 69 66   error);..#endif
5000: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
5010: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52  mary>..    /// R
5020: 65 74 75 72 6e 73 20 74 68 65 20 63 75 72 72 65  eturns the curre
5030: 6e 74 20 61 6e 64 2f 6f 72 20 68 69 67 68 77 61  nt and/or highwa
5040: 74 65 72 20 76 61 6c 75 65 73 20 66 6f 72 20 74  ter values for t
5050: 68 65 20 73 70 65 63 69 66 69 65 64 20 64 61 74  he specified dat
5060: 61 62 61 73 65 20 73 74 61 74 75 73 20 70 61 72  abase status par
5070: 61 6d 65 74 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f  ameter...    ///
5080: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
5090: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
50a0: 3d 22 6f 70 74 69 6f 6e 22 3e 0d 0a 20 20 20 20  ="option">..    
50b0: 2f 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65  /// The database
50c0: 20 73 74 61 74 75 73 20 70 61 72 61 6d 65 74 65   status paramete
50d0: 72 20 74 6f 20 71 75 65 72 79 2e 0d 0a 20 20 20  r to query...   
50e0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
50f0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5100: 6d 65 3d 22 72 65 73 65 74 22 3e 0d 0a 20 20 20  me="reset">..   
5110: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 74 6f   /// Non-zero to
5120: 20 72 65 73 65 74 20 74 68 65 20 68 69 67 68 77   reset the highw
5130: 61 74 65 72 20 76 61 6c 75 65 20 74 6f 20 74 68  ater value to th
5140: 65 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 2e  e current value.
5150: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
5160: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
5170: 61 6d 20 6e 61 6d 65 3d 22 63 75 72 72 65 6e 74  am name="current
5180: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 61  ">..    /// If a
5190: 70 70 6c 69 63 61 62 6c 65 2c 20 72 65 63 65 69  pplicable, recei
51a0: 76 65 73 20 74 68 65 20 63 75 72 72 65 6e 74 20  ves the current 
51b0: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  value...    /// 
51c0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
51d0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 68  / <param name="h
51e0: 69 67 68 77 61 74 65 72 22 3e 0d 0a 20 20 20 20  ighwater">..    
51f0: 2f 2f 2f 20 49 66 20 61 70 70 6c 69 63 61 62 6c  /// If applicabl
5200: 65 2c 20 72 65 63 65 69 76 65 73 20 74 68 65 20  e, receives the 
5210: 68 69 67 68 77 61 74 65 72 20 76 61 6c 75 65 2e  highwater value.
5220: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
5230: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
5240: 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41  urns>..    /// A
5250: 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69 74 65   standard SQLite
5260: 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d 0a 20   return code... 
5270: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
5280: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
5290: 61 62 73 74 72 61 63 74 20 53 51 4c 69 74 65 45  abstract SQLiteE
52a0: 72 72 6f 72 43 6f 64 65 20 47 65 74 53 74 61 74  rrorCode GetStat
52b0: 75 73 50 61 72 61 6d 65 74 65 72 28 53 51 4c 69  usParameter(SQLi
52c0: 74 65 53 74 61 74 75 73 4f 70 73 45 6e 75 6d 20  teStatusOpsEnum 
52d0: 6f 70 74 69 6f 6e 2c 20 62 6f 6f 6c 20 72 65 73  option, bool res
52e0: 65 74 2c 20 72 65 66 20 69 6e 74 20 63 75 72 72  et, ref int curr
52f0: 65 6e 74 2c 20 72 65 66 20 69 6e 74 20 68 69 67  ent, ref int hig
5300: 68 77 61 74 65 72 29 3b 0d 0a 20 20 20 20 2f 2f  hwater);..    //
5310: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5320: 20 2f 2f 2f 20 43 68 61 6e 67 65 20 61 20 63 6f   /// Change a co
5330: 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
5340: 6f 6e 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65  on value for the
5350: 20 64 61 74 61 62 61 73 65 2e 0d 0a 20 20 20 20   database...    
5360: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
5370: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
5380: 61 6d 65 3d 22 6f 70 74 69 6f 6e 22 3e 0d 0a 20  ame="option">.. 
5390: 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62     /// The datab
53a0: 61 73 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ase configuratio
53b0: 6e 20 6f 70 74 69 6f 6e 20 74 6f 20 63 68 61 6e  n option to chan
53c0: 67 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ge...    /// </p
53d0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
53e0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75  param name="valu
53f0: 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
5400: 20 6e 65 77 20 76 61 6c 75 65 20 66 6f 72 20 74   new value for t
5410: 68 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 6e  he specified con
5420: 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
5430: 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  n...    /// </pa
5440: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
5450: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
5460: 20 41 20 73 74 61 6e 64 61 72 64 20 53 51 4c 69   A standard SQLi
5470: 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0d  te return code..
5480: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
5490: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
54a0: 6c 20 61 62 73 74 72 61 63 74 20 53 51 4c 69 74  l abstract SQLit
54b0: 65 45 72 72 6f 72 43 6f 64 65 20 53 65 74 43 6f  eErrorCode SetCo
54c0: 6e 66 69 67 75 72 61 74 69 6f 6e 4f 70 74 69 6f  nfigurationOptio
54d0: 6e 28 53 51 4c 69 74 65 43 6f 6e 66 69 67 44 62  n(SQLiteConfigDb
54e0: 4f 70 73 45 6e 75 6d 20 6f 70 74 69 6f 6e 2c 20  OpsEnum option, 
54f0: 6f 62 6a 65 63 74 20 76 61 6c 75 65 29 3b 0d 0a  object value);..
5500: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
5510: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c  >..    /// Enabl
5520: 65 73 20 6f 72 20 64 69 73 61 62 6c 65 73 20 65  es or disables e
5530: 78 74 65 6e 73 69 6f 6e 20 6c 6f 61 64 69 6e 67  xtension loading
5540: 20 62 79 20 53 51 4c 69 74 65 2e 0d 0a 20 20 20   by SQLite...   
5550: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
5560: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
5570: 6e 61 6d 65 3d 22 62 4f 6e 4f 66 66 22 3e 0d 0a  name="bOnOff">..
5580: 20 20 20 20 2f 2f 2f 20 54 72 75 65 20 74 6f 20      /// True to 
5590: 65 6e 61 62 6c 65 20 6c 6f 61 64 69 6e 67 20 6f  enable loading o
55a0: 66 20 65 78 74 65 6e 73 69 6f 6e 73 2c 20 66 61  f extensions, fa
55b0: 6c 73 65 20 74 6f 20 64 69 73 61 62 6c 65 2e 0d  lse to disable..
55c0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
55d0: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
55e0: 61 62 73 74 72 61 63 74 20 76 6f 69 64 20 53 65  abstract void Se
55f0: 74 4c 6f 61 64 45 78 74 65 6e 73 69 6f 6e 28 62  tLoadExtension(b
5600: 6f 6f 6c 20 62 4f 6e 4f 66 66 29 3b 0d 0a 20 20  ool bOnOff);..  
5610: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5620: 0a 20 20 20 20 2f 2f 2f 20 4c 6f 61 64 73 20 61  .    /// Loads a
5630: 20 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69 6f   SQLite extensio
5640: 6e 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20 74  n library from t
5650: 68 65 20 6e 61 6d 65 64 20 66 69 6c 65 2e 0d 0a  he named file...
5660: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
5670: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
5680: 61 6d 20 6e 61 6d 65 3d 22 66 69 6c 65 4e 61 6d  am name="fileNam
5690: 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
56a0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 79 6e   name of the dyn
56b0: 61 6d 69 63 20 6c 69 6e 6b 20 6c 69 62 72 61 72  amic link librar
56c0: 79 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e  y file containin
56d0: 67 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 2e  g the extension.
56e0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
56f0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
5700: 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 63 4e 61 6d  am name="procNam
5710: 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  e">..    /// The
5720: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 78 70   name of the exp
5730: 6f 72 74 65 64 20 66 75 6e 63 74 69 6f 6e 20 75  orted function u
5740: 73 65 64 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a  sed to initializ
5750: 65 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 2e  e the extension.
5760: 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 6e 75 6c  ..    /// If nul
5770: 6c 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 22  l, the default "
5780: 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 73 69 6f  sqlite3_extensio
5790: 6e 5f 69 6e 69 74 22 20 77 69 6c 6c 20 62 65 20  n_init" will be 
57a0: 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  used...    /// <
57b0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74  /param>..    int
57c0: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
57d0: 6f 69 64 20 4c 6f 61 64 45 78 74 65 6e 73 69 6f  oid LoadExtensio
57e0: 6e 28 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d  n(string fileNam
57f0: 65 2c 20 73 74 72 69 6e 67 20 70 72 6f 63 4e 61  e, string procNa
5800: 6d 65 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  me);..    /// <s
5810: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
5820: 20 45 6e 61 62 6c 65 73 20 6f 72 20 64 69 73 61   Enables or disa
5830: 62 6c 65 73 20 65 78 74 65 6e 65 64 20 72 65 73  bles extened res
5840: 75 6c 74 20 63 6f 64 65 73 20 72 65 74 75 72 6e  ult codes return
5850: 65 64 20 62 79 20 53 51 4c 69 74 65 0d 0a 20 20  ed by SQLite..  
5860: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5870: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
5880: 20 6e 61 6d 65 3d 22 62 4f 6e 4f 66 66 22 3e 74   name="bOnOff">t
5890: 72 75 65 20 74 6f 20 65 6e 61 62 6c 65 20 65 78  rue to enable ex
58a0: 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f  tended result co
58b0: 64 65 73 2c 20 66 61 6c 73 65 20 74 6f 20 64 69  des, false to di
58c0: 73 61 62 6c 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  sable.</param>..
58d0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
58e0: 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  ></returns>..   
58f0: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
5900: 63 74 20 76 6f 69 64 20 53 65 74 45 78 74 65 6e  ct void SetExten
5910: 64 65 64 52 65 73 75 6c 74 43 6f 64 65 73 28 62  dedResultCodes(b
5920: 6f 6f 6c 20 62 4f 6e 4f 66 66 29 3b 0d 0a 20 20  ool bOnOff);..  
5930: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5940: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
5950: 20 74 68 65 20 6e 75 6d 65 72 69 63 20 72 65 73   the numeric res
5960: 75 6c 74 20 63 6f 64 65 20 66 6f 72 20 74 68 65  ult code for the
5970: 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 66 61 69   most recent fai
5980: 6c 65 64 20 53 51 4c 69 74 65 20 41 50 49 20 63  led SQLite API c
5990: 61 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20 61 73 73  all..    /// ass
59a0: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
59b0: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
59c0: 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tion...    /// <
59d0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
59e0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 52 65 73 75  // <returns>Resu
59f0: 6c 74 20 63 6f 64 65 3c 2f 72 65 74 75 72 6e 73  lt code</returns
5a00: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
5a10: 61 62 73 74 72 61 63 74 20 53 51 4c 69 74 65 45  abstract SQLiteE
5a20: 72 72 6f 72 43 6f 64 65 20 52 65 73 75 6c 74 43  rrorCode ResultC
5a30: 6f 64 65 28 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20  ode();..    /// 
5a40: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
5a50: 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65 20 65  // Returns the e
5a60: 78 74 65 6e 64 65 64 20 6e 75 6d 65 72 69 63 20  xtended numeric 
5a70: 72 65 73 75 6c 74 20 63 6f 64 65 20 66 6f 72 20  result code for 
5a80: 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20  the most recent 
5a90: 66 61 69 6c 65 64 20 53 51 4c 69 74 65 20 41 50  failed SQLite AP
5aa0: 49 20 63 61 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20  I call..    /// 
5ab0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
5ac0: 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
5ad0: 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 2f 2f  nection...    //
5ae0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5af0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 45    /// <returns>E
5b00: 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63  xtended result c
5b10: 6f 64 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ode</returns>.. 
5b20: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
5b30: 72 61 63 74 20 53 51 4c 69 74 65 45 72 72 6f 72  ract SQLiteError
5b40: 43 6f 64 65 20 45 78 74 65 6e 64 65 64 52 65 73  Code ExtendedRes
5b50: 75 6c 74 43 6f 64 65 28 29 3b 0d 0a 0d 0a 20 20  ultCode();....  
5b60: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5b70: 0a 20 20 20 20 2f 2f 2f 20 41 64 64 20 61 20 6c  .    /// Add a l
5b80: 6f 67 20 6d 65 73 73 61 67 65 20 76 69 61 20 74  og message via t
5b90: 68 65 20 53 51 4c 69 74 65 20 73 71 6c 69 74 65  he SQLite sqlite
5ba0: 33 5f 6c 6f 67 20 69 6e 74 65 72 66 61 63 65 2e  3_log interface.
5bb0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
5bc0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
5bd0: 61 72 61 6d 20 6e 61 6d 65 3d 22 69 45 72 72 43  aram name="iErrC
5be0: 6f 64 65 22 3e 45 72 72 6f 72 20 63 6f 64 65 20  ode">Error code 
5bf0: 74 6f 20 62 65 20 6c 6f 67 67 65 64 20 77 69 74  to be logged wit
5c00: 68 20 74 68 65 20 6d 65 73 73 61 67 65 2e 3c 2f  h the message.</
5c10: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
5c20: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 7a 4d 65  <param name="zMe
5c30: 73 73 61 67 65 22 3e 53 74 72 69 6e 67 20 74 6f  ssage">String to
5c40: 20 62 65 20 6c 6f 67 67 65 64 2e 20 20 55 6e 6c   be logged.  Unl
5c50: 69 6b 65 20 74 68 65 20 53 51 4c 69 74 65 20 73  ike the SQLite s
5c60: 71 6c 69 74 65 33 5f 6c 6f 67 28 29 0d 0a 20 20  qlite3_log()..  
5c70: 20 20 2f 2f 2f 20 69 6e 74 65 72 66 61 63 65 2c    /// interface,
5c80: 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20   this should be 
5c90: 70 72 65 2d 66 6f 72 6d 61 74 74 65 64 2e 20 20  pre-formatted.  
5ca0: 43 6f 6e 73 69 64 65 72 20 75 73 69 6e 67 20 74  Consider using t
5cb0: 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 53 74 72 69  he..    /// Stri
5cc0: 6e 67 2e 46 6f 72 6d 61 74 28 29 20 66 75 6e 63  ng.Format() func
5cd0: 74 69 6f 6e 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  tion.</param>.. 
5ce0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
5cf0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
5d00: 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63  internal abstrac
5d10: 74 20 76 6f 69 64 20 4c 6f 67 4d 65 73 73 61 67  t void LogMessag
5d20: 65 28 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e(SQLiteErrorCod
5d30: 65 20 69 45 72 72 43 6f 64 65 2c 20 73 74 72 69  e iErrCode, stri
5d40: 6e 67 20 7a 4d 65 73 73 61 67 65 29 3b 0d 0a 0d  ng zMessage);...
5d50: 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 43 4f 44  .#if INTEROP_COD
5d60: 45 43 20 7c 7c 20 49 4e 54 45 52 4f 50 5f 49 4e  EC || INTEROP_IN
5d70: 43 4c 55 44 45 5f 53 45 45 0d 0a 20 20 20 20 69  CLUDE_SEE..    i
5d80: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
5d90: 20 76 6f 69 64 20 53 65 74 50 61 73 73 77 6f 72   void SetPasswor
5da0: 64 28 62 79 74 65 5b 5d 20 70 61 73 73 77 6f 72  d(byte[] passwor
5db0: 64 42 79 74 65 73 29 3b 0d 0a 20 20 20 20 69 6e  dBytes);..    in
5dc0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
5dd0: 76 6f 69 64 20 43 68 61 6e 67 65 50 61 73 73 77  void ChangePassw
5de0: 6f 72 64 28 62 79 74 65 5b 5d 20 6e 65 77 50 61  ord(byte[] newPa
5df0: 73 73 77 6f 72 64 42 79 74 65 73 29 3b 0d 0a 23  sswordBytes);..#
5e00: 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 69 6e 74  endif....    int
5e10: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
5e20: 6f 69 64 20 53 65 74 50 72 6f 67 72 65 73 73 48  oid SetProgressH
5e30: 6f 6f 6b 28 69 6e 74 20 6e 4f 70 73 2c 20 53 51  ook(int nOps, SQ
5e40: 4c 69 74 65 50 72 6f 67 72 65 73 73 43 61 6c 6c  LiteProgressCall
5e50: 62 61 63 6b 20 66 75 6e 63 29 3b 0d 0a 20 20 20  back func);..   
5e60: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
5e70: 63 74 20 76 6f 69 64 20 53 65 74 41 75 74 68 6f  ct void SetAutho
5e80: 72 69 7a 65 72 48 6f 6f 6b 28 53 51 4c 69 74 65  rizerHook(SQLite
5e90: 41 75 74 68 6f 72 69 7a 65 72 43 61 6c 6c 62 61  AuthorizerCallba
5ea0: 63 6b 20 66 75 6e 63 29 3b 0d 0a 20 20 20 20 69  ck func);..    i
5eb0: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
5ec0: 20 76 6f 69 64 20 53 65 74 55 70 64 61 74 65 48   void SetUpdateH
5ed0: 6f 6f 6b 28 53 51 4c 69 74 65 55 70 64 61 74 65  ook(SQLiteUpdate
5ee0: 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 29 3b 0d  Callback func);.
5ef0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62  .    internal ab
5f00: 73 74 72 61 63 74 20 76 6f 69 64 20 53 65 74 43  stract void SetC
5f10: 6f 6d 6d 69 74 48 6f 6f 6b 28 53 51 4c 69 74 65  ommitHook(SQLite
5f20: 43 6f 6d 6d 69 74 43 61 6c 6c 62 61 63 6b 20 66  CommitCallback f
5f30: 75 6e 63 29 3b 0d 0a 20 20 20 20 69 6e 74 65 72  unc);..    inter
5f40: 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76 6f 69  nal abstract voi
5f50: 64 20 53 65 74 54 72 61 63 65 43 61 6c 6c 62 61  d SetTraceCallba
5f60: 63 6b 28 53 51 4c 69 74 65 54 72 61 63 65 43 61  ck(SQLiteTraceCa
5f70: 6c 6c 62 61 63 6b 20 66 75 6e 63 29 3b 0d 0a 20  llback func);.. 
5f80: 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74     internal abst
5f90: 72 61 63 74 20 76 6f 69 64 20 53 65 74 54 72 61  ract void SetTra
5fa0: 63 65 43 61 6c 6c 62 61 63 6b 32 28 53 51 4c 69  ceCallback2(SQLi
5fb0: 74 65 54 72 61 63 65 46 6c 61 67 73 20 6d 61 73  teTraceFlags mas
5fc0: 6b 2c 20 53 51 4c 69 74 65 54 72 61 63 65 43 61  k, SQLiteTraceCa
5fd0: 6c 6c 62 61 63 6b 32 20 66 75 6e 63 29 3b 0d 0a  llback2 func);..
5fe0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
5ff0: 74 72 61 63 74 20 76 6f 69 64 20 53 65 74 52 6f  tract void SetRo
6000: 6c 6c 62 61 63 6b 48 6f 6f 6b 28 53 51 4c 69 74  llbackHook(SQLit
6010: 65 52 6f 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63  eRollbackCallbac
6020: 6b 20 66 75 6e 63 29 3b 0d 0a 20 20 20 20 69 6e  k func);..    in
6030: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
6040: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
6050: 53 65 74 4c 6f 67 43 61 6c 6c 62 61 63 6b 28 53  SetLogCallback(S
6060: 51 4c 69 74 65 4c 6f 67 43 61 6c 6c 62 61 63 6b  QLiteLogCallback
6070: 20 66 75 6e 63 29 3b 0d 0a 0d 0a 20 20 20 20 2f   func);....    /
6080: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6090: 20 20 2f 2f 2f 20 43 68 65 63 6b 73 20 69 66 20    /// Checks if 
60a0: 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  the SQLite core 
60b0: 6c 69 62 72 61 72 79 20 68 61 73 20 62 65 65 6e  library has been
60c0: 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 69 6e 20   initialized in 
60d0: 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
60e0: 65 73 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ess...    /// </
60f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
6100: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
6110: 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66   /// Non-zero if
6120: 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   the SQLite core
6130: 20 6c 69 62 72 61 72 79 20 68 61 73 20 62 65 65   library has bee
6140: 6e 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 69 6e  n initialized in
6150: 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
6160: 63 65 73 73 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a  cess,..    /// z
6170: 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a  ero otherwise...
6180: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
6190: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
61a0: 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c 20 49   abstract bool I
61b0: 73 49 6e 69 74 69 61 6c 69 7a 65 64 28 29 3b 0d  sInitialized();.
61c0: 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ...    internal 
61d0: 61 62 73 74 72 61 63 74 20 69 6e 74 20 47 65 74  abstract int Get
61e0: 43 75 72 73 6f 72 46 6f 72 54 61 62 6c 65 28 53  CursorForTable(S
61f0: 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73  QLiteStatement s
6200: 74 6d 74 2c 20 69 6e 74 20 64 61 74 61 62 61 73  tmt, int databas
6210: 65 2c 20 69 6e 74 20 72 6f 6f 74 50 61 67 65 29  e, int rootPage)
6220: 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  ;..    internal 
6230: 61 62 73 74 72 61 63 74 20 6c 6f 6e 67 20 47 65  abstract long Ge
6240: 74 52 6f 77 49 64 46 6f 72 43 75 72 73 6f 72 28  tRowIdForCursor(
6250: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20  SQLiteStatement 
6260: 73 74 6d 74 2c 20 69 6e 74 20 63 75 72 73 6f 72  stmt, int cursor
6270: 29 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e  );....    intern
6280: 61 6c 20 61 62 73 74 72 61 63 74 20 6f 62 6a 65  al abstract obje
6290: 63 74 20 47 65 74 56 61 6c 75 65 28 53 51 4c 69  ct GetValue(SQLi
62a0: 74 65 53 74 61 74 65 6d 65 6e 74 20 73 74 6d 74  teStatement stmt
62b0: 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  , SQLiteConnecti
62c0: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 2c 20 69  onFlags flags, i
62d0: 6e 74 20 69 6e 64 65 78 2c 20 53 51 4c 69 74 65  nt index, SQLite
62e0: 54 79 70 65 20 74 79 70 29 3b 0d 0a 0d 0a 20 20  Type typ);....  
62f0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6300: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
6310: 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   non-zero if the
6320: 20 67 69 76 65 6e 20 64 61 74 61 62 61 73 65 20   given database 
6330: 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 69 6e  connection is in
6340: 20 61 75 74 6f 63 6f 6d 6d 69 74 20 6d 6f 64 65   autocommit mode
6350: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 41 75 74 6f 63  ...    /// Autoc
6360: 6f 6d 6d 69 74 20 6d 6f 64 65 20 69 73 20 6f 6e  ommit mode is on
6370: 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 41 75   by default.  Au
6380: 74 6f 63 6f 6d 6d 69 74 20 6d 6f 64 65 20 69 73  tocommit mode is
6390: 20 64 69 73 61 62 6c 65 64 20 62 79 20 61 20 42   disabled by a B
63a0: 45 47 49 4e 0d 0a 20 20 20 20 2f 2f 2f 20 73 74  EGIN..    /// st
63b0: 61 74 65 6d 65 6e 74 2e 20 20 41 75 74 6f 63 6f  atement.  Autoco
63c0: 6d 6d 69 74 20 6d 6f 64 65 20 69 73 20 72 65 2d  mmit mode is re-
63d0: 65 6e 61 62 6c 65 64 20 62 79 20 61 20 43 4f 4d  enabled by a COM
63e0: 4d 49 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 2e  MIT or ROLLBACK.
63f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
6400: 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  ary>..    intern
6410: 61 6c 20 61 62 73 74 72 61 63 74 20 62 6f 6f 6c  al abstract bool
6420: 20 41 75 74 6f 43 6f 6d 6d 69 74 0d 0a 20 20 20   AutoCommit..   
6430: 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 3b 0d 0a   {..      get;..
6440: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74      }....    int
6450: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 53  ernal abstract S
6460: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 46  QLiteErrorCode F
6470: 69 6c 65 43 6f 6e 74 72 6f 6c 28 73 74 72 69 6e  ileControl(strin
6480: 67 20 7a 44 62 4e 61 6d 65 2c 20 69 6e 74 20 6f  g zDbName, int o
6490: 70 2c 20 49 6e 74 50 74 72 20 70 41 72 67 29 3b  p, IntPtr pArg);
64a0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
64b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
64c0: 72 65 61 74 65 73 20 61 20 6e 65 77 20 53 51 4c  reates a new SQL
64d0: 69 74 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63  ite backup objec
64e0: 74 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 70  t based on the p
64f0: 72 6f 76 69 64 65 64 20 64 65 73 74 69 6e 61 74  rovided destinat
6500: 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 64 61 74  ion..    /// dat
6510: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
6520: 2e 20 20 54 68 65 20 73 6f 75 72 63 65 20 64 61  .  The source da
6530: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
6540: 6e 20 69 73 20 74 68 65 20 6f 6e 65 0d 0a 20 20  n is the one..  
6550: 20 20 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64    /// associated
6560: 20 77 69 74 68 20 74 68 69 73 20 6f 62 6a 65 63   with this objec
6570: 74 2e 20 20 54 68 65 20 73 6f 75 72 63 65 20 61  t.  The source a
6580: 6e 64 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 64  nd destination d
6590: 61 74 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f  atabase..    ///
65a0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 63 61 6e   connections can
65b0: 6e 6f 74 20 62 65 20 74 68 65 20 73 61 6d 65 2e  not be the same.
65c0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
65d0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
65e0: 61 72 61 6d 20 6e 61 6d 65 3d 22 64 65 73 74 43  aram name="destC
65f0: 6e 6e 22 3e 54 68 65 20 64 65 73 74 69 6e 61 74  nn">The destinat
6600: 69 6f 6e 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ion database con
6610: 6e 65 63 74 69 6f 6e 2e 3c 2f 70 61 72 61 6d 3e  nection.</param>
6620: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
6630: 20 6e 61 6d 65 3d 22 64 65 73 74 4e 61 6d 65 22   name="destName"
6640: 3e 54 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e  >The destination
6650: 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65 2e 3c   database name.<
6660: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
6670: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f   <param name="so
6680: 75 72 63 65 4e 61 6d 65 22 3e 54 68 65 20 73 6f  urceName">The so
6690: 75 72 63 65 20 64 61 74 61 62 61 73 65 20 6e 61  urce database na
66a0: 6d 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  me.</param>..   
66b0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68   /// <returns>Th
66c0: 65 20 6e 65 77 6c 79 20 63 72 65 61 74 65 64 20  e newly created 
66d0: 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 2e 3c 2f  backup object.</
66e0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
66f0: 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20  ternal abstract 
6700: 53 51 4c 69 74 65 42 61 63 6b 75 70 20 49 6e 69  SQLiteBackup Ini
6710: 74 69 61 6c 69 7a 65 42 61 63 6b 75 70 28 0d 0a  tializeBackup(..
6720: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
6730: 6e 6e 65 63 74 69 6f 6e 20 64 65 73 74 43 6e 6e  nnection destCnn
6740: 2c 20 73 74 72 69 6e 67 20 64 65 73 74 4e 61 6d  , string destNam
6750: 65 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  e,..        stri
6760: 6e 67 20 73 6f 75 72 63 65 4e 61 6d 65 29 3b 0d  ng sourceName);.
6770: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
6780: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
6790: 70 69 65 73 20 75 70 20 74 6f 20 4e 20 70 61 67  pies up to N pag
67a0: 65 73 20 66 72 6f 6d 20 74 68 65 20 73 6f 75 72  es from the sour
67b0: 63 65 20 64 61 74 61 62 61 73 65 20 74 6f 20 74  ce database to t
67c0: 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e 0d 0a  he destination..
67d0: 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73 65      /// database
67e0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
67f0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 62   the specified b
6800: 61 63 6b 75 70 20 6f 62 6a 65 63 74 2e 0d 0a 20  ackup object... 
6810: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
6820: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
6830: 6d 20 6e 61 6d 65 3d 22 62 61 63 6b 75 70 22 3e  m name="backup">
6840: 54 68 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63  The backup objec
6850: 74 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d  t to use.</param
6860: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
6870: 6d 20 6e 61 6d 65 3d 22 6e 50 61 67 65 22 3e 0d  m name="nPage">.
6880: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d  .    /// The num
6890: 62 65 72 20 6f 66 20 70 61 67 65 73 20 74 6f 20  ber of pages to 
68a0: 63 6f 70 79 20 6f 72 20 6e 65 67 61 74 69 76 65  copy or negative
68b0: 20 74 6f 20 63 6f 70 79 20 61 6c 6c 20 72 65 6d   to copy all rem
68c0: 61 69 6e 69 6e 67 20 70 61 67 65 73 2e 0d 0a 20  aining pages... 
68d0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
68e0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
68f0: 6e 61 6d 65 3d 22 72 65 74 72 79 22 3e 0d 0a 20  name="retry">.. 
6900: 20 20 20 2f 2f 2f 20 53 65 74 20 74 6f 20 74 72     /// Set to tr
6910: 75 65 20 69 66 20 74 68 65 20 6f 70 65 72 61 74  ue if the operat
6920: 69 6f 6e 20 6e 65 65 64 73 20 74 6f 20 62 65 20  ion needs to be 
6930: 72 65 74 72 69 65 64 20 64 75 65 20 74 6f 20 64  retried due to d
6940: 61 74 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f  atabase..    ///
6950: 20 6c 6f 63 6b 69 6e 67 20 69 73 73 75 65 73 2e   locking issues.
6960: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
6970: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
6980: 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  urns>..    /// T
6990: 72 75 65 20 69 66 20 74 68 65 72 65 20 61 72 65  rue if there are
69a0: 20 6d 6f 72 65 20 70 61 67 65 73 20 74 6f 20 62   more pages to b
69b0: 65 20 63 6f 70 69 65 64 2c 20 66 61 6c 73 65 20  e copied, false 
69c0: 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20  otherwise...    
69d0: 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
69e0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 61 62 73      internal abs
69f0: 74 72 61 63 74 20 62 6f 6f 6c 20 53 74 65 70 42  tract bool StepB
6a00: 61 63 6b 75 70 28 53 51 4c 69 74 65 42 61 63 6b  ackup(SQLiteBack
6a10: 75 70 20 62 61 63 6b 75 70 2c 20 69 6e 74 20 6e  up backup, int n
6a20: 50 61 67 65 2c 20 72 65 66 20 62 6f 6f 6c 20 72  Page, ref bool r
6a30: 65 74 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  etry);....    //
6a40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
6a50: 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65   /// Returns the
6a60: 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 67 65 73   number of pages
6a70: 20 72 65 6d 61 69 6e 69 6e 67 20 74 6f 20 62 65   remaining to be
6a80: 20 63 6f 70 69 65 64 20 66 72 6f 6d 20 74 68 65   copied from the
6a90: 20 73 6f 75 72 63 65 0d 0a 20 20 20 20 2f 2f 2f   source..    ///
6aa0: 20 64 61 74 61 62 61 73 65 20 74 6f 20 74 68 65   database to the
6ab0: 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 64 61 74   destination dat
6ac0: 61 62 61 73 65 20 61 73 73 6f 63 69 61 74 65 64  abase associated
6ad0: 20 77 69 74 68 20 74 68 65 20 73 70 65 63 69 66   with the specif
6ae0: 69 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 62 61 63  ied..    /// bac
6af0: 6b 75 70 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20  kup object...   
6b00: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
6b10: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
6b20: 6e 61 6d 65 3d 22 62 61 63 6b 75 70 22 3e 54 68  name="backup">Th
6b30: 65 20 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 20  e backup object 
6b40: 74 6f 20 63 68 65 63 6b 2e 3c 2f 70 61 72 61 6d  to check.</param
6b50: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
6b60: 72 6e 73 3e 54 68 65 20 6e 75 6d 62 65 72 20 6f  rns>The number o
6b70: 66 20 70 61 67 65 73 20 72 65 6d 61 69 6e 69 6e  f pages remainin
6b80: 67 20 74 6f 20 62 65 20 63 6f 70 69 65 64 2e 3c  g to be copied.<
6b90: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
6ba0: 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74  nternal abstract
6bb0: 20 69 6e 74 20 52 65 6d 61 69 6e 69 6e 67 42 61   int RemainingBa
6bc0: 63 6b 75 70 28 53 51 4c 69 74 65 42 61 63 6b 75  ckup(SQLiteBacku
6bd0: 70 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20  p backup);....  
6be0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
6bf0: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
6c00: 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65   the total numbe
6c10: 72 20 6f 66 20 70 61 67 65 73 20 69 6e 20 74 68  r of pages in th
6c20: 65 20 73 6f 75 72 63 65 20 64 61 74 61 62 61 73  e source databas
6c30: 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a 20 20  e associated..  
6c40: 20 20 2f 2f 2f 20 77 69 74 68 20 74 68 65 20 73    /// with the s
6c50: 70 65 63 69 66 69 65 64 20 62 61 63 6b 75 70 20  pecified backup 
6c60: 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f  object...    ///
6c70: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
6c80: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
6c90: 3d 22 62 61 63 6b 75 70 22 3e 54 68 65 20 62 61  ="backup">The ba
6ca0: 63 6b 75 70 20 6f 62 6a 65 63 74 20 74 6f 20 63  ckup object to c
6cb0: 68 65 63 6b 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  heck.</param>.. 
6cc0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
6cd0: 54 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72  The total number
6ce0: 20 6f 66 20 70 61 67 65 73 20 69 6e 20 74 68 65   of pages in the
6cf0: 20 73 6f 75 72 63 65 20 64 61 74 61 62 61 73 65   source database
6d00: 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
6d10: 20 69 6e 74 65 72 6e 61 6c 20 61 62 73 74 72 61   internal abstra
6d20: 63 74 20 69 6e 74 20 50 61 67 65 43 6f 75 6e 74  ct int PageCount
6d30: 42 61 63 6b 75 70 28 53 51 4c 69 74 65 42 61 63  Backup(SQLiteBac
6d40: 6b 75 70 20 62 61 63 6b 75 70 29 3b 0d 0a 0d 0a  kup backup);....
6d50: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6d60: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 73 74 72  >..    /// Destr
6d70: 6f 79 73 20 74 68 65 20 62 61 63 6b 75 70 20 6f  oys the backup o
6d80: 62 6a 65 63 74 2c 20 72 6f 6c 6c 69 6e 67 20 62  bject, rolling b
6d90: 61 63 6b 20 61 6e 79 20 62 61 63 6b 75 70 20 74  ack any backup t
6da0: 68 61 74 20 6d 61 79 20 62 65 20 69 6e 0d 0a 20  hat may be in.. 
6db0: 20 20 20 2f 2f 2f 20 70 72 6f 67 65 73 73 2e 0d     /// progess..
6dc0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
6dd0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
6de0: 72 61 6d 20 6e 61 6d 65 3d 22 62 61 63 6b 75 70  ram name="backup
6df0: 22 3e 54 68 65 20 62 61 63 6b 75 70 20 6f 62 6a  ">The backup obj
6e00: 65 63 74 20 74 6f 20 64 65 73 74 72 6f 79 2e 3c  ect to destroy.<
6e10: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74  /param>..    int
6e20: 65 72 6e 61 6c 20 61 62 73 74 72 61 63 74 20 76  ernal abstract v
6e30: 6f 69 64 20 46 69 6e 69 73 68 42 61 63 6b 75 70  oid FinishBackup
6e40: 28 53 51 4c 69 74 65 42 61 63 6b 75 70 20 62 61  (SQLiteBackup ba
6e50: 63 6b 75 70 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  ckup);....    //
6e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
6ec0: 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69  .    #region IDi
6ed0: 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73  sposable Members
6ee0: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69  ..    public voi
6ef0: 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20  d Dispose()..   
6f00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 44 69 73 70   {..        Disp
6f10: 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20  ose(true);..    
6f20: 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
6f30: 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
6f40: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
6f50: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
6f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
6fc0: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
6fd0: 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e  posable "Pattern
6fe0: 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 70  " Members..    p
6ff0: 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70  rivate bool disp
7000: 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72 69 76 61  osed;..    priva
7010: 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73  te void CheckDis
7020: 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77  posed() /* throw
7030: 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 23 69 66 20   */..    {..#if 
7040: 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45  THROW_ON_DISPOSE
7050: 44 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 64  D..        if (d
7060: 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
7070: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
7080: 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78  ObjectDisposedEx
7090: 63 65 70 74 69 6f 6e 28 74 79 70 65 6f 66 28 53  ception(typeof(S
70a0: 51 4c 69 74 65 42 61 73 65 29 2e 4e 61 6d 65 29  QLiteBase).Name)
70b0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 7d  ;..#endif..    }
70c0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
70d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
70f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7120: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70  ///////....    p
7130: 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c  rotected virtual
7140: 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 62 6f   void Dispose(bo
7150: 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20  ol disposing).. 
7160: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
7170: 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20   (!disposed)..  
7180: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7190: 20 20 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f       //if (dispo
71a0: 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20  sing)..         
71b0: 20 20 20 2f 2f 7b 0d 0a 20 20 20 20 20 20 20 20     //{..        
71c0: 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
71d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
71e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
71f0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
7200: 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e    // dispose man
7210: 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
7220: 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
7230: 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f      //    //////
7240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7260: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 7d 0d              //}.
7270: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 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 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
72b0: 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e     // release un
72c0: 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65  managed resource
72d0: 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20  s here.....     
72e0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
72f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7310: 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73  .            dis
7320: 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  posed = true;.. 
7330: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
7340: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
7350: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
7360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73b0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
73c0: 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72  egion Destructor
73d0: 0d 0a 20 20 20 20 7e 53 51 4c 69 74 65 42 61 73  ..    ~SQLiteBas
73e0: 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  e()..    {..    
73f0: 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73      Dispose(fals
7400: 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  e);..    }..    
7410: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
7420: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
7430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7480: 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 20 54 68 65 73  /....    // Thes
7490: 65 20 73 74 61 74 69 63 73 20 61 72 65 20 68 65  e statics are he
74a0: 72 65 20 66 6f 72 20 6c 61 63 6b 20 6f 66 20 61  re for lack of a
74b0: 20 62 65 74 74 65 72 20 70 6c 61 63 65 20 74 6f   better place to
74c0: 20 70 75 74 20 74 68 65 6d 2e 0d 0a 20 20 20 20   put them...    
74d0: 2f 2f 20 54 68 65 79 20 65 78 69 73 74 20 68 65  // They exist he
74e0: 72 65 20 62 65 63 61 75 73 65 20 74 68 65 79 20  re because they 
74f0: 61 72 65 20 63 61 6c 6c 65 64 20 64 75 72 69 6e  are called durin
7500: 67 20 74 68 65 20 66 69 6e 61 6c 69 7a 61 74 69  g the finalizati
7510: 6f 6e 20 6f 66 0d 0a 20 20 20 20 2f 2f 20 61 20  on of..    // a 
7520: 53 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 48  SQLiteStatementH
7530: 61 6e 64 6c 65 2c 20 53 51 4c 69 74 65 43 6f 6e  andle, SQLiteCon
7540: 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 2c 20 61  nectionHandle, a
7550: 6e 64 20 53 51 4c 69 74 65 46 75 6e 63 74 69 6f  nd SQLiteFunctio
7560: 6e 43 6f 6f 6b 69 65 48 61 6e 64 6c 65 2e 0d 0a  nCookieHandle...
7570: 20 20 20 20 2f 2f 20 54 68 65 72 65 66 6f 72 65      // Therefore
7580: 20 74 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73   these functions
7590: 20 68 61 76 65 20 74 6f 20 62 65 20 73 74 61 74   have to be stat
75a0: 69 63 2c 20 61 6e 64 20 68 61 76 65 20 74 6f 20  ic, and have to 
75b0: 62 65 20 6c 6f 77 2d 6c 65 76 65 6c 2e 0d 0a 0d  be low-level....
75c0: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
75d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7620: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 72 69 76  ////....    priv
7630: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
7640: 67 5b 5d 20 5f 65 72 72 6f 72 4d 65 73 73 61 67  g[] _errorMessag
7650: 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20  es = {..        
7660: 2f 2a 20 53 51 4c 49 54 45 5f 4f 4b 20 20 20 20  /* SQLITE_OK    
7670: 20 20 20 20 20 20 2a 2f 20 22 6e 6f 74 20 61 6e        */ "not an
7680: 20 65 72 72 6f 72 22 2c 0d 0a 20 20 20 20 20 20   error",..      
7690: 20 20 2f 2a 20 53 51 4c 49 54 45 5f 45 52 52 4f    /* SQLITE_ERRO
76a0: 52 20 20 20 20 20 20 20 2a 2f 20 22 53 51 4c 20  R       */ "SQL 
76b0: 6c 6f 67 69 63 20 65 72 72 6f 72 22 2c 0d 0a 20  logic error",.. 
76c0: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45         /* SQLITE
76d0: 5f 49 4e 54 45 52 4e 41 4c 20 20 20 20 2a 2f 20  _INTERNAL    */ 
76e0: 22 69 6e 74 65 72 6e 61 6c 20 6c 6f 67 69 63 20  "internal logic 
76f0: 65 72 72 6f 72 22 2c 0d 0a 20 20 20 20 20 20 20  error",..       
7700: 20 2f 2a 20 53 51 4c 49 54 45 5f 50 45 52 4d 20   /* SQLITE_PERM 
7710: 20 20 20 20 20 20 20 2a 2f 20 22 61 63 63 65 73         */ "acces
7720: 73 20 70 65 72 6d 69 73 73 69 6f 6e 20 64 65 6e  s permission den
7730: 69 65 64 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f  ied",..        /
7740: 2a 20 53 51 4c 49 54 45 5f 41 42 4f 52 54 20 20  * SQLITE_ABORT  
7750: 20 20 20 20 20 2a 2f 20 22 71 75 65 72 79 20 61       */ "query a
7760: 62 6f 72 74 65 64 22 2c 0d 0a 20 20 20 20 20 20  borted",..      
7770: 20 20 2f 2a 20 53 51 4c 49 54 45 5f 42 55 53 59    /* SQLITE_BUSY
7780: 20 20 20 20 20 20 20 20 2a 2f 20 22 64 61 74 61          */ "data
7790: 62 61 73 65 20 69 73 20 6c 6f 63 6b 65 64 22 2c  base is locked",
77a0: 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ..        /* SQL
77b0: 49 54 45 5f 4c 4f 43 4b 45 44 20 20 20 20 20 20  ITE_LOCKED      
77c0: 2a 2f 20 22 64 61 74 61 62 61 73 65 20 74 61 62  */ "database tab
77d0: 6c 65 20 69 73 20 6c 6f 63 6b 65 64 22 2c 0d 0a  le is locked",..
77e0: 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54          /* SQLIT
77f0: 45 5f 4e 4f 4d 45 4d 20 20 20 20 20 20 20 2a 2f  E_NOMEM       */
7800: 20 22 6f 75 74 20 6f 66 20 6d 65 6d 6f 72 79 22   "out of memory"
7810: 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51  ,..        /* SQ
7820: 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20 20 20  LITE_READONLY   
7830: 20 2a 2f 20 22 61 74 74 65 6d 70 74 20 74 6f 20   */ "attempt to 
7840: 77 72 69 74 65 20 61 20 72 65 61 64 6f 6e 6c 79  write a readonly
7850: 20 64 61 74 61 62 61 73 65 22 2c 0d 0a 20 20 20   database",..   
7860: 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 49       /* SQLITE_I
7870: 4e 54 45 52 52 55 50 54 20 20 20 2a 2f 20 22 69  NTERRUPT   */ "i
7880: 6e 74 65 72 72 75 70 74 65 64 22 2c 0d 0a 20 20  nterrupted",..  
7890: 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f        /* SQLITE_
78a0: 49 4f 45 52 52 20 20 20 20 20 20 20 2a 2f 20 22  IOERR       */ "
78b0: 64 69 73 6b 20 49 2f 4f 20 65 72 72 6f 72 22 2c  disk I/O error",
78c0: 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ..        /* SQL
78d0: 49 54 45 5f 43 4f 52 52 55 50 54 20 20 20 20 20  ITE_CORRUPT     
78e0: 2a 2f 20 22 64 61 74 61 62 61 73 65 20 64 69 73  */ "database dis
78f0: 6b 20 69 6d 61 67 65 20 69 73 20 6d 61 6c 66 6f  k image is malfo
7900: 72 6d 65 64 22 2c 0d 0a 20 20 20 20 20 20 20 20  rmed",..        
7910: 2f 2a 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55  /* SQLITE_NOTFOU
7920: 4e 44 20 20 20 20 2a 2f 20 22 75 6e 6b 6e 6f 77  ND    */ "unknow
7930: 6e 20 6f 70 65 72 61 74 69 6f 6e 22 2c 0d 0a 20  n operation",.. 
7940: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45         /* SQLITE
7950: 5f 46 55 4c 4c 20 20 20 20 20 20 20 20 2a 2f 20  _FULL        */ 
7960: 22 64 61 74 61 62 61 73 65 20 6f 72 20 64 69 73  "database or dis
7970: 6b 20 69 73 20 66 75 6c 6c 22 2c 0d 0a 20 20 20  k is full",..   
7980: 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 43       /* SQLITE_C
7990: 41 4e 54 4f 50 45 4e 20 20 20 20 2a 2f 20 22 75  ANTOPEN    */ "u
79a0: 6e 61 62 6c 65 20 74 6f 20 6f 70 65 6e 20 64 61  nable to open da
79b0: 74 61 62 61 73 65 20 66 69 6c 65 22 2c 0d 0a 20  tabase file",.. 
79c0: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45         /* SQLITE
79d0: 5f 50 52 4f 54 4f 43 4f 4c 20 20 20 20 2a 2f 20  _PROTOCOL    */ 
79e0: 22 6c 6f 63 6b 69 6e 67 20 70 72 6f 74 6f 63 6f  "locking protoco
79f0: 6c 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  l",..        /* 
7a00: 53 51 4c 49 54 45 5f 45 4d 50 54 59 20 20 20 20  SQLITE_EMPTY    
7a10: 20 20 20 2a 2f 20 22 74 61 62 6c 65 20 63 6f 6e     */ "table con
7a20: 74 61 69 6e 73 20 6e 6f 20 64 61 74 61 22 2c 0d  tains no data",.
7a30: 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49  .        /* SQLI
7a40: 54 45 5f 53 43 48 45 4d 41 20 20 20 20 20 20 2a  TE_SCHEMA      *
7a50: 2f 20 22 64 61 74 61 62 61 73 65 20 73 63 68 65  / "database sche
7a60: 6d 61 20 68 61 73 20 63 68 61 6e 67 65 64 22 2c  ma has changed",
7a70: 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ..        /* SQL
7a80: 49 54 45 5f 54 4f 4f 42 49 47 20 20 20 20 20 20  ITE_TOOBIG      
7a90: 2a 2f 20 22 73 74 72 69 6e 67 20 6f 72 20 62 6c  */ "string or bl
7aa0: 6f 62 20 74 6f 6f 20 62 69 67 22 2c 0d 0a 20 20  ob too big",..  
7ab0: 20 20 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f        /* SQLITE_
7ac0: 43 4f 4e 53 54 52 41 49 4e 54 20 20 2a 2f 20 22  CONSTRAINT  */ "
7ad0: 63 6f 6e 73 74 72 61 69 6e 74 20 66 61 69 6c 65  constraint faile
7ae0: 64 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  d",..        /* 
7af0: 53 51 4c 49 54 45 5f 4d 49 53 4d 41 54 43 48 20  SQLITE_MISMATCH 
7b00: 20 20 20 2a 2f 20 22 64 61 74 61 74 79 70 65 20     */ "datatype 
7b10: 6d 69 73 6d 61 74 63 68 22 2c 0d 0a 20 20 20 20  mismatch",..    
7b20: 20 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 4d 49      /* SQLITE_MI
7b30: 53 55 53 45 20 20 20 20 20 20 2a 2f 20 22 62 61  SUSE      */ "ba
7b40: 64 20 70 61 72 61 6d 65 74 65 72 20 6f 72 20 6f  d parameter or o
7b50: 74 68 65 72 20 41 50 49 20 6d 69 73 75 73 65 22  ther API misuse"
7b60: 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51  ,..        /* SQ
7b70: 4c 49 54 45 5f 4e 4f 4c 46 53 20 20 20 20 20 20  LITE_NOLFS      
7b80: 20 2a 2f 20 22 6c 61 72 67 65 20 66 69 6c 65 20   */ "large file 
7b90: 73 75 70 70 6f 72 74 20 69 73 20 64 69 73 61 62  support is disab
7ba0: 6c 65 64 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f  led",..        /
7bb0: 2a 20 53 51 4c 49 54 45 5f 41 55 54 48 20 20 20  * SQLITE_AUTH   
7bc0: 20 20 20 20 20 2a 2f 20 22 61 75 74 68 6f 72 69       */ "authori
7bd0: 7a 61 74 69 6f 6e 20 64 65 6e 69 65 64 22 2c 0d  zation denied",.
7be0: 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49  .        /* SQLI
7bf0: 54 45 5f 46 4f 52 4d 41 54 20 20 20 20 20 20 2a  TE_FORMAT      *
7c00: 2f 20 22 61 75 78 69 6c 69 61 72 79 20 64 61 74  / "auxiliary dat
7c10: 61 62 61 73 65 20 66 6f 72 6d 61 74 20 65 72 72  abase format err
7c20: 6f 72 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a  or",..        /*
7c30: 20 53 51 4c 49 54 45 5f 52 41 4e 47 45 20 20 20   SQLITE_RANGE   
7c40: 20 20 20 20 2a 2f 20 22 63 6f 6c 75 6d 6e 20 69      */ "column i
7c50: 6e 64 65 78 20 6f 75 74 20 6f 66 20 72 61 6e 67  ndex out of rang
7c60: 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 2f 2a 20  e",..        /* 
7c70: 53 51 4c 49 54 45 5f 4e 4f 54 41 44 42 20 20 20  SQLITE_NOTADB   
7c80: 20 20 20 2a 2f 20 22 66 69 6c 65 20 69 73 20 6e     */ "file is n
7c90: 6f 74 20 61 20 64 61 74 61 62 61 73 65 22 2c 0d  ot a database",.
7ca0: 0a 20 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 49  .        /* SQLI
7cb0: 54 45 5f 4e 4f 54 49 43 45 20 20 20 20 20 20 2a  TE_NOTICE      *
7cc0: 2f 20 22 6e 6f 74 69 66 69 63 61 74 69 6f 6e 20  / "notification 
7cd0: 6d 65 73 73 61 67 65 22 2c 0d 0a 20 20 20 20 20  message",..     
7ce0: 20 20 20 2f 2a 20 53 51 4c 49 54 45 5f 57 41 52     /* SQLITE_WAR
7cf0: 4e 49 4e 47 20 20 20 20 20 2a 2f 20 22 77 61 72  NING     */ "war
7d00: 6e 69 6e 67 20 6d 65 73 73 61 67 65 22 0d 0a 20  ning message".. 
7d10: 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     };....    ///
7d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7d80: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
7d90: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72  >..    /// Retur
7da0: 6e 73 20 74 68 65 20 65 72 72 6f 72 20 6d 65 73  ns the error mes
7db0: 73 61 67 65 20 66 6f 72 20 74 68 65 20 73 70 65  sage for the spe
7dc0: 63 69 66 69 65 64 20 53 51 4c 69 74 65 20 72 65  cified SQLite re
7dd0: 74 75 72 6e 20 63 6f 64 65 20 75 73 69 6e 67 0d  turn code using.
7de0: 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 69 6e 74  .    /// the int
7df0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 6c 6f 6f  ernal static loo
7e00: 6b 75 70 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20  kup table...    
7e10: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7e20: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7e30: 61 6d 65 3d 22 72 63 22 3e 54 68 65 20 53 51 4c  ame="rc">The SQL
7e40: 69 74 65 20 72 65 74 75 72 6e 20 63 6f 64 65 2e  ite return code.
7e50: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
7e60: 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 65  / <returns>The e
7e70: 72 72 6f 72 20 6d 65 73 73 61 67 65 20 6f 72 20  rror message or 
7e80: 6e 75 6c 6c 20 69 66 20 69 74 20 63 61 6e 6e 6f  null if it canno
7e90: 74 20 62 65 20 66 6f 75 6e 64 2e 3c 2f 72 65 74  t be found.</ret
7ea0: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 6f 74 65  urns>..    prote
7eb0: 63 74 65 64 20 73 74 61 74 69 63 20 73 74 72 69  cted static stri
7ec0: 6e 67 20 46 61 6c 6c 62 61 63 6b 47 65 74 45 72  ng FallbackGetEr
7ed0: 72 6f 72 53 74 72 69 6e 67 28 53 51 4c 69 74 65  rorString(SQLite
7ee0: 45 72 72 6f 72 43 6f 64 65 20 72 63 29 0d 0a 20  ErrorCode rc).. 
7ef0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 77     {..        sw
7f00: 69 74 63 68 20 28 72 63 29 0d 0a 20 20 20 20 20  itch (rc)..     
7f10: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7f20: 20 20 63 61 73 65 20 53 51 4c 69 74 65 45 72 72    case SQLiteErr
7f30: 6f 72 43 6f 64 65 2e 41 62 6f 72 74 5f 52 6f 6c  orCode.Abort_Rol
7f40: 6c 62 61 63 6b 3a 0d 0a 20 20 20 20 20 20 20 20  lback:..        
7f50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22          return "
7f60: 61 62 6f 72 74 20 64 75 65 20 74 6f 20 52 4f 4c  abort due to ROL
7f70: 4c 42 41 43 4b 22 3b 0d 0a 20 20 20 20 20 20 20  LBACK";..       
7f80: 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65       case SQLite
7f90: 45 72 72 6f 72 43 6f 64 65 2e 52 6f 77 3a 0d 0a  ErrorCode.Row:..
7fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fb0: 72 65 74 75 72 6e 20 22 61 6e 6f 74 68 65 72 20  return "another 
7fc0: 72 6f 77 20 61 76 61 69 6c 61 62 6c 65 22 3b 0d  row available";.
7fd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
7fe0: 65 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  e SQLiteErrorCod
7ff0: 65 2e 44 6f 6e 65 3a 0d 0a 20 20 20 20 20 20 20  e.Done:..       
8000: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8010: 22 6e 6f 20 6d 6f 72 65 20 72 6f 77 73 20 61 76  "no more rows av
8020: 61 69 6c 61 62 6c 65 22 3b 0d 0a 20 20 20 20 20  ailable";..     
8030: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8040: 69 66 20 28 5f 65 72 72 6f 72 4d 65 73 73 61 67  if (_errorMessag
8050: 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  es == null)..   
8060: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8070: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
8080: 20 69 6e 74 20 69 6e 64 65 78 20 3d 20 28 69 6e   int index = (in
8090: 74 29 28 72 63 20 26 20 53 51 4c 69 74 65 45 72  t)(rc & SQLiteEr
80a0: 72 6f 72 43 6f 64 65 2e 4e 6f 6e 45 78 74 65 6e  rorCode.NonExten
80b0: 64 65 64 4d 61 73 6b 29 3b 0d 0a 0d 0a 20 20 20  dedMask);....   
80c0: 20 20 20 20 20 69 66 20 28 28 69 6e 64 65 78 20       if ((index 
80d0: 3c 20 30 29 20 7c 7c 20 28 69 6e 64 65 78 20 3e  < 0) || (index >
80e0: 3d 20 5f 65 72 72 6f 72 4d 65 73 73 61 67 65 73  = _errorMessages
80f0: 2e 4c 65 6e 67 74 68 29 29 0d 0a 20 20 20 20 20  .Length))..     
8100: 20 20 20 20 20 20 20 69 6e 64 65 78 20 3d 20 28         index = (
8110: 69 6e 74 29 53 51 4c 69 74 65 45 72 72 6f 72 43  int)SQLiteErrorC
8120: 6f 64 65 2e 45 72 72 6f 72 3b 20 2f 2a 20 4d 61  ode.Error; /* Ma
8130: 6b 65 20 69 6e 74 6f 20 67 65 6e 65 72 69 63 20  ke into generic 
8140: 65 72 72 6f 72 2e 20 2a 2f 0d 0a 0d 0a 20 20 20  error. */....   
8150: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 65 72 72       return _err
8160: 6f 72 4d 65 73 73 61 67 65 73 5b 69 6e 64 65 78  orMessages[index
8170: 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ];..    }....   
8180: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
8190: 20 73 74 72 69 6e 67 20 47 65 74 4c 61 73 74 45   string GetLastE
81a0: 72 72 6f 72 28 53 51 4c 69 74 65 43 6f 6e 6e 65  rror(SQLiteConne
81b0: 63 74 69 6f 6e 48 61 6e 64 6c 65 20 68 64 6c 2c  ctionHandle hdl,
81c0: 20 49 6e 74 50 74 72 20 64 62 29 0d 0a 20 20 20   IntPtr db)..   
81d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
81e0: 28 68 64 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  (hdl == null) ||
81f0: 20 28 64 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a   (db == IntPtr.Z
8200: 65 72 6f 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ero))..         
8210: 20 20 20 72 65 74 75 72 6e 20 22 6e 75 6c 6c 20     return "null 
8220: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 72 20 64 61  connection or da
8230: 74 61 62 61 73 65 20 68 61 6e 64 6c 65 22 3b 0d  tabase handle";.
8240: 0a 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ...        strin
8250: 67 20 72 65 73 75 6c 74 20 3d 20 6e 75 6c 6c 3b  g result = null;
8260: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d  ....        try.
8270: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
8280: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
8290: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
82a0: 7d 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c  }..        final
82b0: 6c 79 20 2f 2a 20 4e 4f 54 45 3a 20 54 68 72 65  ly /* NOTE: Thre
82c0: 61 64 2e 41 62 6f 72 74 28 29 20 70 72 6f 74 65  ad.Abort() prote
82d0: 63 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20  ction. */..     
82e0: 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f     {..#if PLATFO
82f0: 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
8300: 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ORK..           
8310: 20 6c 6f 63 6b 20 28 68 64 6c 2e 73 79 6e 63 52   lock (hdl.syncR
8320: 6f 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20  oot)..#else..   
8330: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68           lock (h
8340: 64 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  dl)..#endif..   
8350: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8360: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
8370: 21 68 64 6c 2e 49 73 49 6e 76 61 6c 69 64 20 26  !hdl.IsInvalid &
8380: 26 20 21 68 64 6c 2e 49 73 43 6c 6f 73 65 64 29  & !hdl.IsClosed)
8390: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
83a0: 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54 45    {..#if !SQLITE
83b0: 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20  _STANDARD..     
83c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
83d0: 6e 74 20 6c 65 6e 20 3d 20 30 3b 0d 0a 20 20 20  nt len = 0;..   
83e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83f0: 20 72 65 73 75 6c 74 20 3d 20 55 54 46 38 54 6f   result = UTF8To
8400: 53 74 72 69 6e 67 28 55 6e 73 61 66 65 4e 61 74  String(UnsafeNat
8410: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
8420: 65 33 5f 65 72 72 6d 73 67 5f 69 6e 74 65 72 6f  e3_errmsg_intero
8430: 70 28 64 62 2c 20 72 65 66 20 6c 65 6e 29 2c 20  p(db, ref len), 
8440: 6c 65 6e 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  len);..#else..  
8450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8460: 20 20 72 65 73 75 6c 74 20 3d 20 55 54 46 38 54    result = UTF8T
8470: 6f 53 74 72 69 6e 67 28 55 6e 73 61 66 65 4e 61  oString(UnsafeNa
8480: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
8490: 74 65 33 5f 65 72 72 6d 73 67 28 64 62 29 2c 20  te3_errmsg(db), 
84a0: 2d 31 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  -1);..#endif..  
84b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
84c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
84d0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
84e0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
84f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
8500: 73 75 6c 74 20 3d 20 22 63 6c 6f 73 65 64 20 6f  sult = "closed o
8510: 72 20 69 6e 76 61 6c 69 64 20 63 6f 6e 6e 65 63  r invalid connec
8520: 74 69 6f 6e 20 68 61 6e 64 6c 65 22 3b 0d 0a 20  tion handle";.. 
8530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
8540: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
8550: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
8560: 20 20 20 20 47 43 2e 4b 65 65 70 41 6c 69 76 65      GC.KeepAlive
8570: 28 68 64 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20  (hdl);..        
8580: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
8590: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74      }....    int
85a0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69  ernal static voi
85b0: 64 20 46 69 6e 69 73 68 42 61 63 6b 75 70 28 53  d FinishBackup(S
85c0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 48  QLiteConnectionH
85d0: 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50 74  andle hdl, IntPt
85e0: 72 20 62 61 63 6b 75 70 29 0d 0a 20 20 20 20 7b  r backup)..    {
85f0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 68  ..        if ((h
8600: 64 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28  dl == null) || (
8610: 62 61 63 6b 75 70 20 3d 3d 20 49 6e 74 50 74 72  backup == IntPtr
8620: 2e 5a 65 72 6f 29 29 20 72 65 74 75 72 6e 3b 0d  .Zero)) return;.
8630: 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a  ...        try..
8640: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8650: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
8660: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d  hing...        }
8670: 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c  ..        finall
8680: 79 20 2f 2a 20 4e 4f 54 45 3a 20 54 68 72 65 61  y /* NOTE: Threa
8690: 64 2e 41 62 6f 72 74 28 29 20 70 72 6f 74 65 63  d.Abort() protec
86a0: 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  tion. */..      
86b0: 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52    {..#if PLATFOR
86c0: 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f  M_COMPACTFRAMEWO
86d0: 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  RK..            
86e0: 6c 6f 63 6b 20 28 68 64 6c 2e 73 79 6e 63 52 6f  lock (hdl.syncRo
86f0: 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20  ot)..#else..    
8700: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68 64          lock (hd
8710: 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20  l)..#endif..    
8720: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21          {..#if !
8730: 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d  SQLITE_STANDARD.
8740: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8750: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
8760: 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76   n = UnsafeNativ
8770: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
8780: 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73 68 5f 69  _backup_finish_i
8790: 6e 74 65 72 6f 70 28 62 61 63 6b 75 70 29 3b 0d  nterop(backup);.
87a0: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
87b0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72          SQLiteEr
87c0: 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e 73 61  rorCode n = Unsa
87d0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
87e0: 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66  sqlite3_backup_f
87f0: 69 6e 69 73 68 28 62 61 63 6b 75 70 29 3b 0d 0a  inish(backup);..
8800: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20  #endif..        
8810: 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 21 3d          if (n !=
8820: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
8830: 2e 4f 6b 29 20 74 68 72 6f 77 20 6e 65 77 20 53  .Ok) throw new S
8840: 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28 6e  QLiteException(n
8850: 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 20 20  , null);..      
8860: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8870: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
8880: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
8890: 20 76 6f 69 64 20 43 6c 6f 73 65 42 6c 6f 62 28   void CloseBlob(
88a0: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
88b0: 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50  Handle hdl, IntP
88c0: 74 72 20 62 6c 6f 62 29 0d 0a 20 20 20 20 7b 0d  tr blob)..    {.
88d0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 68 64  .        if ((hd
88e0: 6c 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 62  l == null) || (b
88f0: 6c 6f 62 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65  lob == IntPtr.Ze
8900: 72 6f 29 29 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a  ro)) return;....
8910: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
8920: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8930: 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
8940: 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  g...        }.. 
8950: 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 2f         finally /
8960: 2a 20 4e 4f 54 45 3a 20 54 68 72 65 61 64 2e 41  * NOTE: Thread.A
8970: 62 6f 72 74 28 29 20 70 72 6f 74 65 63 74 69 6f  bort() protectio
8980: 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b  n. */..        {
8990: 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43  ..#if PLATFORM_C
89a0: 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d  OMPACTFRAMEWORK.
89b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63  .            loc
89c0: 6b 20 28 68 64 6c 2e 73 79 6e 63 52 6f 6f 74 29  k (hdl.syncRoot)
89d0: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
89e0: 20 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 29 0d       lock (hdl).
89f0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
8a00: 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 53 51 4c       {..#if !SQL
8a10: 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20 20  ITE_STANDARD..  
8a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
8a30: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 6e 20  LiteErrorCode n 
8a40: 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65  = UnsafeNativeMe
8a50: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f 62 6c  thods.sqlite3_bl
8a60: 6f 62 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  ob_close_interop
8a70: 28 62 6c 6f 62 29 3b 0d 0a 23 65 6c 73 65 0d 0a  (blob);..#else..
8a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a90: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
8aa0: 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65  n = UnsafeNative
8ab0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 5f  Methods.sqlite3_
8ac0: 62 6c 6f 62 5f 63 6c 6f 73 65 28 62 6c 6f 62 29  blob_close(blob)
8ad0: 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
8ae0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
8af0: 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   != SQLiteErrorC
8b00: 6f 64 65 2e 4f 6b 29 20 74 68 72 6f 77 20 6e 65  ode.Ok) throw ne
8b10: 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f  w SQLiteExceptio
8b20: 6e 28 6e 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20  n(n, null);..   
8b30: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
8b40: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
8b50: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8b60: 74 69 63 20 76 6f 69 64 20 46 69 6e 61 6c 69 7a  tic void Finaliz
8b70: 65 53 74 61 74 65 6d 65 6e 74 28 53 51 4c 69 74  eStatement(SQLit
8b80: 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
8b90: 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 73 74  e hdl, IntPtr st
8ba0: 6d 74 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  mt)..    {..    
8bb0: 20 20 20 20 69 66 20 28 28 68 64 6c 20 3d 3d 20      if ((hdl == 
8bc0: 6e 75 6c 6c 29 20 7c 7c 20 28 73 74 6d 74 20 3d  null) || (stmt =
8bd0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 20  = IntPtr.Zero)) 
8be0: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
8bf0: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
8c00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  {..            /
8c10: 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
8c20: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
8c30: 20 20 66 69 6e 61 6c 6c 79 20 2f 2a 20 4e 4f 54    finally /* NOT
8c40: 45 3a 20 54 68 72 65 61 64 2e 41 62 6f 72 74 28  E: Thread.Abort(
8c50: 29 20 70 72 6f 74 65 63 74 69 6f 6e 2e 20 2a 2f  ) protection. */
8c60: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66  ..        {..#if
8c70: 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43   PLATFORM_COMPAC
8c80: 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
8c90: 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68 64          lock (hd
8ca0: 6c 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65 6c  l.syncRoot)..#el
8cb0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
8cc0: 6c 6f 63 6b 20 28 68 64 6c 29 0d 0a 23 65 6e 64  lock (hdl)..#end
8cd0: 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  if..            
8ce0: 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f 53  {..#if !SQLITE_S
8cf0: 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20 20  TANDARD..       
8d00: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45           SQLiteE
8d10: 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e 73  rrorCode n = Uns
8d20: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
8d30: 2e 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a  .sqlite3_finaliz
8d40: 65 5f 69 6e 74 65 72 6f 70 28 73 74 6d 74 29 3b  e_interop(stmt);
8d50: 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20  ..#else..       
8d60: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45           SQLiteE
8d70: 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e 73  rrorCode n = Uns
8d80: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
8d90: 2e 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a  .sqlite3_finaliz
8da0: 65 28 73 74 6d 74 29 3b 0d 0a 23 65 6e 64 69 66  e(stmt);..#endif
8db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8dc0: 20 20 69 66 20 28 6e 20 21 3d 20 53 51 4c 69 74    if (n != SQLit
8dd0: 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 20 74  eErrorCode.Ok) t
8de0: 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65 45  hrow new SQLiteE
8df0: 78 63 65 70 74 69 6f 6e 28 6e 2c 20 6e 75 6c 6c  xception(n, null
8e00: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
8e10: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
8e20: 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72    }....    inter
8e30: 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69 64 20  nal static void 
8e40: 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 28  CloseConnection(
8e50: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
8e60: 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50  Handle hdl, IntP
8e70: 74 72 20 64 62 29 0d 0a 20 20 20 20 7b 0d 0a 20  tr db)..    {.. 
8e80: 20 20 20 20 20 20 20 69 66 20 28 28 68 64 6c 20         if ((hdl 
8e90: 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 64 62 20  == null) || (db 
8ea0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29  == IntPtr.Zero))
8eb0: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
8ec0: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
8ed0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8ee0: 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
8ef0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
8f00: 20 20 20 66 69 6e 61 6c 6c 79 20 2f 2a 20 4e 4f     finally /* NO
8f10: 54 45 3a 20 54 68 72 65 61 64 2e 41 62 6f 72 74  TE: Thread.Abort
8f20: 28 29 20 70 72 6f 74 65 63 74 69 6f 6e 2e 20 2a  () protection. *
8f30: 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  /..        {..#i
8f40: 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41  f PLATFORM_COMPA
8f50: 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20  CTFRAMEWORK..   
8f60: 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 68           lock (h
8f70: 64 6c 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23 65  dl.syncRoot)..#e
8f80: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
8f90: 20 6c 6f 63 6b 20 28 68 64 6c 29 0d 0a 23 65 6e   lock (hdl)..#en
8fa0: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  dif..           
8fb0: 20 7b 0d 0a 23 69 66 20 21 53 51 4c 49 54 45 5f   {..#if !SQLITE_
8fc0: 53 54 41 4e 44 41 52 44 0d 0a 20 20 20 20 20 20  STANDARD..      
8fd0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
8fe0: 45 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e  ErrorCode n = Un
8ff0: 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
9000: 73 2e 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f  s.sqlite3_close_
9010: 69 6e 74 65 72 6f 70 28 64 62 29 3b 0d 0a 23 65  interop(db);..#e
9020: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
9030: 20 20 20 20 20 52 65 73 65 74 43 6f 6e 6e 65 63       ResetConnec
9040: 74 69 6f 6e 28 68 64 6c 2c 20 64 62 2c 20 66 61  tion(hdl, db, fa
9050: 6c 73 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lse);....       
9060: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 45           SQLiteE
9070: 72 72 6f 72 43 6f 64 65 20 6e 20 3d 20 55 6e 73  rrorCode n = Uns
9080: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
9090: 2e 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 64  .sqlite3_close(d
90a0: 62 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  b);..#endif..   
90b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
90c0: 28 6e 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f  (n != SQLiteErro
90d0: 72 43 6f 64 65 2e 4f 6b 29 20 74 68 72 6f 77 20  rCode.Ok) throw 
90e0: 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74  new SQLiteExcept
90f0: 69 6f 6e 28 6e 2c 20 47 65 74 4c 61 73 74 45 72  ion(n, GetLastEr
9100: 72 6f 72 28 68 64 6c 2c 20 64 62 29 29 3b 0d 0a  ror(hdl, db));..
9110: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9120: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d         }..    }.
9130: 0a 0d 0a 23 69 66 20 21 49 4e 54 45 52 4f 50 5f  ...#if !INTEROP_
9140: 4c 45 47 41 43 59 5f 43 4c 4f 53 45 0d 0a 20 20  LEGACY_CLOSE..  
9150: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9160: 63 20 76 6f 69 64 20 43 6c 6f 73 65 43 6f 6e 6e  c void CloseConn
9170: 65 63 74 69 6f 6e 56 32 28 53 51 4c 69 74 65 43  ectionV2(SQLiteC
9180: 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c 65 20  onnectionHandle 
9190: 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62 29 0d  hdl, IntPtr db).
91a0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
91b0: 69 66 20 28 28 68 64 6c 20 3d 3d 20 6e 75 6c 6c  if ((hdl == null
91c0: 29 20 7c 7c 20 28 64 62 20 3d 3d 20 49 6e 74 50  ) || (db == IntP
91d0: 74 72 2e 5a 65 72 6f 29 29 20 72 65 74 75 72 6e  tr.Zero)) return
91e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79  ;....        try
91f0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
9200: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
9210: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
9220: 20 7d 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61   }..        fina
9230: 6c 6c 79 20 2f 2a 20 4e 4f 54 45 3a 20 54 68 72  lly /* NOTE: Thr
9240: 65 61 64 2e 41 62 6f 72 74 28 29 20 70 72 6f 74  ead.Abort() prot
9250: 65 63 74 69 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20  ection. */..    
9260: 20 20 20 20 7b 0d 0a 23 69 66 20 50 4c 41 54 46      {..#if PLATF
9270: 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45  ORM_COMPACTFRAME
9280: 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 20 20  WORK..          
9290: 20 20 6c 6f 63 6b 20 28 68 64 6c 2e 73 79 6e 63    lock (hdl.sync
92a0: 52 6f 6f 74 29 0d 0a 23 65 6c 73 65 0d 0a 20 20  Root)..#else..  
92b0: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
92c0: 68 64 6c 29 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  hdl)..#endif..  
92d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66            {..#if
92e0: 20 21 53 51 4c 49 54 45 5f 53 54 41 4e 44 41 52   !SQLITE_STANDAR
92f0: 44 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  D..             
9300: 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
9310: 64 65 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74  de n = UnsafeNat
9320: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
9330: 65 33 5f 63 6c 6f 73 65 5f 69 6e 74 65 72 6f 70  e3_close_interop
9340: 28 64 62 29 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20  (db);..#else..  
9350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65                Re
9360: 73 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 28 68 64  setConnection(hd
9370: 6c 2c 20 64 62 2c 20 66 61 6c 73 65 29 3b 0d 0a  l, db, false);..
9380: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9390: 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
93a0: 65 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61 74 69  e n = UnsafeNati
93b0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
93c0: 33 5f 63 6c 6f 73 65 5f 76 32 28 64 62 29 3b 0d  3_close_v2(db);.
93d0: 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 20  .#endif..       
93e0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 21           if (n !
93f0: 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  = SQLiteErrorCod
9400: 65 2e 4f 6b 29 20 74 68 72 6f 77 20 6e 65 77 20  e.Ok) throw new 
9410: 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28  SQLiteException(
9420: 6e 2c 20 47 65 74 4c 61 73 74 45 72 72 6f 72 28  n, GetLastError(
9430: 68 64 6c 2c 20 64 62 29 29 3b 0d 0a 20 20 20 20  hdl, db));..    
9440: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9450: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 23 65 6e     }..    }..#en
9460: 64 69 66 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72  dif....    inter
9470: 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  nal static bool 
9480: 52 65 73 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 28  ResetConnection(
9490: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
94a0: 48 61 6e 64 6c 65 20 68 64 6c 2c 20 49 6e 74 50  Handle hdl, IntP
94b0: 74 72 20 64 62 2c 20 62 6f 6f 6c 20 63 61 6e 54  tr db, bool canT
94c0: 68 72 6f 77 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  hrow)..    {..  
94d0: 20 20 20 20 20 20 69 66 20 28 28 68 64 6c 20 3d        if ((hdl =
94e0: 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 64 62 20 3d  = null) || (db =
94f0: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 29 20  = IntPtr.Zero)) 
9500: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
9510: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 72 65  .        bool re
9520: 73 75 6c 74 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d  sult = false;...
9530: 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20  .        try..  
9540: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9550: 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
9560: 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ng...        }..
9570: 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20          finally 
9580: 2f 2a 20 4e 4f 54 45 3a 20 54 68 72 65 61 64 2e  /* NOTE: Thread.
9590: 41 62 6f 72 74 28 29 20 70 72 6f 74 65 63 74 69  Abort() protecti
95a0: 6f 6e 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  on. */..        
95b0: 7b 0d 0a 23 69 66 20 50 4c 41 54 46 4f 52 4d 5f  {..#if PLATFORM_
95c0: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
95d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f  ..            lo
95e0: 63 6b 20 28 68 64 6c 2e 73 79 6e 63 52 6f 6f 74  ck (hdl.syncRoot
95f0: 29 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20  )..#else..      
9600: 20 20 20 20 20 20 6c 6f 63 6b 20 28 68 64 6c 29        lock (hdl)
9610: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
9620: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9630: 20 20 20 20 20 20 20 20 20 69 66 20 28 63 61 6e           if (can
9640: 54 68 72 6f 77 20 26 26 20 68 64 6c 2e 49 73 49  Throw && hdl.IsI
9650: 6e 76 61 6c 69 64 29 0d 0a 20 20 20 20 20 20 20  nvalid)..       
9660: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
9670: 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
9680: 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
9690: 28 22 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  ("The connection
96a0: 20 68 61 6e 64 6c 65 20 69 73 20 69 6e 76 61 6c   handle is inval
96b0: 69 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  id.");....      
96c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 61            if (ca
96d0: 6e 54 68 72 6f 77 20 26 26 20 68 64 6c 2e 49 73  nThrow && hdl.Is
96e0: 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20  Closed)..       
96f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
9700: 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
9710: 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
9720: 28 22 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  ("The connection
9730: 20 68 61 6e 64 6c 65 20 69 73 20 63 6c 6f 73 65   handle is close
9740: 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  d.");....       
9750: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 68 64           if (!hd
9760: 6c 2e 49 73 49 6e 76 61 6c 69 64 20 26 26 20 21  l.IsInvalid && !
9770: 68 64 6c 2e 49 73 43 6c 6f 73 65 64 29 0d 0a 20  hdl.IsClosed).. 
9780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
9790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
97a0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 73 74 6d        IntPtr stm
97b0: 74 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  t = IntPtr.Zero;
97c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
97d0: 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f        SQLiteErro
97e0: 72 43 6f 64 65 20 6e 3b 0d 0a 0d 0a 20 20 20 20  rCode n;....    
97f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9800: 64 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  do..            
9810: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9830: 20 20 20 73 74 6d 74 20 3d 20 55 6e 73 61 66 65     stmt = Unsafe
9840: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
9850: 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28  lite3_next_stmt(
9860: 64 62 2c 20 73 74 6d 74 29 3b 0d 0a 20 20 20 20  db, stmt);..    
9870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9880: 20 20 20 20 69 66 20 28 73 74 6d 74 20 21 3d 20      if (stmt != 
9890: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
98a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98b0: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 21 53 51        {..#if !SQ
98c0: 4c 49 54 45 5f 53 54 41 4e 44 41 52 44 0d 0a 20  LITE_STANDARD.. 
98d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98e0: 20 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 55             n = U
98f0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
9900: 64 73 2e 73 71 6c 69 74 65 33 5f 72 65 73 65 74  ds.sqlite3_reset
9910: 5f 69 6e 74 65 72 6f 70 28 73 74 6d 74 29 3b 0d  _interop(stmt);.
9920: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20  .#else..        
9930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9940: 20 20 20 20 6e 20 3d 20 55 6e 73 61 66 65 4e 61      n = UnsafeNa
9950: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
9960: 74 65 33 5f 72 65 73 65 74 28 73 74 6d 74 29 3b  te3_reset(stmt);
9970: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
9980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9990: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
99a0: 20 20 20 20 20 20 20 20 20 7d 20 77 68 69 6c 65           } while
99b0: 20 28 73 74 6d 74 20 21 3d 20 49 6e 74 50 74 72   (stmt != IntPtr
99c0: 2e 5a 65 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20  .Zero);....     
99d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
99e0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
99f0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
9a00: 49 73 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  Is a transaction
9a10: 20 4e 4f 54 20 70 65 6e 64 69 6e 67 20 6f 6e 20   NOT pending on 
9a20: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 3f 0d  the connection?.
9a30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9a40: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
9a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
9a60: 28 49 73 41 75 74 6f 63 6f 6d 6d 69 74 28 68 64  (IsAutocommit(hd
9a70: 6c 2c 20 64 62 29 29 0d 0a 20 20 20 20 20 20 20  l, db))..       
9a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
9a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9aa0: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d          result =
9ab0: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
9ac0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ae0: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
9af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
9b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b10: 20 20 20 20 20 20 20 20 6e 20 3d 20 55 6e 73 61          n = Unsa
9b20: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
9b30: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 0d 0a 20  sqlite3_exec(.. 
9b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b50: 20 20 20 20 20 20 20 20 20 20 20 64 62 2c 20 54             db, T
9b60: 6f 55 54 46 38 28 22 52 4f 4c 4c 42 41 43 4b 22  oUTF8("ROLLBACK"
9b70: 29 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 20  ), IntPtr.Zero, 
9b80: 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20  IntPtr.Zero,..  
9b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ba0: 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
9bb0: 6d 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  mt);....        
9bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9bd0: 69 66 20 28 6e 20 3d 3d 20 53 51 4c 69 74 65 45  if (n == SQLiteE
9be0: 72 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20  rrorCode.Ok)..  
9bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c00: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c20: 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 74 72       result = tr
9c30: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
9c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
9c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c60: 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
9c70: 28 63 61 6e 54 68 72 6f 77 29 0d 0a 20 20 20 20  (canThrow)..    
9c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9cb0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c     throw new SQL
9cc0: 69 74 65 45 78 63 65 70 74 69 6f 6e 28 6e 2c 20  iteException(n, 
9cd0: 47 65 74 4c 61 73 74 45 72 72 6f 72 28 68 64 6c  GetLastError(hdl
9ce0: 2c 20 64 62 29 29 3b 0d 0a 20 20 20 20 20 20 20  , db));..       
9cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d00: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
9d10: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9d20: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
9d30: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
9d40: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9d50: 47 43 2e 4b 65 65 70 41 6c 69 76 65 28 68 64 6c  GC.KeepAlive(hdl
9d60: 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  );..        retu
9d70: 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
9d80: 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  }....    interna
9d90: 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73  l static bool Is
9da0: 41 75 74 6f 63 6f 6d 6d 69 74 28 53 51 4c 69 74  Autocommit(SQLit
9db0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 48 61 6e 64 6c  eConnectionHandl
9dc0: 65 20 68 64 6c 2c 20 49 6e 74 50 74 72 20 64 62  e hdl, IntPtr db
9dd0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
9de0: 20 20 69 66 20 28 28 68 64 6c 20 3d 3d 20 6e 75    if ((hdl == nu
9df0: 6c 6c 29 20 7c 7c 20 28 64 62 20 3d 3d 20 49 6e  ll) || (db == In
9e00: 74 50 74 72 2e 5a 65 72 6f 29 29 20 72 65 74 75  tPtr.Zero)) retu
9e10: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
9e20: 20 20 20 20 20 62 6f 6f 6c 20 72 65 73 75 6c 74       bool result
9e30: 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20   = false;....   
9e40: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
9e50: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9e60: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
9e70: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
9e80: 20 20 20 20 66 69 6e 61 6c 6c 79 20 2f 2a 20 4e      finally /* N
9e90: 4f 54 45 3a 20 54 68 72 65 61 64 2e 41 62 6f 72  OTE: Thread.Abor
9ea0: 74 28 29 20 70 72 6f 74 65 63 74 69 6f 6e 2e 20  t() protection. 
9eb0: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  */..        {..#
9ec0: 69 66 20 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50  if PLATFORM_COMP
9ed0: 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20  ACTFRAMEWORK..  
9ee0: 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
9ef0: 68 64 6c 2e 73 79 6e 63 52 6f 6f 74 29 0d 0a 23  hdl.syncRoot)..#
9f00: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
9f10: 20 20 6c 6f 63 6b 20 28 68 64 6c 29 0d 0a 23 65    lock (hdl)..#e
9f20: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
9f30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9f40: 20 20 20 20 20 69 66 20 28 21 68 64 6c 2e 49 73       if (!hdl.Is
9f50: 49 6e 76 61 6c 69 64 20 26 26 20 21 68 64 6c 2e  Invalid && !hdl.
9f60: 49 73 43 6c 6f 73 65 64 29 0d 0a 20 20 20 20 20  IsClosed)..     
9f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
9f80: 65 73 75 6c 74 20 3d 20 28 55 6e 73 61 66 65 4e  esult = (UnsafeN
9f90: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
9fa0: 69 74 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d  ite3_get_autocom
9fb0: 6d 69 74 28 64 62 29 20 3d 3d 20 31 29 3b 0d 0a  mit(db) == 1);..
9fc0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
9fd0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
9fe0: 20 20 47 43 2e 4b 65 65 70 41 6c 69 76 65 28 68    GC.KeepAlive(h
9ff0: 64 6c 29 3b 20 2f 2a 20 4e 4f 54 45 3a 20 55 6e  dl); /* NOTE: Un
a000: 72 65 61 63 68 61 62 6c 65 20 63 6f 64 65 2e 20  reachable code. 
a010: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  */..        retu
a020: 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
a030: 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20  }..  }....  /// 
a040: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
a050: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
a060: 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 69 6e 74  y>..  public int
a070: 65 72 66 61 63 65 20 49 53 51 4c 69 74 65 53 63  erface ISQLiteSc
a080: 68 65 6d 61 45 78 74 65 6e 73 69 6f 6e 73 0d 0a  hemaExtensions..
a090: 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c    {..      /// <
a0a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a0b0: 2f 2f 2f 20 43 72 65 61 74 65 73 20 74 65 6d 70  /// Creates temp
a0c0: 6f 72 61 72 79 20 74 61 62 6c 65 73 20 6f 6e 20  orary tables on 
a0d0: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  the connection s
a0e0: 6f 20 73 63 68 65 6d 61 20 69 6e 66 6f 72 6d 61  o schema informa
a0f0: 74 69 6f 6e 20 63 61 6e 20 62 65 20 71 75 65 72  tion can be quer
a100: 69 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ied...      /// 
a110: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
a120: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
a130: 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d  e="connection">.
a140: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
a150: 6f 6e 6e 65 63 74 69 6f 6e 20 75 70 6f 6e 20 77  onnection upon w
a160: 68 69 63 68 20 74 6f 20 62 75 69 6c 64 20 74 68  hich to build th
a170: 65 20 73 63 68 65 6d 61 20 74 61 62 6c 65 73 2e  e schema tables.
a180: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  ..      /// </pa
a190: 72 61 6d 3e 0d 0a 20 20 20 20 20 20 76 6f 69 64  ram>..      void
a1a0: 20 42 75 69 6c 64 54 65 6d 70 53 63 68 65 6d 61   BuildTempSchema
a1b0: 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  (SQLiteConnectio
a1c0: 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a  n connection);..
a1d0: 20 20 7d 0d 0a 0d 0a 20 20 5b 46 6c 61 67 73 5d    }....  [Flags]
a1e0: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75  ..  internal enu
a1f0: 6d 20 53 51 4c 69 74 65 4f 70 65 6e 46 6c 61 67  m SQLiteOpenFlag
a200: 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20  sEnum..  {..    
a210: 4e 6f 6e 65 20 3d 20 30 2c 0d 0a 20 20 20 20 52  None = 0,..    R
a220: 65 61 64 4f 6e 6c 79 20 3d 20 30 78 31 2c 0d 0a  eadOnly = 0x1,..
a230: 20 20 20 20 52 65 61 64 57 72 69 74 65 20 3d 20      ReadWrite = 
a240: 30 78 32 2c 0d 0a 20 20 20 20 43 72 65 61 74 65  0x2,..    Create
a250: 20 3d 20 30 78 34 2c 0d 0a 20 20 20 20 55 72 69   = 0x4,..    Uri
a260: 20 3d 20 30 78 34 30 2c 0d 0a 20 20 20 20 4d 65   = 0x40,..    Me
a270: 6d 6f 72 79 20 3d 20 30 78 38 30 2c 0d 0a 20 20  mory = 0x80,..  
a280: 20 20 44 65 66 61 75 6c 74 20 3d 20 52 65 61 64    Default = Read
a290: 57 72 69 74 65 20 7c 20 43 72 65 61 74 65 2c 0d  Write | Create,.
a2a0: 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73  .  }....  /// <s
a2b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
a2c0: 68 65 20 65 78 74 72 61 20 62 65 68 61 76 69 6f  he extra behavio
a2d0: 72 61 6c 20 66 6c 61 67 73 20 74 68 61 74 20 63  ral flags that c
a2e0: 61 6e 20 62 65 20 61 70 70 6c 69 65 64 20 74 6f  an be applied to
a2f0: 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a   a connection...
a300: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a310: 0d 0a 20 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20  ..  [Flags()].. 
a320: 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c   public enum SQL
a330: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
a340: 67 73 20 3a 20 6c 6f 6e 67 0d 0a 20 20 7b 0d 0a  gs : long..  {..
a350: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
a360: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ry>..      /// N
a370: 6f 20 65 78 74 72 61 20 66 6c 61 67 73 2e 0d 0a  o extra flags...
a380: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
a390: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 65  ary>..      None
a3a0: 20 3d 20 30 78 30 2c 0d 0a 0d 0a 20 20 20 20 20   = 0x0,....     
a3b0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
a3c0: 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65        /// Enable
a3d0: 20 6c 6f 67 67 69 6e 67 20 6f 66 20 61 6c 6c 20   logging of all 
a3e0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 74  SQL statements t
a3f0: 6f 20 62 65 20 70 72 65 70 61 72 65 64 2e 0d 0a  o be prepared...
a400: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
a410: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 50  ary>..      LogP
a420: 72 65 70 61 72 65 20 3d 20 30 78 31 2c 0d 0a 0d  repare = 0x1,...
a430: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
a440: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
a450: 45 6e 61 62 6c 65 20 6c 6f 67 67 69 6e 67 20 6f  Enable logging o
a460: 66 20 61 6c 6c 20 62 6f 75 6e 64 20 70 61 72 61  f all bound para
a470: 6d 65 74 65 72 20 74 79 70 65 73 20 61 6e 64 20  meter types and 
a480: 72 61 77 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20  raw values...   
a490: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
a4a0: 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 50 72 65 42  >..      LogPreB
a4b0: 69 6e 64 20 3d 20 30 78 32 2c 0d 0a 0d 0a 20 20  ind = 0x2,....  
a4c0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a4d0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61  >..      /// Ena
a4e0: 62 6c 65 20 6c 6f 67 67 69 6e 67 20 6f 66 20 61  ble logging of a
a4f0: 6c 6c 20 62 6f 75 6e 64 20 70 61 72 61 6d 65 74  ll bound paramet
a500: 65 72 20 73 74 72 6f 6e 67 6c 79 20 74 79 70 65  er strongly type
a510: 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 20  d values...     
a520: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
a530: 0a 20 20 20 20 20 20 4c 6f 67 42 69 6e 64 20 3d  .      LogBind =
a540: 20 30 78 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   0x4,....      /
a550: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a560: 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20 6c      /// Enable l
a570: 6f 67 67 69 6e 67 20 6f 66 20 61 6c 6c 20 65 78  ogging of all ex
a580: 63 65 70 74 69 6f 6e 73 20 63 61 75 67 68 74 20  ceptions caught 
a590: 66 72 6f 6d 20 75 73 65 72 2d 70 72 6f 76 69 64  from user-provid
a5a0: 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d 61  ed..      /// ma
a5b0: 6e 61 67 65 64 20 63 6f 64 65 20 63 61 6c 6c 65  naged code calle
a5c0: 64 20 66 72 6f 6d 20 6e 61 74 69 76 65 20 63 6f  d from native co
a5d0: 64 65 20 76 69 61 20 64 65 6c 65 67 61 74 65 73  de via delegates
a5e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
a5f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c  ummary>..      L
a600: 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65 70 74  ogCallbackExcept
a610: 69 6f 6e 20 3d 20 30 78 38 2c 0d 0a 0d 0a 20 20  ion = 0x8,....  
a620: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
a630: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61  >..      /// Ena
a640: 62 6c 65 20 6c 6f 67 67 69 6e 67 20 6f 66 20 62  ble logging of b
a650: 61 63 6b 75 70 20 41 50 49 20 65 72 72 6f 72 73  ackup API errors
a660: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
a670: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4c  ummary>..      L
a680: 6f 67 42 61 63 6b 75 70 20 3d 20 30 78 31 30 2c  ogBackup = 0x10,
a690: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
a6a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
a6b0: 2f 2f 20 53 6b 69 70 20 61 64 64 69 6e 67 20 74  // Skip adding t
a6c0: 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 66 75 6e  he extension fun
a6d0: 63 74 69 6f 6e 73 20 70 72 6f 76 69 64 65 64 20  ctions provided 
a6e0: 62 79 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20  by the native.. 
a6f0: 20 20 20 20 20 2f 2f 2f 20 69 6e 74 65 72 6f 70       /// interop
a700: 20 61 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20   assembly...    
a710: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
a720: 0d 0a 20 20 20 20 20 20 4e 6f 45 78 74 65 6e 73  ..      NoExtens
a730: 69 6f 6e 46 75 6e 63 74 69 6f 6e 73 20 3d 20 30  ionFunctions = 0
a740: 78 32 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  x20,....      //
a750: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
a760: 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62 69 6e 64     /// When bind
a770: 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20 76 61  ing parameter va
a780: 6c 75 65 73 20 77 69 74 68 20 74 68 65 20 3c 73  lues with the <s
a790: 65 65 20 63 72 65 66 3d 22 55 49 6e 74 33 32 22  ee cref="UInt32"
a7a0: 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74   />..      /// t
a7b0: 79 70 65 2c 20 75 73 65 20 74 68 65 20 69 6e 74  ype, use the int
a7c0: 65 72 6f 70 20 6d 65 74 68 6f 64 20 74 68 61 74  erop method that
a7d0: 20 61 63 63 65 70 74 73 20 61 6e 20 3c 73 65 65   accepts an <see
a7e0: 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e   cref="Int64" />
a7f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 76 61 6c 75  ..      /// valu
a800: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
a810: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
a820: 42 69 6e 64 55 49 6e 74 33 32 41 73 49 6e 74 36  BindUInt32AsInt6
a830: 34 20 3d 20 30 78 34 30 2c 0d 0a 0d 0a 20 20 20  4 = 0x40,....   
a840: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
a850: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e  ..      /// When
a860: 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65 74   binding paramet
a870: 65 72 20 76 61 6c 75 65 73 2c 20 61 6c 77 61 79  er values, alway
a880: 73 20 62 69 6e 64 20 74 68 65 6d 20 61 73 20 74  s bind them as t
a890: 68 6f 75 67 68 20 74 68 65 79 20 77 65 72 65 0d  hough they were.
a8a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 6c 61 69 6e  .      /// plain
a8b0: 20 74 65 78 74 20 28 69 2e 65 2e 20 6e 6f 20 6e   text (i.e. no n
a8c0: 75 6d 65 72 69 63 2c 20 64 61 74 65 2f 74 69 6d  umeric, date/tim
a8d0: 65 2c 20 6f 72 20 6f 74 68 65 72 20 63 6f 6e 76  e, or other conv
a8e0: 65 72 73 69 6f 6e 73 20 73 68 6f 75 6c 64 0d 0a  ersions should..
a8f0: 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 61 74 74        /// be att
a900: 65 6d 70 74 65 64 29 2e 0d 0a 20 20 20 20 20 20  empted)...      
a910: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
a920: 20 20 20 20 20 20 42 69 6e 64 41 6c 6c 41 73 54        BindAllAsT
a930: 65 78 74 20 3d 20 30 78 38 30 2c 0d 0a 0d 0a 20  ext = 0x80,.... 
a940: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
a950: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
a960: 65 6e 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c  en returning col
a970: 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61 6c 77 61  umn values, alwa
a980: 79 73 20 72 65 74 75 72 6e 20 74 68 65 6d 20 61  ys return them a
a990: 73 20 74 68 6f 75 67 68 20 74 68 65 79 20 77 65  s though they we
a9a0: 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 6c  re..      /// pl
a9b0: 61 69 6e 20 74 65 78 74 20 28 69 2e 65 2e 20 6e  ain text (i.e. n
a9c0: 6f 20 6e 75 6d 65 72 69 63 2c 20 64 61 74 65 2f  o numeric, date/
a9d0: 74 69 6d 65 2c 20 6f 72 20 6f 74 68 65 72 20 63  time, or other c
a9e0: 6f 6e 76 65 72 73 69 6f 6e 73 20 73 68 6f 75 6c  onversions shoul
a9f0: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20  d..      /// be 
aa00: 61 74 74 65 6d 70 74 65 64 29 2e 0d 0a 20 20 20  attempted)...   
aa10: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
aa20: 3e 0d 0a 20 20 20 20 20 20 47 65 74 41 6c 6c 41  >..      GetAllA
aa30: 73 54 65 78 74 20 3d 20 30 78 31 30 30 2c 0d 0a  sText = 0x100,..
aa40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
aa50: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
aa60: 20 50 72 65 76 65 6e 74 20 74 68 69 73 20 3c 73   Prevent this <s
aa70: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
aa80: 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 20 6f 62  onnection" /> ob
aa90: 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20 66 72  ject instance fr
aaa0: 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 6f  om..      /// lo
aab0: 61 64 69 6e 67 20 65 78 74 65 6e 73 69 6f 6e 73  ading extensions
aac0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
aad0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
aae0: 6f 4c 6f 61 64 45 78 74 65 6e 73 69 6f 6e 20 3d  oLoadExtension =
aaf0: 20 30 78 32 30 30 2c 0d 0a 0d 0a 23 69 66 20 49   0x200,....#if I
ab00: 4e 54 45 52 4f 50 5f 56 49 52 54 55 41 4c 5f 54  NTEROP_VIRTUAL_T
ab10: 41 42 4c 45 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ABLE..      /// 
ab20: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
ab30: 20 2f 2f 2f 20 50 72 65 76 65 6e 74 20 74 68 69   /// Prevent thi
ab40: 73 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  s <see cref="SQL
ab50: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f  iteConnection" /
ab60: 3e 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  > object instanc
ab70: 65 20 66 72 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f  e from..      //
ab80: 2f 20 63 72 65 61 74 69 6e 67 20 76 69 72 74 75  / creating virtu
ab90: 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 73  al table modules
aba0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
abb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
abc0: 6f 43 72 65 61 74 65 4d 6f 64 75 6c 65 20 3d 20  oCreateModule = 
abd0: 30 78 34 30 30 2c 0d 0a 23 65 6e 64 69 66 0d 0a  0x400,..#endif..
abe0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
abf0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
ac00: 20 53 6b 69 70 20 62 69 6e 64 69 6e 67 20 61 6e   Skip binding an
ac10: 79 20 66 75 6e 63 74 69 6f 6e 73 20 70 72 6f 76  y functions prov
ac20: 69 64 65 64 20 62 79 20 6f 74 68 65 72 20 6d 61  ided by other ma
ac30: 6e 61 67 65 64 20 61 73 73 65 6d 62 6c 69 65 73  naged assemblies
ac40: 20 77 68 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f   when..      ///
ac50: 20 6f 70 65 6e 69 6e 67 20 74 68 65 20 63 6f 6e   opening the con
ac60: 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  nection...      
ac70: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
ac80: 20 20 20 20 20 20 4e 6f 42 69 6e 64 46 75 6e 63        NoBindFunc
ac90: 74 69 6f 6e 73 20 3d 20 30 78 38 30 30 2c 0d 0a  tions = 0x800,..
aca0: 0d 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49  ..#if INTEROP_VI
acb0: 52 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20  RTUAL_TABLE..   
acc0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
acd0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 6b 69 70  ..      /// Skip
ace0: 20 73 65 74 74 69 6e 67 20 74 68 65 20 6c 6f 67   setting the log
acf0: 67 69 6e 67 20 72 65 6c 61 74 65 64 20 70 72 6f  ging related pro
ad00: 70 65 72 74 69 65 73 20 6f 66 20 74 68 65 0d 0a  perties of the..
ad10: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
ad20: 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75 6c  ref="SQLiteModul
ad30: 65 22 20 2f 3e 20 6f 62 6a 65 63 74 20 69 6e 73  e" /> object ins
ad40: 74 61 6e 63 65 20 74 68 61 74 20 77 61 73 20 70  tance that was p
ad50: 61 73 73 65 64 20 74 6f 0d 0a 20 20 20 20 20 20  assed to..      
ad60: 2f 2f 2f 20 74 68 65 20 3c 73 65 65 20 63 72 65  /// the <see cre
ad70: 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  f="SQLiteConnect
ad80: 69 6f 6e 2e 43 72 65 61 74 65 4d 6f 64 75 6c 65  ion.CreateModule
ad90: 22 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20  " /> method...  
ada0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
adb0: 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 4c 6f 67 4d  y>..      NoLogM
adc0: 6f 64 75 6c 65 20 3d 20 30 78 31 30 30 30 2c 0d  odule = 0x1000,.
add0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
ade0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
adf0: 2f 20 45 6e 61 62 6c 65 20 6c 6f 67 67 69 6e 67  / Enable logging
ae00: 20 6f 66 20 61 6c 6c 20 76 69 72 74 75 61 6c 20   of all virtual 
ae10: 74 61 62 6c 65 20 6d 6f 64 75 6c 65 20 65 72 72  table module err
ae20: 6f 72 73 20 73 65 65 6e 20 62 79 20 74 68 65 0d  ors seen by the.
ae30: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
ae40: 63 72 65 66 3d 22 53 51 4c 69 74 65 4d 6f 64 75  cref="SQLiteModu
ae50: 6c 65 2e 53 65 74 54 61 62 6c 65 45 72 72 6f 72  le.SetTableError
ae60: 28 49 6e 74 50 74 72 2c 53 74 72 69 6e 67 29 22  (IntPtr,String)"
ae70: 20 2f 3e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20   /> method...   
ae80: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
ae90: 3e 0d 0a 20 20 20 20 20 20 4c 6f 67 4d 6f 64 75  >..      LogModu
aea0: 6c 65 45 72 72 6f 72 20 3d 20 30 78 32 30 30 30  leError = 0x2000
aeb0: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
aec0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
aed0: 2f 2f 2f 20 45 6e 61 62 6c 65 20 6c 6f 67 67 69  /// Enable loggi
aee0: 6e 67 20 6f 66 20 63 65 72 74 61 69 6e 20 76 69  ng of certain vi
aef0: 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64 75  rtual table modu
af00: 6c 65 20 65 78 63 65 70 74 69 6f 6e 73 20 74 68  le exceptions th
af10: 61 74 20 63 61 6e 6e 6f 74 0d 0a 20 20 20 20 20  at cannot..     
af20: 20 2f 2f 2f 20 62 65 20 65 61 73 69 6c 79 20 64   /// be easily d
af30: 69 73 63 6f 76 65 72 65 64 20 76 69 61 20 6f 74  iscovered via ot
af40: 68 65 72 20 6d 65 61 6e 73 2e 0d 0a 20 20 20 20  her means...    
af50: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
af60: 0d 0a 20 20 20 20 20 20 4c 6f 67 4d 6f 64 75 6c  ..      LogModul
af70: 65 45 78 63 65 70 74 69 6f 6e 20 3d 20 30 78 34  eException = 0x4
af80: 30 30 30 2c 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  000,..#endif....
af90: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
afa0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45  ry>..      /// E
afb0: 6e 61 62 6c 65 20 74 72 61 63 69 6e 67 20 6f 66  nable tracing of
afc0: 20 70 6f 74 65 6e 74 69 61 6c 6c 79 20 69 6d 70   potentially imp
afd0: 6f 72 74 61 6e 74 20 5b 6e 6f 6e 2d 66 61 74 61  ortant [non-fata
afe0: 6c 5d 20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69  l] error conditi
aff0: 6f 6e 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ons..      /// t
b000: 68 61 74 20 63 61 6e 6e 6f 74 20 62 65 20 65 61  hat cannot be ea
b010: 73 69 6c 79 20 72 65 70 6f 72 74 65 64 20 74 68  sily reported th
b020: 72 6f 75 67 68 20 6f 74 68 65 72 20 6d 65 61 6e  rough other mean
b030: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
b040: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
b050: 54 72 61 63 65 57 61 72 6e 69 6e 67 20 3d 20 30  TraceWarning = 0
b060: 78 38 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  x8000,....      
b070: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b080: 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62 69       /// When bi
b090: 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20  nding parameter 
b0a0: 76 61 6c 75 65 73 2c 20 61 6c 77 61 79 73 20 75  values, always u
b0b0: 73 65 20 74 68 65 20 69 6e 76 61 72 69 61 6e 74  se the invariant
b0c0: 20 63 75 6c 74 75 72 65 20 77 68 65 6e 0d 0a 20   culture when.. 
b0d0: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74       /// convert
b0e0: 69 6e 67 20 74 68 65 69 72 20 76 61 6c 75 65 73  ing their values
b0f0: 20 66 72 6f 6d 20 73 74 72 69 6e 67 73 2e 0d 0a   from strings...
b100: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
b110: 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f 6e 76  ary>..      Conv
b120: 65 72 74 49 6e 76 61 72 69 61 6e 74 54 65 78 74  ertInvariantText
b130: 20 3d 20 30 78 31 30 30 30 30 2c 0d 0a 0d 0a 20   = 0x10000,.... 
b140: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
b150: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68  y>..      /// Wh
b160: 65 6e 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d  en binding param
b170: 65 74 65 72 20 76 61 6c 75 65 73 2c 20 61 6c 77  eter values, alw
b180: 61 79 73 20 75 73 65 20 74 68 65 20 69 6e 76 61  ays use the inva
b190: 72 69 61 6e 74 20 63 75 6c 74 75 72 65 20 77 68  riant culture wh
b1a0: 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f  en..      /// co
b1b0: 6e 76 65 72 74 69 6e 67 20 74 68 65 69 72 20 76  nverting their v
b1c0: 61 6c 75 65 73 20 74 6f 20 73 74 72 69 6e 67 73  alues to strings
b1d0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
b1e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 42  ummary>..      B
b1f0: 69 6e 64 49 6e 76 61 72 69 61 6e 74 54 65 78 74  indInvariantText
b200: 20 3d 20 30 78 32 30 30 30 30 2c 0d 0a 0d 0a 20   = 0x20000,.... 
b210: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
b220: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 69  y>..      /// Di
b230: 73 61 62 6c 65 20 75 73 69 6e 67 20 74 68 65 20  sable using the 
b240: 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 6f 6f 6c 20  connection pool 
b250: 62 79 20 64 65 66 61 75 6c 74 2e 20 20 49 66 20  by default.  If 
b260: 74 68 65 20 22 50 6f 6f 6c 69 6e 67 22 0d 0a 20  the "Pooling".. 
b270: 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74       /// connect
b280: 69 6f 6e 20 73 74 72 69 6e 67 20 70 72 6f 70 65  ion string prope
b290: 72 74 79 20 69 73 20 73 70 65 63 69 66 69 65 64  rty is specified
b2a0: 2c 20 69 74 73 20 76 61 6c 75 65 20 77 69 6c 6c  , its value will
b2b0: 20 6f 76 65 72 72 69 64 65 0d 0a 20 20 20 20 20   override..     
b2c0: 20 2f 2f 2f 20 74 68 69 73 20 66 6c 61 67 2e 20   /// this flag. 
b2d0: 20 54 68 65 20 70 72 65 63 69 73 65 20 6f 75 74   The precise out
b2e0: 63 6f 6d 65 20 6f 66 20 63 6f 6d 62 69 6e 69 6e  come of combinin
b2f0: 67 20 74 68 69 73 20 66 6c 61 67 20 77 69 74 68  g this flag with
b300: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
b310: 3c 73 65 65 20 63 72 65 66 3d 22 55 73 65 43 6f  <see cref="UseCo
b320: 6e 6e 65 63 74 69 6f 6e 50 6f 6f 6c 22 20 2f 3e  nnectionPool" />
b330: 20 66 6c 61 67 20 69 73 20 75 6e 73 70 65 63 69   flag is unspeci
b340: 66 69 65 64 3b 20 68 6f 77 65 76 65 72 2c 0d 0a  fied; however,..
b350: 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 65 20 6f 66        /// one of
b360: 20 74 68 65 20 66 6c 61 67 73 20 77 69 6c 6c 20   the flags will 
b370: 62 65 20 69 6e 20 65 66 66 65 63 74 2e 0d 0a 20  be in effect... 
b380: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
b390: 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 43 6f 6e  ry>..      NoCon
b3a0: 6e 65 63 74 69 6f 6e 50 6f 6f 6c 20 3d 20 30 78  nectionPool = 0x
b3b0: 34 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  40000,....      
b3c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b3d0: 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20       /// Enable 
b3e0: 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63  using the connec
b3f0: 74 69 6f 6e 20 70 6f 6f 6c 20 62 79 20 64 65 66  tion pool by def
b400: 61 75 6c 74 2e 20 20 49 66 20 74 68 65 20 22 50  ault.  If the "P
b410: 6f 6f 6c 69 6e 67 22 0d 0a 20 20 20 20 20 20 2f  ooling"..      /
b420: 2f 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74  // connection st
b430: 72 69 6e 67 20 70 72 6f 70 65 72 74 79 20 69 73  ring property is
b440: 20 73 70 65 63 69 66 69 65 64 2c 20 69 74 73 20   specified, its 
b450: 76 61 6c 75 65 20 77 69 6c 6c 20 6f 76 65 72 72  value will overr
b460: 69 64 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74  ide..      /// t
b470: 68 69 73 20 66 6c 61 67 2e 20 20 54 68 65 20 70  his flag.  The p
b480: 72 65 63 69 73 65 20 6f 75 74 63 6f 6d 65 20 6f  recise outcome o
b490: 66 20 63 6f 6d 62 69 6e 69 6e 67 20 74 68 69 73  f combining this
b4a0: 20 66 6c 61 67 20 77 69 74 68 20 74 68 65 0d 0a   flag with the..
b4b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
b4c0: 72 65 66 3d 22 4e 6f 43 6f 6e 6e 65 63 74 69 6f  ref="NoConnectio
b4d0: 6e 50 6f 6f 6c 22 20 2f 3e 20 66 6c 61 67 20 69  nPool" /> flag i
b4e0: 73 20 75 6e 73 70 65 63 69 66 69 65 64 3b 20 68  s unspecified; h
b4f0: 6f 77 65 76 65 72 2c 0d 0a 20 20 20 20 20 20 2f  owever,..      /
b500: 2f 2f 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6c  // one of the fl
b510: 61 67 73 20 77 69 6c 6c 20 62 65 20 69 6e 20 65  ags will be in e
b520: 66 66 65 63 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  ffect...      //
b530: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
b540: 20 20 20 20 55 73 65 43 6f 6e 6e 65 63 74 69 6f      UseConnectio
b550: 6e 50 6f 6f 6c 20 3d 20 30 78 38 30 30 30 30 2c  nPool = 0x80000,
b560: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
b570: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
b580: 2f 2f 20 45 6e 61 62 6c 65 20 75 73 69 6e 67 20  // Enable using 
b590: 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d  per-connection m
b5a0: 61 70 70 69 6e 67 73 20 62 65 74 77 65 65 6e 20  appings between 
b5b0: 74 79 70 65 20 6e 61 6d 65 73 20 61 6e 64 0d 0a  type names and..
b5c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
b5d0: 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20  ref="DbType" /> 
b5e0: 76 61 6c 75 65 73 2e 20 20 41 6c 73 6f 20 73 65  values.  Also se
b5f0: 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  e the..      ///
b600: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
b610: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6c 65  teConnection.Cle
b620: 61 72 54 79 70 65 4d 61 70 70 69 6e 67 73 22 20  arTypeMappings" 
b630: 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  />,..      /// <
b640: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
b650: 43 6f 6e 6e 65 63 74 69 6f 6e 2e 47 65 74 54 79  Connection.GetTy
b660: 70 65 4d 61 70 70 69 6e 67 73 22 20 2f 3e 2c 20  peMappings" />, 
b670: 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  and..      /// <
b680: 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
b690: 43 6f 6e 6e 65 63 74 69 6f 6e 2e 41 64 64 54 79  Connection.AddTy
b6a0: 70 65 4d 61 70 70 69 6e 67 22 20 2f 3e 20 6d 65  peMapping" /> me
b6b0: 74 68 6f 64 73 2e 20 20 54 68 65 73 65 0d 0a 20  thods.  These.. 
b6c0: 20 20 20 20 20 2f 2f 2f 20 70 65 72 2d 63 6f 6e       /// per-con
b6d0: 6e 65 63 74 69 6f 6e 20 6d 61 70 70 69 6e 67 73  nection mappings
b6e0: 2c 20 77 68 65 6e 20 70 72 65 73 65 6e 74 2c 20  , when present, 
b6f0: 6f 76 65 72 72 69 64 65 20 74 68 65 20 63 6f 72  override the cor
b700: 72 65 73 70 6f 6e 64 69 6e 67 0d 0a 20 20 20 20  responding..    
b710: 20 20 2f 2f 2f 20 67 6c 6f 62 61 6c 20 6d 61 70    /// global map
b720: 70 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f  pings...      //
b730: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
b740: 20 20 20 20 55 73 65 43 6f 6e 6e 65 63 74 69 6f      UseConnectio
b750: 6e 54 79 70 65 73 20 3d 20 30 78 31 30 30 30 30  nTypes = 0x10000
b760: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
b770: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
b780: 20 2f 2f 2f 20 44 69 73 61 62 6c 65 20 75 73 69   /// Disable usi
b790: 6e 67 20 67 6c 6f 62 61 6c 20 6d 61 70 70 69 6e  ng global mappin
b7a0: 67 73 20 62 65 74 77 65 65 6e 20 74 79 70 65 20  gs between type 
b7b0: 6e 61 6d 65 73 20 61 6e 64 0d 0a 20 20 20 20 20  names and..     
b7c0: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
b7d0: 44 62 54 79 70 65 22 20 2f 3e 20 76 61 6c 75 65  DbType" /> value
b7e0: 73 2e 20 20 54 68 69 73 20 6d 61 79 20 62 65 20  s.  This may be 
b7f0: 75 73 65 66 75 6c 20 69 6e 20 73 6f 6d 65 20 76  useful in some v
b800: 65 72 79 20 6e 61 72 72 6f 77 0d 0a 20 20 20 20  ery narrow..    
b810: 20 20 2f 2f 2f 20 63 61 73 65 73 3b 20 68 6f 77    /// cases; how
b820: 65 76 65 72 2c 20 69 66 20 74 68 65 72 65 20 61  ever, if there a
b830: 72 65 20 6e 6f 20 70 65 72 2d 63 6f 6e 6e 65 63  re no per-connec
b840: 74 69 6f 6e 20 74 79 70 65 20 6d 61 70 70 69 6e  tion type mappin
b850: 67 73 2c 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  gs, the..      /
b860: 2f 2f 20 66 61 6c 6c 62 61 63 6b 20 64 65 66 61  // fallback defa
b870: 75 6c 74 73 20 77 69 6c 6c 20 62 65 20 75 73 65  ults will be use
b880: 64 20 66 6f 72 20 62 6f 74 68 20 74 79 70 65 20  d for both type 
b890: 6e 61 6d 65 73 20 61 6e 64 20 74 68 65 69 72 0d  names and their.
b8a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63  .      /// assoc
b8b0: 69 61 74 65 64 20 3c 73 65 65 20 63 72 65 66 3d  iated <see cref=
b8c0: 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61 6c 75  "DbType" /> valu
b8d0: 65 73 2e 20 20 54 68 65 72 65 66 6f 72 65 2c 20  es.  Therefore, 
b8e0: 75 73 65 20 6f 66 20 74 68 69 73 20 66 6c 61 67  use of this flag
b8f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 73 20 6e  ..      /// is n
b900: 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2e 0d  ot recommended..
b910: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
b920: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 47  mary>..      NoG
b930: 6c 6f 62 61 6c 54 79 70 65 73 20 3d 20 30 78 32  lobalTypes = 0x2
b940: 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  00000,....      
b950: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b960: 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74 68       /// When th
b970: 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
b980: 69 74 65 44 61 74 61 52 65 61 64 65 72 2e 48 61  iteDataReader.Ha
b990: 73 52 6f 77 73 22 20 2f 3e 20 70 72 6f 70 65 72  sRows" /> proper
b9a0: 74 79 20 69 73 20 75 73 65 64 2c 20 69 74 0d 0a  ty is used, it..
b9b0: 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64        /// should
b9c0: 20 72 65 74 75 72 6e 20 6e 6f 6e 2d 7a 65 72 6f   return non-zero
b9d0: 20 69 66 20 74 68 65 72 65 20 77 65 72 65 20 65   if there were e
b9e0: 76 65 72 20 61 6e 79 20 72 6f 77 73 20 69 6e 20  ver any rows in 
b9f0: 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 0d 0a  the associated..
ba00: 20 20 20 20 20 20 2f 2f 2f 20 72 65 73 75 6c 74        /// result
ba10: 20 73 65 74 73 2e 0d 0a 20 20 20 20 20 20 2f 2f   sets...      //
ba20: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ba30: 20 20 20 20 53 74 69 63 6b 79 48 61 73 52 6f 77      StickyHasRow
ba40: 73 20 3d 20 30 78 34 30 30 30 30 30 2c 0d 0a 0d  s = 0x400000,...
ba50: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
ba60: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
ba70: 45 6e 61 62 6c 65 20 22 73 74 72 69 63 74 22 20  Enable "strict" 
ba80: 74 72 61 6e 73 61 63 74 69 6f 6e 20 65 6e 6c 69  transaction enli
ba90: 73 74 6d 65 6e 74 20 73 65 6d 61 6e 74 69 63 73  stment semantics
baa0: 2e 20 20 53 65 74 74 69 6e 67 20 74 68 69 73 20  .  Setting this 
bab0: 66 6c 61 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  flag..      /// 
bac0: 77 69 6c 6c 20 63 61 75 73 65 20 61 6e 20 65 78  will cause an ex
bad0: 63 65 70 74 69 6f 6e 20 74 6f 20 62 65 20 74 68  ception to be th
bae0: 72 6f 77 6e 20 69 66 20 61 6e 20 61 74 74 65 6d  rown if an attem
baf0: 70 74 20 69 73 20 6d 61 64 65 20 74 6f 20 65 6e  pt is made to en
bb00: 6c 69 73 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  list..      /// 
bb10: 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  in a transaction
bb20: 20 77 69 74 68 20 61 6e 20 75 6e 61 76 61 69 6c   with an unavail
bb30: 61 62 6c 65 20 6f 72 20 75 6e 73 75 70 70 6f 72  able or unsuppor
bb40: 74 65 64 20 69 73 6f 6c 61 74 69 6f 6e 20 6c 65  ted isolation le
bb50: 76 65 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  vel...      /// 
bb60: 49 6e 20 74 68 65 20 66 75 74 75 72 65 2c 20 6d  In the future, m
bb70: 6f 72 65 20 65 78 74 65 6e 73 69 76 65 20 63 68  ore extensive ch
bb80: 65 63 6b 73 20 6d 61 79 20 62 65 20 65 6e 61 62  ecks may be enab
bb90: 6c 65 64 20 62 79 20 74 68 69 73 20 66 6c 61 67  led by this flag
bba0: 20 61 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77   as..      /// w
bbb0: 65 6c 6c 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ell...      /// 
bbc0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
bbd0: 20 20 53 74 72 69 63 74 45 6e 6c 69 73 74 6d 65    StrictEnlistme
bbe0: 6e 74 20 3d 20 30 78 38 30 30 30 30 30 2c 0d 0a  nt = 0x800000,..
bbf0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
bc00: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
bc10: 20 45 6e 61 62 6c 65 20 6d 61 70 70 69 6e 67 20   Enable mapping 
bc20: 6f 66 20 75 6e 73 75 70 70 6f 72 74 65 64 20 74  of unsupported t
bc30: 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 6f 6c 61  ransaction isola
bc40: 74 69 6f 6e 20 6c 65 76 65 6c 73 20 74 6f 20 74  tion levels to t
bc50: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6c  he..      /// cl
bc60: 6f 73 65 73 74 20 73 75 70 70 6f 72 74 65 64 20  osest supported 
bc70: 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 6f 6c  transaction isol
bc80: 61 74 69 6f 6e 20 6c 65 76 65 6c 2e 0d 0a 20 20  ation level...  
bc90: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
bca0: 79 3e 0d 0a 20 20 20 20 20 20 4d 61 70 49 73 6f  y>..      MapIso
bcb0: 6c 61 74 69 6f 6e 4c 65 76 65 6c 73 20 3d 20 30  lationLevels = 0
bcc0: 78 31 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20  x1000000,....   
bcd0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
bce0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e  ..      /// When
bcf0: 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d   returning colum
bd00: 6e 20 76 61 6c 75 65 73 2c 20 61 74 74 65 6d 70  n values, attemp
bd10: 74 20 74 6f 20 64 65 74 65 63 74 20 74 68 65 20  t to detect the 
bd20: 61 66 66 69 6e 69 74 79 20 6f 66 0d 0a 20 20 20  affinity of..   
bd30: 20 20 20 2f 2f 2f 20 74 65 78 74 75 61 6c 20 76     /// textual v
bd40: 61 6c 75 65 73 20 62 79 20 63 68 65 63 6b 69 6e  alues by checkin
bd50: 67 20 69 66 20 74 68 65 79 20 66 75 6c 6c 79 20  g if they fully 
bd60: 63 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 6f 73 65  conform to those
bd70: 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 20 20 2f   of the..      /
bd80: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 54 79  // <see cref="Ty
bd90: 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 22  peAffinity.Null"
bda0: 20 2f 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   />,..      /// 
bdb0: 3c 73 65 65 20 63 72 65 66 3d 22 54 79 70 65 41  <see cref="TypeA
bdc0: 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 22 20 2f  ffinity.Int64" /
bdd0: 3e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  >,..      /// <s
bde0: 65 65 20 63 72 65 66 3d 22 54 79 70 65 41 66 66  ee cref="TypeAff
bdf0: 69 6e 69 74 79 2e 44 6f 75 62 6c 65 22 20 2f 3e  inity.Double" />
be00: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20  ,..      /// or 
be10: 3c 73 65 65 20 63 72 65 66 3d 22 54 79 70 65 41  <see cref="TypeA
be20: 66 66 69 6e 69 74 79 2e 44 61 74 65 54 69 6d 65  ffinity.DateTime
be30: 22 20 2f 3e 20 74 79 70 65 73 2e 0d 0a 20 20 20  " /> types...   
be40: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
be50: 3e 0d 0a 20 20 20 20 20 20 44 65 74 65 63 74 54  >..      DetectT
be60: 65 78 74 41 66 66 69 6e 69 74 79 20 3d 20 30 78  extAffinity = 0x
be70: 32 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20  2000000,....    
be80: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
be90: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
bea0: 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d 6e  returning column
beb0: 20 76 61 6c 75 65 73 2c 20 61 74 74 65 6d 70 74   values, attempt
bec0: 20 74 6f 20 64 65 74 65 63 74 20 74 68 65 20 74   to detect the t
bed0: 79 70 65 20 6f 66 0d 0a 20 20 20 20 20 20 2f 2f  ype of..      //
bee0: 2f 20 73 74 72 69 6e 67 20 76 61 6c 75 65 73 20  / string values 
bef0: 62 79 20 63 68 65 63 6b 69 6e 67 20 69 66 20 74  by checking if t
bf00: 68 65 79 20 66 75 6c 6c 79 20 63 6f 6e 66 6f 72  hey fully confor
bf10: 6d 20 74 6f 20 74 68 6f 73 65 20 6f 66 0d 0a 20  m to those of.. 
bf20: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 3c 73 65       /// the <se
bf30: 65 20 63 72 65 66 3d 22 54 79 70 65 41 66 66 69  e cref="TypeAffi
bf40: 6e 69 74 79 2e 4e 75 6c 6c 22 20 2f 3e 2c 0d 0a  nity.Null" />,..
bf50: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
bf60: 72 65 66 3d 22 54 79 70 65 41 66 66 69 6e 69 74  ref="TypeAffinit
bf70: 79 2e 49 6e 74 36 34 22 20 2f 3e 2c 0d 0a 20 20  y.Int64" />,..  
bf80: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
bf90: 66 3d 22 54 79 70 65 41 66 66 69 6e 69 74 79 2e  f="TypeAffinity.
bfa0: 44 6f 75 62 6c 65 22 20 2f 3e 2c 0d 0a 20 20 20  Double" />,..   
bfb0: 20 20 20 2f 2f 2f 20 6f 72 20 3c 73 65 65 20 63     /// or <see c
bfc0: 72 65 66 3d 22 54 79 70 65 41 66 66 69 6e 69 74  ref="TypeAffinit
bfd0: 79 2e 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 74  y.DateTime" /> t
bfe0: 79 70 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ypes...      ///
bff0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
c000: 20 20 20 44 65 74 65 63 74 53 74 72 69 6e 67 54     DetectStringT
c010: 79 70 65 20 3d 20 30 78 34 30 30 30 30 30 30 2c  ype = 0x4000000,
c020: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
c030: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
c040: 2f 2f 20 53 6b 69 70 20 71 75 65 72 79 69 6e 67  // Skip querying
c050: 20 72 75 6e 74 69 6d 65 20 63 6f 6e 66 69 67 75   runtime configu
c060: 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 20  ration settings 
c070: 66 6f 72 20 75 73 65 20 62 79 20 74 68 65 0d 0a  for use by the..
c080: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63        /// <see c
c090: 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 76 65  ref="SQLiteConve
c0a0: 72 74 22 20 2f 3e 20 63 6c 61 73 73 2c 20 69 6e  rt" /> class, in
c0b0: 63 6c 75 64 69 6e 67 20 74 68 65 20 64 65 66 61  cluding the defa
c0c0: 75 6c 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ult..      /// <
c0d0: 73 65 65 20 63 72 65 66 3d 22 44 62 54 79 70 65  see cref="DbType
c0e0: 22 20 2f 3e 20 76 61 6c 75 65 20 61 6e 64 20 64  " /> value and d
c0f0: 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20  efault database 
c100: 74 79 70 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  type name...    
c110: 20 20 2f 2f 2f 20 3c 62 3e 4e 4f 54 45 3a 20 49    /// <b>NOTE: I
c120: 66 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  f the <see cref=
c130: 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  "SQLiteConnectio
c140: 6e 2e 44 65 66 61 75 6c 74 44 62 54 79 70 65 22  n.DefaultDbType"
c150: 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61   />..      /// a
c160: 6e 64 2f 6f 72 20 3c 73 65 65 20 63 72 65 66 3d  nd/or <see cref=
c170: 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  "SQLiteConnectio
c180: 6e 2e 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d  n.DefaultTypeNam
c190: 65 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  e" />..      ///
c1a0: 20 70 72 6f 70 65 72 74 69 65 73 20 61 72 65 20   properties are 
c1b0: 6e 6f 74 20 73 65 74 20 65 78 70 6c 69 63 69 74  not set explicit
c1c0: 6c 79 20 6e 6f 72 20 73 65 74 20 76 69 61 20 74  ly nor set via t
c1d0: 68 65 69 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d  heir connection.
c1e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e  .      /// strin
c1f0: 67 20 70 72 6f 70 65 72 74 69 65 73 20 61 6e 64  g properties and
c200: 20 72 65 70 65 61 74 65 64 20 63 61 6c 6c 73 20   repeated calls 
c210: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
c220: 73 65 20 72 75 6e 74 69 6d 65 0d 0a 20 20 20 20  se runtime..    
c230: 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 61 74    /// configurat
c240: 69 6f 6e 20 73 65 74 74 69 6e 67 73 20 61 72 65  ion settings are
c250: 20 73 65 65 6e 20 74 6f 20 62 65 20 61 20 70 72   seen to be a pr
c260: 6f 62 6c 65 6d 2c 20 74 68 69 73 20 66 6c 61 67  oblem, this flag
c270: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75  ..      /// shou
c280: 6c 64 20 62 65 20 73 65 74 2e 3c 2f 62 3e 0d 0a  ld be set.</b>..
c290: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
c2a0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 43 6f  ary>..      NoCo
c2b0: 6e 76 65 72 74 53 65 74 74 69 6e 67 73 20 3d 20  nvertSettings = 
c2c0: 30 78 38 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20  0x8000000,....  
c2d0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
c2e0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65  >..      /// Whe
c2f0: 6e 20 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65  n binding parame
c300: 74 65 72 20 76 61 6c 75 65 73 20 77 69 74 68 20  ter values with 
c310: 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 44  the <see cref="D
c320: 61 74 65 54 69 6d 65 22 20 2f 3e 0d 0a 20 20 20  ateTime" />..   
c330: 20 20 20 2f 2f 2f 20 74 79 70 65 2c 20 74 61 6b     /// type, tak
c340: 65 20 74 68 65 69 72 20 3c 73 65 65 20 63 72 65  e their <see cre
c350: 66 3d 22 44 61 74 65 54 69 6d 65 4b 69 6e 64 22  f="DateTimeKind"
c360: 20 2f 3e 20 69 6e 74 6f 20 61 63 63 6f 75 6e 74   /> into account
c370: 20 61 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77   as..      /// w
c380: 65 6c 6c 20 61 73 20 74 68 61 74 20 6f 66 20 74  ell as that of t
c390: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 3c 73  he associated <s
c3a0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
c3b0: 6f 6e 6e 65 63 74 69 6f 6e 22 20 2f 3e 2e 0d 0a  onnection" />...
c3c0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
c3d0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 42 69 6e 64  ary>..      Bind
c3e0: 44 61 74 65 54 69 6d 65 57 69 74 68 4b 69 6e 64  DateTimeWithKind
c3f0: 20 3d 20 30 78 31 30 30 30 30 30 30 30 2c 0d 0a   = 0x10000000,..
c400: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
c410: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
c420: 20 49 66 20 61 6e 20 65 78 63 65 70 74 69 6f 6e   If an exception
c430: 20 69 73 20 63 61 75 67 68 74 20 77 68 65 6e 20   is caught when 
c440: 72 61 69 73 69 6e 67 20 74 68 65 0d 0a 20 20 20  raising the..   
c450: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
c460: 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  ="SQLiteConnecti
c470: 6f 6e 2e 43 6f 6d 6d 69 74 22 20 2f 3e 20 65 76  on.Commit" /> ev
c480: 65 6e 74 2c 20 74 68 65 20 74 72 61 6e 73 61 63  ent, the transac
c490: 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  tion..      /// 
c4a0: 73 68 6f 75 6c 64 20 62 65 20 72 6f 6c 6c 65 64  should be rolled
c4b0: 20 62 61 63 6b 2e 20 20 49 66 20 74 68 69 73 20   back.  If this 
c4c0: 69 73 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64  is not specified
c4d0: 2c 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  , the transactio
c4e0: 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c  n..      /// wil
c4f0: 6c 20 63 6f 6e 74 69 6e 75 65 20 74 68 65 20 63  l continue the c
c500: 6f 6d 6d 69 74 20 70 72 6f 63 65 73 73 20 69 6e  ommit process in
c510: 73 74 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  stead...      //
c520: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
c530: 20 20 20 20 52 6f 6c 6c 62 61 63 6b 4f 6e 45 78      RollbackOnEx
c540: 63 65 70 74 69 6f 6e 20 3d 20 30 78 32 30 30 30  ception = 0x2000
c550: 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  0000,....      /
c560: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
c570: 20 20 20 20 2f 2f 2f 20 49 66 20 61 6e 20 65 78      /// If an ex
c580: 63 65 70 74 69 6f 6e 20 69 73 20 63 61 75 67 68  ception is caugh
c590: 74 20 77 68 65 6e 20 72 61 69 73 69 6e 67 20 74  t when raising t
c5a0: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
c5b0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
c5c0: 6f 6e 6e 65 63 74 69 6f 6e 2e 41 75 74 68 6f 72  onnection.Author
c5d0: 69 7a 65 22 20 2f 3e 20 65 76 65 6e 74 2c 20 74  ize" /> event, t
c5e0: 68 65 20 61 63 74 69 6f 6e 20 73 68 6f 75 6c 64  he action should
c5f0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 68 6f 75  ..      /// shou
c600: 6c 64 20 62 65 20 64 65 6e 69 65 64 2e 20 20 49  ld be denied.  I
c610: 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20 73 70  f this is not sp
c620: 65 63 69 66 69 65 64 2c 20 74 68 65 20 61 63 74  ecified, the act
c630: 69 6f 6e 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20  ion will be..   
c640: 20 20 20 2f 2f 2f 20 61 6c 6c 6f 77 65 64 20 69     /// allowed i
c650: 6e 73 74 65 61 64 2e 0d 0a 20 20 20 20 20 20 2f  nstead...      /
c660: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c670: 20 20 20 20 20 44 65 6e 79 4f 6e 45 78 63 65 70       DenyOnExcep
c680: 74 69 6f 6e 20 3d 20 30 78 34 30 30 30 30 30 30  tion = 0x4000000
c690: 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
c6a0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
c6b0: 20 2f 2f 2f 20 49 66 20 61 6e 20 65 78 63 65 70   /// If an excep
c6c0: 74 69 6f 6e 20 69 73 20 63 61 75 67 68 74 20 77  tion is caught w
c6d0: 68 65 6e 20 72 61 69 73 69 6e 67 20 74 68 65 0d  hen raising the.
c6e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
c6f0: 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e  cref="SQLiteConn
c700: 65 63 74 69 6f 6e 2e 50 72 6f 67 72 65 73 73 22  ection.Progress"
c710: 20 2f 3e 20 65 76 65 6e 74 2c 20 74 68 65 20 6f   /> event, the o
c720: 70 65 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20  peration..      
c730: 2f 2f 2f 20 73 68 6f 75 6c 64 20 62 65 20 69 6e  /// should be in
c740: 74 65 72 72 75 70 74 65 64 2e 20 20 49 66 20 74  terrupted.  If t
c750: 68 69 73 20 69 73 20 6e 6f 74 20 73 70 65 63 69  his is not speci
c760: 66 69 65 64 2c 20 74 68 65 20 6f 70 65 72 61 74  fied, the operat
c770: 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77  ion..      /// w
c780: 69 6c 6c 20 73 69 6d 70 6c 79 20 63 6f 6e 74 69  ill simply conti
c790: 6e 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  nue...      /// 
c7a0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
c7b0: 20 20 49 6e 74 65 72 72 75 70 74 4f 6e 45 78 63    InterruptOnExc
c7c0: 65 70 74 69 6f 6e 20 3d 20 30 78 38 30 30 30 30  eption = 0x80000
c7d0: 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  000,....      //
c7e0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
c7f0: 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 20 74     /// Attempt t
c800: 6f 20 75 6e 62 69 6e 64 20 61 6c 6c 20 66 75 6e  o unbind all fun
c810: 63 74 69 6f 6e 73 20 70 72 6f 76 69 64 65 64 20  ctions provided 
c820: 62 79 20 6f 74 68 65 72 20 6d 61 6e 61 67 65 64  by other managed
c830: 20 61 73 73 65 6d 62 6c 69 65 73 0d 0a 20 20 20   assemblies..   
c840: 20 20 20 2f 2f 2f 20 77 68 65 6e 20 63 6c 6f 73     /// when clos
c850: 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  ing the connecti
c860: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
c870: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
c880: 20 55 6e 62 69 6e 64 46 75 6e 63 74 69 6f 6e 73   UnbindFunctions
c890: 4f 6e 43 6c 6f 73 65 20 3d 20 30 78 31 30 30 30  OnClose = 0x1000
c8a0: 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  00000,....      
c8b0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
c8c0: 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 72 65       /// When re
c8d0: 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20 76  turning column v
c8e0: 61 6c 75 65 73 20 61 73 20 61 20 3c 73 65 65 20  alues as a <see 
c8f0: 63 72 65 66 3d 22 53 74 72 69 6e 67 22 20 2f 3e  cref="String" />
c900: 2c 20 73 6b 69 70 0d 0a 20 20 20 20 20 20 2f 2f  , skip..      //
c910: 2f 20 76 65 72 69 66 79 69 6e 67 20 74 68 65 69  / verifying thei
c920: 72 20 61 66 66 69 6e 69 74 79 2e 0d 0a 20 20 20  r affinity...   
c930: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
c940: 3e 0d 0a 20 20 20 20 20 20 4e 6f 56 65 72 69 66  >..      NoVerif
c950: 79 54 65 78 74 41 66 66 69 6e 69 74 79 20 3d 20  yTextAffinity = 
c960: 30 78 32 30 30 30 30 30 30 30 30 2c 0d 0a 0d 0a  0x200000000,....
c970: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
c980: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45  ry>..      /// E
c990: 6e 61 62 6c 65 20 75 73 69 6e 67 20 70 65 72 2d  nable using per-
c9a0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d 61 70 70 69  connection mappi
c9b0: 6e 67 73 20 62 65 74 77 65 65 6e 20 74 79 70 65  ngs between type
c9c0: 20 6e 61 6d 65 73 20 61 6e 64 0d 0a 20 20 20 20   names and..    
c9d0: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
c9e0: 22 53 51 4c 69 74 65 42 69 6e 64 56 61 6c 75 65  "SQLiteBindValue
c9f0: 43 61 6c 6c 62 61 63 6b 22 20 2f 3e 20 76 61 6c  Callback" /> val
ca00: 75 65 73 2e 20 20 41 6c 73 6f 20 73 65 65 20 74  ues.  Also see t
ca10: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  he..      /// <s
ca20: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
ca30: 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6c 65 61 72 54  onnection.ClearT
ca40: 79 70 65 43 61 6c 6c 62 61 63 6b 73 22 20 2f 3e  ypeCallbacks" />
ca50: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  ,..      /// <se
ca60: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
ca70: 6e 6e 65 63 74 69 6f 6e 2e 54 72 79 47 65 74 54  nnection.TryGetT
ca80: 79 70 65 43 61 6c 6c 62 61 63 6b 73 22 20 2f 3e  ypeCallbacks" />
ca90: 2c 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  , and..      ///
caa0: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
cab0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 53 65 74  teConnection.Set
cac0: 54 79 70 65 43 61 6c 6c 62 61 63 6b 73 22 20 2f  TypeCallbacks" /
cad0: 3e 20 6d 65 74 68 6f 64 73 2e 0d 0a 20 20 20 20  > methods...    
cae0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
caf0: 0d 0a 20 20 20 20 20 20 55 73 65 43 6f 6e 6e 65  ..      UseConne
cb00: 63 74 69 6f 6e 42 69 6e 64 56 61 6c 75 65 43 61  ctionBindValueCa
cb10: 6c 6c 62 61 63 6b 73 20 3d 20 30 78 34 30 30 30  llbacks = 0x4000
cb20: 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  00000,....      
cb30: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
cb40: 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 20       /// Enable 
cb50: 75 73 69 6e 67 20 70 65 72 2d 63 6f 6e 6e 65 63  using per-connec
cb60: 74 69 6f 6e 20 6d 61 70 70 69 6e 67 73 20 62 65  tion mappings be
cb70: 74 77 65 65 6e 20 74 79 70 65 20 6e 61 6d 65 73  tween type names
cb80: 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   and..      /// 
cb90: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
cba0: 65 52 65 61 64 56 61 6c 75 65 43 61 6c 6c 62 61  eReadValueCallba
cbb0: 63 6b 22 20 2f 3e 20 76 61 6c 75 65 73 2e 20 20  ck" /> values.  
cbc0: 41 6c 73 6f 20 73 65 65 20 74 68 65 0d 0a 20 20  Also see the..  
cbd0: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
cbe0: 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  f="SQLiteConnect
cbf0: 69 6f 6e 2e 43 6c 65 61 72 54 79 70 65 43 61 6c  ion.ClearTypeCal
cc00: 6c 62 61 63 6b 73 22 20 2f 3e 2c 0d 0a 20 20 20  lbacks" />,..   
cc10: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
cc20: 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  ="SQLiteConnecti
cc30: 6f 6e 2e 54 72 79 47 65 74 54 79 70 65 43 61 6c  on.TryGetTypeCal
cc40: 6c 62 61 63 6b 73 22 20 2f 3e 2c 20 61 6e 64 0d  lbacks" />, and.
cc50: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
cc60: 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e  cref="SQLiteConn
cc70: 65 63 74 69 6f 6e 2e 53 65 74 54 79 70 65 43 61  ection.SetTypeCa
cc80: 6c 6c 62 61 63 6b 73 22 20 2f 3e 20 6d 65 74 68  llbacks" /> meth
cc90: 6f 64 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ods...      /// 
cca0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
ccb0: 20 20 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 52    UseConnectionR
ccc0: 65 61 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b  eadValueCallback
ccd0: 73 20 3d 20 30 78 38 30 30 30 30 30 30 30 30 2c  s = 0x800000000,
cce0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
ccf0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
cd00: 2f 2f 20 49 66 20 74 68 65 20 64 61 74 61 62 61  // If the databa
cd10: 73 65 20 74 79 70 65 20 6e 61 6d 65 20 68 61 73  se type name has
cd20: 20 6e 6f 74 20 62 65 65 6e 20 65 78 70 6c 69 63   not been explic
cd30: 69 74 6c 79 20 73 65 74 20 66 6f 72 20 74 68 65  itly set for the
cd40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61  ..      /// para
cd50: 6d 65 74 65 72 20 73 70 65 63 69 66 69 65 64 2c  meter specified,
cd60: 20 66 61 6c 6c 62 61 63 6b 20 74 6f 20 75 73 69   fallback to usi
cd70: 6e 67 20 74 68 65 20 70 61 72 61 6d 65 74 65 72  ng the parameter
cd80: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
cd90: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
cda0: 20 20 20 20 55 73 65 50 61 72 61 6d 65 74 65 72      UseParameter
cdb0: 4e 61 6d 65 46 6f 72 54 79 70 65 4e 61 6d 65 20  NameForTypeName 
cdc0: 3d 20 30 78 31 30 30 30 30 30 30 30 30 30 2c 0d  = 0x1000000000,.
cdd0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
cde0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
cdf0: 2f 20 49 66 20 74 68 65 20 64 61 74 61 62 61 73  / If the databas
ce00: 65 20 74 79 70 65 20 6e 61 6d 65 20 68 61 73 20  e type name has 
ce10: 6e 6f 74 20 62 65 65 6e 20 65 78 70 6c 69 63 69  not been explici
ce20: 74 6c 79 20 73 65 74 20 66 6f 72 20 74 68 65 0d  tly set for the.
ce30: 0a 20 20 20 20 20 20 2f 2f 2f 20 70 61 72 61 6d  .      /// param
ce40: 65 74 65 72 20 73 70 65 63 69 66 69 65 64 2c 20  eter specified, 
ce50: 66 61 6c 6c 62 61 63 6b 20 74 6f 20 75 73 69 6e  fallback to usin
ce60: 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74  g the database t
ce70: 79 70 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20  ype name..      
ce80: 2f 2f 2f 20 61 73 73 6f 63 69 61 74 65 64 20 77  /// associated w
ce90: 69 74 68 20 74 68 65 20 3c 73 65 65 20 63 72 65  ith the <see cre
cea0: 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61  f="DbType" /> va
ceb0: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
cec0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
ced0: 20 20 55 73 65 50 61 72 61 6d 65 74 65 72 44 62    UseParameterDb
cee0: 54 79 70 65 46 6f 72 54 79 70 65 4e 61 6d 65 20  TypeForTypeName 
cef0: 3d 20 30 78 32 30 30 30 30 30 30 30 30 30 2c 0d  = 0x2000000000,.
cf00: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
cf10: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
cf20: 2f 20 57 68 65 6e 20 72 65 74 75 72 6e 69 6e 67  / When returning
cf30: 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20   column values, 
cf40: 73 6b 69 70 20 76 65 72 69 66 79 69 6e 67 20 74  skip verifying t
cf50: 68 65 69 72 20 61 66 66 69 6e 69 74 79 2e 0d 0a  heir affinity...
cf60: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
cf70: 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 56 65  ary>..      NoVe
cf80: 72 69 66 79 54 79 70 65 41 66 66 69 6e 69 74 79  rifyTypeAffinity
cf90: 20 3d 20 30 78 34 30 30 30 30 30 30 30 30 30 2c   = 0x4000000000,
cfa0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
cfb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
cfc0: 2f 2f 20 41 6c 6c 6f 77 20 74 72 61 6e 73 61 63  // Allow transac
cfd0: 74 69 6f 6e 73 20 74 6f 20 62 65 20 6e 65 73 74  tions to be nest
cfe0: 65 64 2e 20 20 54 68 65 20 6f 75 74 65 72 6d 6f  ed.  The outermo
cff0: 73 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 73  st transaction s
d000: 74 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  till..      /// 
d010: 63 6f 6e 74 72 6f 6c 73 20 77 68 65 74 68 65 72  controls whether
d020: 20 6f 72 20 6e 6f 74 20 61 6e 79 20 63 68 61 6e   or not any chan
d030: 67 65 73 20 61 72 65 20 75 6c 74 69 6d 61 74 65  ges are ultimate
d040: 6c 79 20 63 6f 6d 6d 69 74 74 65 64 20 6f 72 0d  ly committed or.
d050: 0a 20 20 20 20 20 20 2f 2f 2f 20 72 6f 6c 6c 65  .      /// rolle
d060: 64 20 62 61 63 6b 2e 20 20 41 6c 6c 20 6e 6f 6e  d back.  All non
d070: 2d 6f 75 74 65 72 6d 6f 73 74 20 74 72 61 6e 73  -outermost trans
d080: 61 63 74 69 6f 6e 73 20 61 72 65 20 69 6d 70 6c  actions are impl
d090: 65 6d 65 6e 74 65 64 20 75 73 69 6e 67 0d 0a 20  emented using.. 
d0a0: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 53 41 56       /// the SAV
d0b0: 45 50 4f 49 4e 54 20 63 6f 6e 73 74 72 75 63 74  EPOINT construct
d0c0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
d0d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 41  ummary>..      A
d0e0: 6c 6c 6f 77 4e 65 73 74 65 64 54 72 61 6e 73 61  llowNestedTransa
d0f0: 63 74 69 6f 6e 73 20 3d 20 30 78 38 30 30 30 30  ctions = 0x80000
d100: 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20 20  00000,....      
d110: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
d120: 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62 69       /// When bi
d130: 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20  nding parameter 
d140: 76 61 6c 75 65 73 2c 20 61 6c 77 61 79 73 20 62  values, always b
d150: 69 6e 64 20 3c 73 65 65 20 63 72 65 66 3d 22 44  ind <see cref="D
d160: 65 63 69 6d 61 6c 22 20 2f 3e 0d 0a 20 20 20 20  ecimal" />..    
d170: 20 20 2f 2f 2f 20 76 61 6c 75 65 73 20 61 73 20    /// values as 
d180: 74 68 6f 75 67 68 20 74 68 65 79 20 77 65 72 65  though they were
d190: 20 70 6c 61 69 6e 20 74 65 78 74 20 28 69 2e 65   plain text (i.e
d1a0: 2e 20 6e 6f 74 20 3c 73 65 65 20 63 72 65 66 3d  . not <see cref=
d1b0: 22 44 65 63 69 6d 61 6c 22 20 2f 3e 2c 0d 0a 20  "Decimal" />,.. 
d1c0: 20 20 20 20 20 2f 2f 2f 20 77 68 69 63 68 20 69       /// which i
d1d0: 73 20 74 68 65 20 6c 65 67 61 63 79 20 62 65 68  s the legacy beh
d1e0: 61 76 69 6f 72 29 2e 0d 0a 20 20 20 20 20 20 2f  avior)...      /
d1f0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d200: 20 20 20 20 20 42 69 6e 64 44 65 63 69 6d 61 6c       BindDecimal
d210: 41 73 54 65 78 74 20 3d 20 30 78 31 30 30 30 30  AsText = 0x10000
d220: 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20  000000,....     
d230: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d240: 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 72        /// When r
d250: 65 74 75 72 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20  eturning column 
d260: 76 61 6c 75 65 73 2c 20 61 6c 77 61 79 73 20 72  values, always r
d270: 65 74 75 72 6e 20 3c 73 65 65 20 63 72 65 66 3d  eturn <see cref=
d280: 22 44 65 63 69 6d 61 6c 22 20 2f 3e 0d 0a 20 20  "Decimal" />..  
d290: 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 20 61      /// values a
d2a0: 73 20 74 68 6f 75 67 68 20 74 68 65 79 20 77 65  s though they we
d2b0: 72 65 20 70 6c 61 69 6e 20 74 65 78 74 20 28 69  re plain text (i
d2c0: 2e 65 2e 20 6e 6f 74 20 3c 73 65 65 20 63 72 65  .e. not <see cre
d2d0: 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 2c 0d 0a  f="Double" />,..
d2e0: 20 20 20 20 20 20 2f 2f 2f 20 77 68 69 63 68 20        /// which 
d2f0: 69 73 20 74 68 65 20 6c 65 67 61 63 79 20 62 65  is the legacy be
d300: 68 61 76 69 6f 72 29 2e 0d 0a 20 20 20 20 20 20  havior)...      
d310: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
d320: 20 20 20 20 20 20 47 65 74 44 65 63 69 6d 61 6c        GetDecimal
d330: 41 73 54 65 78 74 20 3d 20 30 78 32 30 30 30 30  AsText = 0x20000
d340: 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20  000000,....     
d350: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d360: 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62        /// When b
d370: 69 6e 64 69 6e 67 20 3c 73 65 65 20 63 72 65 66  inding <see cref
d380: 3d 22 44 65 63 69 6d 61 6c 22 20 2f 3e 20 70 61  ="Decimal" /> pa
d390: 72 61 6d 65 74 65 72 20 76 61 6c 75 65 73 2c 20  rameter values, 
d3a0: 61 6c 77 61 79 73 20 75 73 65 0d 0a 20 20 20 20  always use..    
d3b0: 20 20 2f 2f 2f 20 74 68 65 20 69 6e 76 61 72 69    /// the invari
d3c0: 61 6e 74 20 63 75 6c 74 75 72 65 20 77 68 65 6e  ant culture when
d3d0: 20 63 6f 6e 76 65 72 74 69 6e 67 20 74 68 65 69   converting thei
d3e0: 72 20 76 61 6c 75 65 73 20 74 6f 20 73 74 72 69  r values to stri
d3f0: 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ngs...      /// 
d400: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
d410: 20 20 42 69 6e 64 49 6e 76 61 72 69 61 6e 74 44    BindInvariantD
d420: 65 63 69 6d 61 6c 20 3d 20 30 78 34 30 30 30 30  ecimal = 0x40000
d430: 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20  000000,....     
d440: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d450: 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 72        /// When r
d460: 65 74 75 72 6e 69 6e 67 20 3c 73 65 65 20 63 72  eturning <see cr
d470: 65 66 3d 22 44 65 63 69 6d 61 6c 22 20 2f 3e 20  ef="Decimal" /> 
d480: 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61  column values, a
d490: 6c 77 61 79 73 20 75 73 65 0d 0a 20 20 20 20 20  lways use..     
d4a0: 20 2f 2f 2f 20 74 68 65 20 69 6e 76 61 72 69 61   /// the invaria
d4b0: 6e 74 20 63 75 6c 74 75 72 65 20 77 68 65 6e 20  nt culture when 
d4c0: 63 6f 6e 76 65 72 74 69 6e 67 20 74 68 65 69 72  converting their
d4d0: 20 76 61 6c 75 65 73 20 66 72 6f 6d 20 73 74 72   values from str
d4e0: 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ings...      ///
d4f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
d500: 20 20 20 47 65 74 49 6e 76 61 72 69 61 6e 74 44     GetInvariantD
d510: 65 63 69 6d 61 6c 20 3d 20 30 78 38 30 30 30 30  ecimal = 0x80000
d520: 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20 20  000000,....     
d530: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d540: 20 20 20 20 20 20 2f 2f 2f 20 3c 62 3e 45 58 50        /// <b>EXP
d550: 45 52 49 4d 45 4e 54 41 4c 3c 2f 62 3e 20 2d 2d  ERIMENTAL</b> --
d560: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62  ..      /// Enab
d570: 6c 65 20 77 61 69 74 69 6e 67 20 66 6f 72 20 74  le waiting for t
d580: 68 65 20 65 6e 6c 69 73 74 6d 65 6e 74 20 74 6f  he enlistment to
d590: 20 62 65 20 72 65 73 65 74 20 70 72 69 6f 72 20   be reset prior 
d5a0: 74 6f 20 61 74 74 65 6d 70 74 69 6e 67 0d 0a 20  to attempting.. 
d5b0: 20 20 20 20 20 2f 2f 2f 20 74 6f 20 63 72 65 61       /// to crea
d5c0: 74 65 20 61 20 6e 65 77 20 65 6e 6c 69 73 74 6d  te a new enlistm
d5d0: 65 6e 74 2e 20 20 54 68 69 73 20 6d 61 79 20 62  ent.  This may b
d5e0: 65 20 6e 65 63 65 73 73 61 72 79 20 64 75 65 20  e necessary due 
d5f0: 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  to the..      //
d600: 2f 20 73 65 6d 61 6e 74 69 63 73 20 75 73 65 64  / semantics used
d610: 20 62 79 20 64 69 73 74 72 69 62 75 74 65 64 20   by distributed 
d620: 74 72 61 6e 73 61 63 74 69 6f 6e 73 2c 20 77 68  transactions, wh
d630: 69 63 68 20 63 6f 6d 70 6c 65 74 65 0d 0a 20 20  ich complete..  
d640: 20 20 20 20 2f 2f 2f 20 61 73 79 6e 63 68 72 6f      /// asynchro
d650: 6e 6f 75 73 6c 79 2e 0d 0a 20 20 20 20 20 20 2f  nously...      /
d660: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d670: 20 20 20 20 20 57 61 69 74 46 6f 72 45 6e 6c 69       WaitForEnli
d680: 73 74 6d 65 6e 74 52 65 73 65 74 20 3d 20 30 78  stmentReset = 0x
d690: 31 30 30 30 30 30 30 30 30 30 30 30 2c 0d 0a 0d  100000000000,...
d6a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
d6b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
d6c0: 57 68 65 6e 20 72 65 74 75 72 6e 69 6e 67 20 3c  When returning <
d6d0: 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22  see cref="Int64"
d6e0: 20 2f 3e 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65   /> column value
d6f0: 73 2c 20 61 6c 77 61 79 73 20 75 73 65 0d 0a 20  s, always use.. 
d700: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 69 6e 76       /// the inv
d710: 61 72 69 61 6e 74 20 63 75 6c 74 75 72 65 20 77  ariant culture w
d720: 68 65 6e 20 63 6f 6e 76 65 72 74 69 6e 67 20 74  hen converting t
d730: 68 65 69 72 20 76 61 6c 75 65 73 20 66 72 6f 6d  heir values from
d740: 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 20   strings...     
d750: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
d760: 0a 20 20 20 20 20 20 47 65 74 49 6e 76 61 72 69  .      GetInvari
d770: 61 6e 74 49 6e 74 36 34 20 3d 20 30 78 32 30 30  antInt64 = 0x200
d780: 30 30 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20  000000000,....  
d790: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
d7a0: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65  >..      /// Whe
d7b0: 6e 20 72 65 74 75 72 6e 69 6e 67 20 3c 73 65 65  n returning <see
d7c0: 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f   cref="Double" /
d7d0: 3e 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 2c  > column values,
d7e0: 20 61 6c 77 61 79 73 20 75 73 65 0d 0a 20 20 20   always use..   
d7f0: 20 20 20 2f 2f 2f 20 74 68 65 20 69 6e 76 61 72     /// the invar
d800: 69 61 6e 74 20 63 75 6c 74 75 72 65 20 77 68 65  iant culture whe
d810: 6e 20 63 6f 6e 76 65 72 74 69 6e 67 20 74 68 65  n converting the
d820: 69 72 20 76 61 6c 75 65 73 20 66 72 6f 6d 20 73  ir values from s
d830: 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f  trings...      /
d840: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d850: 20 20 20 20 20 47 65 74 49 6e 76 61 72 69 61 6e       GetInvarian
d860: 74 44 6f 75 62 6c 65 20 3d 20 30 78 34 30 30 30  tDouble = 0x4000
d870: 30 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20  00000000,....   
d880: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
d890: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 62 3e 45  ..      /// <b>E
d8a0: 58 50 45 52 49 4d 45 4e 54 41 4c 3c 2f 62 3e 20  XPERIMENTAL</b> 
d8b0: 2d 2d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e  --..      /// En
d8c0: 61 62 6c 65 20 73 74 72 69 63 74 20 63 6f 6e 66  able strict conf
d8d0: 6f 72 6d 61 6e 63 65 20 74 6f 20 74 68 65 20 41  ormance to the A
d8e0: 44 4f 2e 4e 45 54 20 73 74 61 6e 64 61 72 64 2c  DO.NET standard,
d8f0: 20 65 2e 67 2e 20 75 73 65 20 6f 66 0d 0a 20 20   e.g. use of..  
d900: 20 20 20 20 2f 2f 2f 20 74 68 72 6f 77 6e 20 65      /// thrown e
d910: 78 63 65 70 74 69 6f 6e 73 20 74 6f 20 69 6e 64  xceptions to ind
d920: 69 63 61 74 65 20 63 6f 6d 6d 6f 6e 20 65 72 72  icate common err
d930: 6f 72 20 63 6f 6e 64 69 74 69 6f 6e 73 2e 0d 0a  or conditions...
d940: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
d950: 61 72 79 3e 0d 0a 20 20 20 20 20 20 53 74 72 69  ary>..      Stri
d960: 63 74 43 6f 6e 66 6f 72 6d 61 6e 63 65 20 3d 20  ctConformance = 
d970: 30 78 38 30 30 30 30 30 30 30 30 30 30 30 2c 0d  0x800000000000,.
d980: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
d990: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
d9a0: 2f 20 3c 62 3e 45 58 50 45 52 49 4d 45 4e 54 41  / <b>EXPERIMENTA
d9b0: 4c 3c 2f 62 3e 20 2d 2d 0d 0a 20 20 20 20 20 20  L</b> --..      
d9c0: 2f 2f 2f 20 57 68 65 6e 20 6f 70 65 6e 69 6e 67  /// When opening
d9d0: 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 61   a connection, a
d9e0: 74 74 65 6d 70 74 20 74 6f 20 68 69 64 65 20 74  ttempt to hide t
d9f0: 68 65 20 70 61 73 73 77 6f 72 64 20 66 72 6f 6d  he password from
da00: 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
da10: 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e  connection strin
da20: 67 2c 20 65 74 63 2e 20 20 47 69 76 65 6e 20 74  g, etc.  Given t
da30: 68 65 20 6d 65 6d 6f 72 79 20 61 72 63 68 69 74  he memory archit
da40: 65 63 74 75 72 65 20 6f 66 20 74 68 65 20 43 4c  ecture of the CL
da50: 52 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 28 61  R,..      /// (a
da60: 6e 64 20 50 2f 49 6e 76 6f 6b 65 29 20 74 68 69  nd P/Invoke) thi
da70: 73 20 69 73 20 6e 6f 74 20 31 30 30 25 20 72 65  s is not 100% re
da80: 6c 69 61 62 6c 65 20 61 6e 64 20 73 68 6f 75 6c  liable and shoul
da90: 64 20 6e 6f 74 20 62 65 20 72 65 6c 69 65 64 0d  d not be relied.
daa0: 0a 20 20 20 20 20 20 2f 2f 2f 20 75 70 6f 6e 20  .      /// upon 
dab0: 66 6f 72 20 73 65 63 75 72 69 74 79 20 63 72 69  for security cri
dac0: 74 69 63 61 6c 20 75 73 65 73 20 6f 72 20 61 70  tical uses or ap
dad0: 70 6c 69 63 61 74 69 6f 6e 73 2e 0d 0a 20 20 20  plications...   
dae0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
daf0: 3e 0d 0a 20 20 20 20 20 20 48 69 64 65 50 61 73  >..      HidePas
db00: 73 77 6f 72 64 20 3d 20 30 78 31 30 30 30 30 30  sword = 0x100000
db10: 30 30 30 30 30 30 30 2c 0d 0a 0d 0a 20 20 20 20  0000000,....    
db20: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
db30: 0a 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20  .      /// When 
db40: 62 69 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65  binding paramete
db50: 72 20 76 61 6c 75 65 73 20 6f 72 20 72 65 74 75  r values or retu
db60: 72 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20 76 61 6c  rning column val
db70: 75 65 73 2c 20 61 6c 77 61 79 73 0d 0a 20 20 20  ues, always..   
db80: 20 20 20 2f 2f 2f 20 74 72 65 61 74 20 74 68 65     /// treat the
db90: 6d 20 61 73 20 74 68 6f 75 67 68 20 74 68 65 79  m as though they
dba0: 20 77 65 72 65 20 70 6c 61 69 6e 20 74 65 78 74   were plain text
dbb0: 20 28 69 2e 65 2e 20 6e 6f 20 6e 75 6d 65 72 69   (i.e. no numeri
dbc0: 63 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61  c,..      /// da
dbd0: 74 65 2f 74 69 6d 65 2c 20 6f 72 20 6f 74 68 65  te/time, or othe
dbe0: 72 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 73 68  r conversions sh
dbf0: 6f 75 6c 64 20 62 65 20 61 74 74 65 6d 70 74 65  ould be attempte
dc00: 64 29 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  d)...      /// <
dc10: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
dc20: 20 42 69 6e 64 41 6e 64 47 65 74 41 6c 6c 41 73   BindAndGetAllAs
dc30: 54 65 78 74 20 3d 20 42 69 6e 64 41 6c 6c 41 73  Text = BindAllAs
dc40: 54 65 78 74 20 7c 20 47 65 74 41 6c 6c 41 73 54  Text | GetAllAsT
dc50: 65 78 74 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  ext,....      //
dc60: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
dc70: 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62 69 6e 64     /// When bind
dc80: 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20 76 61  ing parameter va
dc90: 6c 75 65 73 2c 20 61 6c 77 61 79 73 20 75 73 65  lues, always use
dca0: 20 74 68 65 20 69 6e 76 61 72 69 61 6e 74 20 63   the invariant c
dcb0: 75 6c 74 75 72 65 20 77 68 65 6e 0d 0a 20 20 20  ulture when..   
dcc0: 20 20 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 69 6e     /// convertin
dcd0: 67 20 74 68 65 69 72 20 76 61 6c 75 65 73 20 74  g their values t
dce0: 6f 20 73 74 72 69 6e 67 73 20 6f 72 20 66 72 6f  o strings or fro
dcf0: 6d 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20  m strings...    
dd00: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
dd10: 0d 0a 20 20 20 20 20 20 43 6f 6e 76 65 72 74 41  ..      ConvertA
dd20: 6e 64 42 69 6e 64 49 6e 76 61 72 69 61 6e 74 54  ndBindInvariantT
dd30: 65 78 74 20 3d 20 43 6f 6e 76 65 72 74 49 6e 76  ext = ConvertInv
dd40: 61 72 69 61 6e 74 54 65 78 74 20 7c 20 42 69 6e  ariantText | Bin
dd50: 64 49 6e 76 61 72 69 61 6e 74 54 65 78 74 2c 0d  dInvariantText,.
dd60: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
dd70: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
dd80: 2f 20 57 68 65 6e 20 62 69 6e 64 69 6e 67 20 70  / When binding p
dd90: 61 72 61 6d 65 74 65 72 20 76 61 6c 75 65 73 20  arameter values 
dda0: 6f 72 20 72 65 74 75 72 6e 69 6e 67 20 63 6f 6c  or returning col
ddb0: 75 6d 6e 20 76 61 6c 75 65 73 2c 20 61 6c 77 61  umn values, alwa
ddc0: 79 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72  ys..      /// tr
ddd0: 65 61 74 20 74 68 65 6d 20 61 73 20 74 68 6f 75  eat them as thou
dde0: 67 68 20 74 68 65 79 20 77 65 72 65 20 70 6c 61  gh they were pla
ddf0: 69 6e 20 74 65 78 74 20 28 69 2e 65 2e 20 6e 6f  in text (i.e. no
de00: 20 6e 75 6d 65 72 69 63 2c 0d 0a 20 20 20 20 20   numeric,..     
de10: 20 2f 2f 2f 20 64 61 74 65 2f 74 69 6d 65 2c 20   /// date/time, 
de20: 6f 72 20 6f 74 68 65 72 20 63 6f 6e 76 65 72 73  or other convers
de30: 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 61  ions should be a
de40: 74 74 65 6d 70 74 65 64 29 20 61 6e 64 20 61 6c  ttempted) and al
de50: 77 61 79 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ways..      /// 
de60: 75 73 65 20 74 68 65 20 69 6e 76 61 72 69 61 6e  use the invarian
de70: 74 20 63 75 6c 74 75 72 65 20 77 68 65 6e 20 63  t culture when c
de80: 6f 6e 76 65 72 74 69 6e 67 20 74 68 65 69 72 20  onverting their 
de90: 76 61 6c 75 65 73 20 74 6f 20 73 74 72 69 6e 67  values to string
dea0: 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
deb0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
dec0: 42 69 6e 64 41 6e 64 47 65 74 41 6c 6c 41 73 49  BindAndGetAllAsI
ded0: 6e 76 61 72 69 61 6e 74 54 65 78 74 20 3d 20 42  nvariantText = B
dee0: 69 6e 64 41 6e 64 47 65 74 41 6c 6c 41 73 54 65  indAndGetAllAsTe
def0: 78 74 20 7c 20 42 69 6e 64 49 6e 76 61 72 69 61  xt | BindInvaria
df00: 6e 74 54 65 78 74 2c 0d 0a 0d 0a 20 20 20 20 20  ntText,....     
df10: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
df20: 20 20 20 20 20 20 2f 2f 2f 20 57 68 65 6e 20 62        /// When b
df30: 69 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65 72  inding parameter
df40: 20 76 61 6c 75 65 73 20 6f 72 20 72 65 74 75 72   values or retur
df50: 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20 76 61 6c 75  ning column valu
df60: 65 73 2c 20 61 6c 77 61 79 73 0d 0a 20 20 20 20  es, always..    
df70: 20 20 2f 2f 2f 20 74 72 65 61 74 20 74 68 65 6d    /// treat them
df80: 20 61 73 20 74 68 6f 75 67 68 20 74 68 65 79 20   as though they 
df90: 77 65 72 65 20 70 6c 61 69 6e 20 74 65 78 74 20  were plain text 
dfa0: 28 69 2e 65 2e 20 6e 6f 20 6e 75 6d 65 72 69 63  (i.e. no numeric
dfb0: 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 74  ,..      /// dat
dfc0: 65 2f 74 69 6d 65 2c 20 6f 72 20 6f 74 68 65 72  e/time, or other
dfd0: 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 73 68 6f   conversions sho
dfe0: 75 6c 64 20 62 65 20 61 74 74 65 6d 70 74 65 64  uld be attempted
dff0: 29 20 61 6e 64 20 61 6c 77 61 79 73 0d 0a 20 20  ) and always..  
e000: 20 20 20 20 2f 2f 2f 20 75 73 65 20 74 68 65 20      /// use the 
e010: 69 6e 76 61 72 69 61 6e 74 20 63 75 6c 74 75 72  invariant cultur
e020: 65 20 77 68 65 6e 20 63 6f 6e 76 65 72 74 69 6e  e when convertin
e030: 67 20 74 68 65 69 72 20 76 61 6c 75 65 73 20 74  g their values t
e040: 6f 20 73 74 72 69 6e 67 73 0d 0a 20 20 20 20 20  o strings..     
e050: 20 2f 2f 2f 20 6f 72 20 66 72 6f 6d 20 73 74 72   /// or from str
e060: 69 6e 67 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ings...      ///
e070: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
e080: 20 20 20 43 6f 6e 76 65 72 74 41 6e 64 42 69 6e     ConvertAndBin
e090: 64 41 6e 64 47 65 74 41 6c 6c 41 73 49 6e 76 61  dAndGetAllAsInva
e0a0: 72 69 61 6e 74 54 65 78 74 20 3d 20 42 69 6e 64  riantText = Bind
e0b0: 41 6e 64 47 65 74 41 6c 6c 41 73 54 65 78 74 20  AndGetAllAsText 
e0c0: 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
e0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0f0: 20 20 43 6f 6e 76 65 72 74 41 6e 64 42 69 6e 64    ConvertAndBind
e100: 49 6e 76 61 72 69 61 6e 74 54 65 78 74 2c 0d 0a  InvariantText,..
e110: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
e120: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
e130: 20 45 6e 61 62 6c 65 73 20 75 73 65 20 6f 66 20   Enables use of 
e140: 61 6c 6c 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69  all per-connecti
e150: 6f 6e 20 76 61 6c 75 65 20 68 61 6e 64 6c 69 6e  on value handlin
e160: 67 20 63 61 6c 6c 62 61 63 6b 73 2e 0d 0a 20 20  g callbacks...  
e170: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e180: 79 3e 0d 0a 20 20 20 20 20 20 55 73 65 43 6f 6e  y>..      UseCon
e190: 6e 65 63 74 69 6f 6e 41 6c 6c 56 61 6c 75 65 43  nectionAllValueC
e1a0: 61 6c 6c 62 61 63 6b 73 20 3d 20 55 73 65 43 6f  allbacks = UseCo
e1b0: 6e 6e 65 63 74 69 6f 6e 42 69 6e 64 56 61 6c 75  nnectionBindValu
e1c0: 65 43 61 6c 6c 62 61 63 6b 73 20 7c 0d 0a 20 20  eCallbacks |..  
e1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1f0: 20 20 20 20 20 55 73 65 43 6f 6e 6e 65 63 74 69       UseConnecti
e200: 6f 6e 52 65 61 64 56 61 6c 75 65 43 61 6c 6c 62  onReadValueCallb
e210: 61 63 6b 73 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  acks,....      /
e220: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
e230: 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c 65 73 20      /// Enables 
e240: 75 73 65 20 6f 66 20 61 6c 6c 20 61 70 70 6c 69  use of all appli
e250: 63 61 62 6c 65 20 3c 73 65 65 20 63 72 65 66 3d  cable <see cref=
e260: 22 53 51 4c 69 74 65 50 61 72 61 6d 65 74 65 72  "SQLiteParameter
e270: 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  " />..      /// 
e280: 70 72 6f 70 65 72 74 69 65 73 20 61 73 20 66 61  properties as fa
e290: 6c 6c 62 61 63 6b 73 20 66 6f 72 20 74 68 65 20  llbacks for the 
e2a0: 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61  database type na
e2b0: 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
e2c0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
e2d0: 20 55 73 65 50 61 72 61 6d 65 74 65 72 41 6e 79   UseParameterAny
e2e0: 74 68 69 6e 67 46 6f 72 54 79 70 65 4e 61 6d 65  thingForTypeName
e2f0: 20 3d 20 55 73 65 50 61 72 61 6d 65 74 65 72 4e   = UseParameterN
e300: 61 6d 65 46 6f 72 54 79 70 65 4e 61 6d 65 20 7c  ameForTypeName |
e310: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e330: 20 20 20 20 20 20 20 20 20 20 55 73 65 50 61 72            UsePar
e340: 61 6d 65 74 65 72 44 62 54 79 70 65 46 6f 72 54  ameterDbTypeForT
e350: 79 70 65 4e 61 6d 65 2c 0d 0a 0d 0a 20 20 20 20  ypeName,....    
e360: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
e370: 0a 20 20 20 20 20 20 2f 2f 2f 20 45 6e 61 62 6c  .      /// Enabl
e380: 65 20 61 6c 6c 20 6c 6f 67 67 69 6e 67 2e 0d 0a  e all logging...
e390: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
e3a0: 61 72 79 3e 0d 0a 23 69 66 20 49 4e 54 45 52 4f  ary>..#if INTERO
e3b0: 50 5f 56 49 52 54 55 41 4c 5f 54 41 42 4c 45 0d  P_VIRTUAL_TABLE.
e3c0: 0a 20 20 20 20 20 20 4c 6f 67 41 6c 6c 20 3d 20  .      LogAll = 
e3d0: 4c 6f 67 50 72 65 70 61 72 65 20 7c 20 4c 6f 67  LogPrepare | Log
e3e0: 50 72 65 42 69 6e 64 20 7c 20 4c 6f 67 42 69 6e  PreBind | LogBin
e3f0: 64 20 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d |..           
e400: 20 20 20 20 4c 6f 67 43 61 6c 6c 62 61 63 6b 45      LogCallbackE
e410: 78 63 65 70 74 69 6f 6e 20 7c 20 4c 6f 67 42 61  xception | LogBa
e420: 63 6b 75 70 20 7c 20 4c 6f 67 4d 6f 64 75 6c 65  ckup | LogModule
e430: 45 72 72 6f 72 20 7c 0d 0a 20 20 20 20 20 20 20  Error |..       
e440: 20 20 20 20 20 20 20 20 4c 6f 67 4d 6f 64 75 6c          LogModul
e450: 65 45 78 63 65 70 74 69 6f 6e 2c 0d 0a 23 65 6c  eException,..#el
e460: 73 65 0d 0a 20 20 20 20 20 20 4c 6f 67 41 6c 6c  se..      LogAll
e470: 20 3d 20 4c 6f 67 50 72 65 70 61 72 65 20 7c 20   = LogPrepare | 
e480: 4c 6f 67 50 72 65 42 69 6e 64 20 7c 20 4c 6f 67  LogPreBind | Log
e490: 42 69 6e 64 20 7c 0d 0a 20 20 20 20 20 20 20 20  Bind |..        
e4a0: 20 20 20 20 20 20 20 4c 6f 67 43 61 6c 6c 62 61         LogCallba
e4b0: 63 6b 45 78 63 65 70 74 69 6f 6e 20 7c 20 4c 6f  ckException | Lo
e4c0: 67 42 61 63 6b 75 70 2c 0d 0a 23 65 6e 64 69 66  gBackup,..#endif
e4d0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
e4e0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
e4f0: 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 6c  // The default l
e500: 6f 67 67 69 6e 67 20 72 65 6c 61 74 65 64 20 66  ogging related f
e510: 6c 61 67 73 20 66 6f 72 20 6e 65 77 20 63 6f 6e  lags for new con
e520: 6e 65 63 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 20  nections...     
e530: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
e540: 0a 23 69 66 20 49 4e 54 45 52 4f 50 5f 56 49 52  .#if INTEROP_VIR
e550: 54 55 41 4c 5f 54 41 42 4c 45 0d 0a 20 20 20 20  TUAL_TABLE..    
e560: 20 20 4c 6f 67 44 65 66 61 75 6c 74 20 3d 20 4c    LogDefault = L
e570: 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65 70 74  ogCallbackExcept
e580: 69 6f 6e 20 7c 20 4c 6f 67 4d 6f 64 75 6c 65 45  ion | LogModuleE
e590: 78 63 65 70 74 69 6f 6e 2c 0d 0a 23 65 6c 73 65  xception,..#else
e5a0: 0d 0a 20 20 20 20 20 20 4c 6f 67 44 65 66 61 75  ..      LogDefau
e5b0: 6c 74 20 3d 20 4c 6f 67 43 61 6c 6c 62 61 63 6b  lt = LogCallback
e5c0: 45 78 63 65 70 74 69 6f 6e 2c 0d 0a 23 65 6e 64  Exception,..#end
e5d0: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  if....      /// 
e5e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
e5f0: 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74   /// The default
e600: 20 65 78 74 72 61 20 66 6c 61 67 73 20 66 6f 72   extra flags for
e610: 20 6e 65 77 20 63 6f 6e 6e 65 63 74 69 6f 6e 73   new connections
e620: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
e630: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44  ummary>..      D
e640: 65 66 61 75 6c 74 20 3d 20 4c 6f 67 44 65 66 61  efault = LogDefa
e650: 75 6c 74 20 7c 20 42 69 6e 64 49 6e 76 61 72 69  ult | BindInvari
e660: 61 6e 74 44 65 63 69 6d 61 6c 20 7c 20 47 65 74  antDecimal | Get
e670: 49 6e 76 61 72 69 61 6e 74 44 65 63 69 6d 61 6c  InvariantDecimal
e680: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
e690: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
e6a0: 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20  /// The default 
e6b0: 65 78 74 72 61 20 66 6c 61 67 73 20 66 6f 72 20  extra flags for 
e6c0: 6e 65 77 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20  new connections 
e6d0: 77 69 74 68 20 61 6c 6c 20 6c 6f 67 67 69 6e 67  with all logging
e6e0: 20 65 6e 61 62 6c 65 64 2e 0d 0a 20 20 20 20 20   enabled...     
e6f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
e700: 0a 20 20 20 20 20 20 44 65 66 61 75 6c 74 41 6e  .      DefaultAn
e710: 64 4c 6f 67 41 6c 6c 20 3d 20 44 65 66 61 75 6c  dLogAll = Defaul
e720: 74 20 7c 20 4c 6f 67 41 6c 6c 0d 0a 20 20 7d 0d  t | LogAll..  }.
e730: 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
e740: 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 73 65 20  y>..  /// These 
e750: 61 72 65 20 74 68 65 20 73 75 70 70 6f 72 74 65  are the supporte
e760: 64 20 73 74 61 74 75 73 20 70 61 72 61 6d 65 74  d status paramet
e770: 65 72 73 20 66 6f 72 20 75 73 65 20 77 69 74 68  ers for use with
e780: 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 2f   the native..  /
e790: 2f 2f 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  // SQLite librar
e7a0: 79 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  y...  /// </summ
e7b0: 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ary>..  internal
e7c0: 20 65 6e 75 6d 20 53 51 4c 69 74 65 53 74 61 74   enum SQLiteStat
e7d0: 75 73 4f 70 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a  usOpsEnum..  {..
e7e0: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
e7f0: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
e800: 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 72 65  his parameter re
e810: 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72  turns the number
e820: 20 6f 66 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65   of lookaside me
e830: 6d 6f 72 79 20 73 6c 6f 74 73 0d 0a 20 20 20 20  mory slots..    
e840: 20 20 2f 2f 2f 20 63 75 72 72 65 6e 74 6c 79 20    /// currently 
e850: 63 68 65 63 6b 65 64 20 6f 75 74 2e 0d 0a 20 20  checked out...  
e860: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e870: 79 3e 0d 0a 20 20 20 20 20 20 53 51 4c 49 54 45  y>..      SQLITE
e880: 5f 44 42 53 54 41 54 55 53 5f 4c 4f 4f 4b 41 53  _DBSTATUS_LOOKAS
e890: 49 44 45 5f 55 53 45 44 20 3d 20 30 2c 0d 0a 0d  IDE_USED = 0,...
e8a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
e8b0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
e8c0: 54 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 72  This parameter r
e8d0: 65 74 75 72 6e 73 20 74 68 65 20 61 70 70 72 6f  eturns the appro
e8e0: 78 69 6d 61 74 65 20 6e 75 6d 62 65 72 20 6f 66  ximate number of
e8f0: 20 62 79 74 65 73 20 6f 66 0d 0a 20 20 20 20 20   bytes of..     
e900: 20 2f 2f 2f 20 68 65 61 70 20 6d 65 6d 6f 72 79   /// heap memory
e910: 20 75 73 65 64 20 62 79 20 61 6c 6c 20 70 61 67   used by all pag
e920: 65 72 20 63 61 63 68 65 73 20 61 73 73 6f 63 69  er caches associ
e930: 61 74 65 64 20 77 69 74 68 20 74 68 65 0d 0a 20  ated with the.. 
e940: 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73       /// databas
e950: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 54 68  e connection. Th
e960: 65 20 68 69 67 68 77 61 74 65 72 20 6d 61 72 6b  e highwater mark
e970: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
e980: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 49  ..      /// SQLI
e990: 54 45 5f 44 42 53 54 41 54 55 53 5f 43 41 43 48  TE_DBSTATUS_CACH
e9a0: 45 5f 55 53 45 44 20 69 73 20 61 6c 77 61 79 73  E_USED is always
e9b0: 20 30 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c   0...      /// <
e9c0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
e9d0: 20 53 51 4c 49 54 45 5f 44 42 53 54 41 54 55 53   SQLITE_DBSTATUS
e9e0: 5f 43 41 43 48 45 5f 55 53 45 44 20 3d 20 31 2c  _CACHE_USED = 1,
e9f0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
ea00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
ea10: 2f 2f 20 54 68 69 73 20 70 61 72 61 6d 65 74 65  // This paramete
ea20: 72 20 72 65 74 75 72 6e 73 20 74 68 65 20 61 70  r returns the ap
ea30: 70 72 6f 78 69 6d 61 74 65 20 6e 75 6d 62 65 72  proximate number
ea40: 20 6f 66 20 62 79 74 65 73 20 6f 66 0d 0a 20 20   of bytes of..  
ea50: 20 20 20 20 2f 2f 2f 20 68 65 61 70 20 6d 65 6d      /// heap mem
ea60: 6f 72 79 20 75 73 65 64 20 74 6f 20 73 74 6f 72  ory used to stor
ea70: 65 20 74 68 65 20 73 63 68 65 6d 61 20 66 6f 72  e the schema for
ea80: 20 61 6c 6c 20 64 61 74 61 62 61 73 65 73 0d 0a   all databases..
ea90: 20 20 20 20 20 20 2f 2f 2f 20 61 73 73 6f 63 69        /// associ
eaa0: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 63 6f  ated with the co
eab0: 6e 6e 65 63 74 69 6f 6e 20 2d 20 6d 61 69 6e 2c  nnection - main,
eac0: 20 74 65 6d 70 2c 20 61 6e 64 20 61 6e 79 20 41   temp, and any A
ead0: 54 54 41 43 48 2d 65 64 0d 0a 20 20 20 20 20 20  TTACH-ed..      
eae0: 2f 2f 2f 20 64 61 74 61 62 61 73 65 73 2e 20 54  /// databases. T
eaf0: 68 65 20 66 75 6c 6c 20 61 6d 6f 75 6e 74 20 6f  he full amount o
eb00: 66 20 6d 65 6d 6f 72 79 20 75 73 65 64 20 62 79  f memory used by
eb10: 20 74 68 65 20 73 63 68 65 6d 61 73 20 69 73 0d   the schemas is.
eb20: 0a 20 20 20 20 20 20 2f 2f 2f 20 72 65 70 6f 72  .      /// repor
eb30: 74 65 64 2c 20 65 76 65 6e 20 69 66 20 74 68 65  ted, even if the
eb40: 20 73 63 68 65 6d 61 20 6d 65 6d 6f 72 79 20 69   schema memory i
eb50: 73 20 73 68 61 72 65 64 20 77 69 74 68 20 6f 74  s shared with ot
eb60: 68 65 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64  her..      /// d
eb70: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
eb80: 6f 6e 73 20 64 75 65 20 74 6f 20 73 68 61 72 65  ons due to share
eb90: 64 20 63 61 63 68 65 20 6d 6f 64 65 20 62 65 69  d cache mode bei
eba0: 6e 67 20 65 6e 61 62 6c 65 64 2e 0d 0a 20 20 20  ng enabled...   
ebb0: 20 20 20 2f 2f 2f 20 54 68 65 20 68 69 67 68 77     /// The highw
ebc0: 61 74 65 72 20 6d 61 72 6b 20 61 73 73 6f 63 69  ater mark associ
ebd0: 61 74 65 64 20 77 69 74 68 20 53 51 4c 49 54 45  ated with SQLITE
ebe0: 5f 44 42 53 54 41 54 55 53 5f 53 43 48 45 4d 41  _DBSTATUS_SCHEMA
ebf0: 5f 55 53 45 44 0d 0a 20 20 20 20 20 20 2f 2f 2f  _USED..      ///
ec00: 20 69 73 20 61 6c 77 61 79 73 20 30 2e 0d 0a 20   is always 0... 
ec10: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
ec20: 72 79 3e 0d 0a 20 20 20 20 20 20 53 51 4c 49 54  ry>..      SQLIT
ec30: 45 5f 44 42 53 54 41 54 55 53 5f 53 43 48 45 4d  E_DBSTATUS_SCHEM
ec40: 41 5f 55 53 45 44 20 3d 20 32 2c 0d 0a 0d 0a 20  A_USED = 2,.... 
ec50: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
ec60: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
ec70: 69 73 20 70 61 72 61 6d 65 74 65 72 20 72 65 74  is parameter ret
ec80: 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20  urns the number 
ec90: 6d 61 6c 6c 6f 63 20 61 74 74 65 6d 70 74 73 20  malloc attempts 
eca0: 74 68 61 74 20 6d 69 67 68 74 0a 20 20 20 20 20  that might.     
ecb0: 20 2f 2f 2f 20 68 61 76 65 20 62 65 65 6e 20 73   /// have been s
ecc0: 61 74 69 73 66 69 65 64 20 75 73 69 6e 67 20 6c  atisfied using l
ecd0: 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20  ookaside memory 
ece0: 62 75 74 20 66 61 69 6c 65 64 20 64 75 65 20 74  but failed due t
ecf0: 6f 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c 20  o.      /// all 
ed00: 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79  lookaside memory
ed10: 20 61 6c 72 65 61 64 79 20 62 65 69 6e 67 20 69   already being i
ed20: 6e 20 75 73 65 2e 20 4f 6e 6c 79 20 74 68 65 20  n use. Only the 
ed30: 68 69 67 68 2d 77 61 74 65 72 0d 0a 20 20 20 20  high-water..    
ed40: 20 20 2f 2f 2f 20 76 61 6c 75 65 20 69 73 20 6d    /// value is m
ed50: 65 61 6e 69 6e 67 66 75 6c 3b 20 74 68 65 20 63  eaningful; the c
ed60: 75 72 72 65 6e 74 20 76 61 6c 75 65 20 69 73 20  urrent value is 
ed70: 61 6c 77 61 79 73 20 7a 65 72 6f 2e 0d 0a 20 20  always zero...  
ed80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
ed90: 79 3e 0d 0a 20 20 20 20 20 20 53 51 4c 49 54 45  y>..      SQLITE
eda0: 5f 44 42 53 54 41 54 55 53 5f 53 54 4d 54 5f 55  _DBSTATUS_STMT_U
edb0: 53 45 44 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20  SED = 3,....    
edc0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
edd0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  .      /// This 
ede0: 70 61 72 61 6d 65 74 65 72 20 72 65 74 75 72 6e  parameter return
edf0: 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6d 61 6c  s the number mal
ee00: 6c 6f 63 20 61 74 74 65 6d 70 74 73 20 74 68 61  loc attempts tha
ee10: 74 20 77 65 72 65 0d 0a 20 20 20 20 20 20 2f 2f  t were..      //
ee20: 2f 20 73 61 74 69 73 66 69 65 64 20 75 73 69 6e  / satisfied usin
ee30: 67 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f  g lookaside memo
ee40: 72 79 2e 20 4f 6e 6c 79 20 74 68 65 20 68 69 67  ry. Only the hig
ee50: 68 2d 77 61 74 65 72 20 76 61 6c 75 65 0d 0a 20  h-water value.. 
ee60: 20 20 20 20 20 2f 2f 2f 20 69 73 20 6d 65 61 6e       /// is mean
ee70: 69 6e 67 66 75 6c 3b 20 74 68 65 20 63 75 72 72  ingful; the curr
ee80: 65 6e 74 20 76 61 6c 75 65 20 69 73 20 61 6c 77  ent value is alw
ee90: 61 79 73 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  ays zero...     
eea0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
eeb0: 0a 20 20 20 20 20 20 53 51 4c 49 54 45 5f 44 42  .      SQLITE_DB
eec0: 53 54 41 54 55 53 5f 4c 4f 4f 4b 41 53 49 44 45  STATUS_LOOKASIDE
eed0: 5f 48 49 54 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20  _HIT = 4,....   
eee0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
eef0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
ef00: 20 70 61 72 61 6d 65 74 65 72 20 72 65 74 75 72   parameter retur
ef10: 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6d 61  ns the number ma
ef20: 6c 6c 6f 63 20 61 74 74 65 6d 70 74 73 20 74 68  lloc attempts th
ef30: 61 74 20 6d 69 67 68 74 0a 20 20 20 20 20 20 2f  at might.      /
ef40: 2f 2f 20 68 61 76 65 20 62 65 65 6e 20 73 61 74  // have been sat
ef50: 69 73 66 69 65 64 20 75 73 69 6e 67 20 6c 6f 6f  isfied using loo
ef60: 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20 62 75  kaside memory bu
ef70: 74 20 66 61 69 6c 65 64 20 64 75 65 20 74 6f 0a  t failed due to.
ef80: 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 61 6d        /// the am
ef90: 6f 75 6e 74 20 6f 66 20 6d 65 6d 6f 72 79 20 72  ount of memory r
efa0: 65 71 75 65 73 74 65 64 20 62 65 69 6e 67 20 6c  equested being l
efb0: 61 72 67 65 72 20 74 68 61 6e 20 74 68 65 20 6c  arger than the l
efc0: 6f 6f 6b 61 73 69 64 65 0a 20 20 20 20 20 20 2f  ookaside.      /
efd0: 2f 2f 20 73 6c 6f 74 20 73 69 7a 65 2e 20 4f 6e  // slot size. On
efe0: 6c 79 20 74 68 65 20 68 69 67 68 2d 77 61 74 65  ly the high-wate
eff0: 72 20 76 61 6c 75 65 20 69 73 20 6d 65 61 6e 69  r value is meani
f000: 6e 67 66 75 6c 3b 20 74 68 65 20 63 75 72 72 65  ngful; the curre
f010: 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 76 61  nt..      /// va
f020: 6c 75 65 20 69 73 20 61 6c 77 61 79 73 20 7a 65  lue is always ze
f030: 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ro...      /// <
f040: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
f050: 20 53 51 4c 49 54 45 5f 44 42 53 54 41 54 55 53   SQLITE_DBSTATUS
f060: 5f 4c 4f 4f 4b 41 53 49 44 45 5f 4d 49 53 53 5f  _LOOKASIDE_MISS_
f070: 53 49 5a 45 20 3d 20 35 2c 0d 0a 0d 0a 20 20 20  SIZE = 5,....   
f080: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
f090: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
f0a0: 20 70 61 72 61 6d 65 74 65 72 20 72 65 74 75 72   parameter retur
f0b0: 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6d 61  ns the number ma
f0c0: 6c 6c 6f 63 20 61 74 74 65 6d 70 74 73 20 74 68  lloc attempts th
f0d0: 61 74 20 6d 69 67 68 74 0d 0a 20 20 20 20 20 20  at might..      
f0e0: 2f 2f 2f 20 68 61 76 65 20 62 65 65 6e 20 73 61  /// have been sa
f0f0: 74 69 73 66 69 65 64 20 75 73 69 6e 67 20 6c 6f  tisfied using lo
f100: 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20 62  okaside memory b
f110: 75 74 20 66 61 69 6c 65 64 20 64 75 65 20 74 6f  ut failed due to
f120: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
f130: 61 6d 6f 75 6e 74 20 6f 66 20 6d 65 6d 6f 72 79  amount of memory
f140: 20 72 65 71 75 65 73 74 65 64 20 62 65 69 6e 67   requested being
f150: 20 6c 61 72 67 65 72 20 74 68 61 6e 20 74 68 65   larger than the
f160: 20 6c 6f 6f 6b 61 73 69 64 65 0d 0a 20 20 20 20   lookaside..    
f170: 20 20 2f 2f 2f 20 73 6c 6f 74 20 73 69 7a 65 2e    /// slot size.
f180: 20 4f 6e 6c 79 20 74 68 65 20 68 69 67 68 2d 77   Only the high-w
f190: 61 74 65 72 20 76 61 6c 75 65 20 69 73 20 6d 65  ater value is me
f1a0: 61 6e 69 6e 67 66 75 6c 3b 20 74 68 65 20 63 75  aningful; the cu
f1b0: 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  rrent..      ///
f1c0: 20 76 61 6c 75 65 20 69 73 20 61 6c 77 61 79 73   value is always
f1d0: 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 2f 2f   zero...      //
f1e0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
f1f0: 20 20 20 20 53 51 4c 49 54 45 5f 44 42 53 54 41      SQLITE_DBSTA
f200: 54 55 53 5f 4c 4f 4f 4b 41 53 49 44 45 5f 4d 49  TUS_LOOKASIDE_MI
f210: 53 53 5f 46 55 4c 4c 20 3d 20 36 2c 0d 0a 0d 0a  SS_FULL = 6,....
f220: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
f230: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
f240: 68 69 73 20 70 61 72 61 6d 65 74 65 72 20 72 65  his parameter re
f250: 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72  turns the number
f260: 20 6f 66 20 70 61 67 65 72 20 63 61 63 68 65 20   of pager cache 
f270: 68 69 74 73 20 74 68 61 74 0a 20 20 20 20 20 20  hits that.      
f280: 2f 2f 2f 20 68 61 76 65 20 6f 63 63 75 72 72 65  /// have occurre
f290: 64 2e 20 54 68 65 20 68 69 67 68 77 61 74 65 72  d. The highwater
f2a0: 20 6d 61 72 6b 20 61 73 73 6f 63 69 61 74 65 64   mark associated
f2b0: 20 77 69 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f   with..      ///
f2c0: 20 53 51 4c 49 54 45 5f 44 42 53 54 41 54 55 53   SQLITE_DBSTATUS
f2d0: 5f 43 41 43 48 45 5f 48 49 54 20 69 73 20 61 6c  _CACHE_HIT is al
f2e0: 77 61 79 73 20 30 2e 0d 0a 20 20 20 20 20 20 2f  ways 0...      /
f2f0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
f300: 20 20 20 20 20 53 51 4c 49 54 45 5f 44 42 53 54       SQLITE_DBST
f310: 41 54 55 53 5f 43 41 43 48 45 5f 48 49 54 20 3d  ATUS_CACHE_HIT =
f320: 20 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   7,....      ///
f330: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
f340: 20 20 2f 2f 2f 20 54 68 69 73 20 70 61 72 61 6d    /// This param
f350: 65 74 65 72 20 72 65 74 75 72 6e 73 20 74 68 65  eter returns the
f360: 20 6e 75 6d 62 65 72 20 6f 66 20 70 61 67 65 72   number of pager
f370: 20 63 61 63 68 65 20 6d 69 73 73 65 73 20 74 68   cache misses th
f380: 61 74 0a 20 20 20 20 20 20 2f 2f 2f 20 68 61 76  at.      /// hav
f390: 65 20 6f 63 63 75 72 72 65 64 2e 20 54 68 65 20  e occurred. The 
f3a0: 68 69 67 68 77 61 74 65 72 20 6d 61 72 6b 20 61  highwater mark a
f3b0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0d 0a  ssociated with..
f3c0: 20 20 20 20 20 20 2f 2f 2f 20 53 51 4c 49 54 45        /// SQLITE
f3d0: 5f 44 42 53 54 41 54 55 53 5f 43 41 43 48 45 5f  _DBSTATUS_CACHE_
f3e0: 4d 49 53 53 20 69 73 20 61 6c 77 61 79 73 20 30  MISS is always 0
f3f0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
f400: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53  ummary>..      S
f410: 51 4c 49 54 45 5f 44 42 53 54 41 54 55 53 5f 43  QLITE_DBSTATUS_C
f420: 41 43 48 45 5f 4d 49 53 53 20 3d 20 38 2c 0d 0a  ACHE_MISS = 8,..
f430: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
f440: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
f450: 20 54 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   This parameter 
f460: 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62  returns the numb
f470: 65 72 20 6f 66 20 64 69 72 74 79 20 63 61 63 68  er of dirty cach
f480: 65 20 65 6e 74 72 69 65 73 20 74 68 61 74 0d 0a  e entries that..
f490: 20 20 20 20 20 20 2f 2f 2f 20 68 61 76 65 20 62        /// have b
f4a0: 65 65 6e 20 77 72 69 74 74 65 6e 20 74 6f 20 64  een written to d
f4b0: 69 73 6b 2e 20 53 70 65 63 69 66 69 63 61 6c 6c  isk. Specificall
f4c0: 79 2c 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  y, the number of
f4d0: 20 70 61 67 65 73 0d 0a 20 20 20 20 20 20 2f 2f   pages..      //
f4e0: 2f 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65  / written to the
f4f0: 20 77 61 6c 20 66 69 6c 65 20 69 6e 20 77 61 6c   wal file in wal
f500: 20 6d 6f 64 65 20 64 61 74 61 62 61 73 65 73 2c   mode databases,
f510: 20 6f 72 20 74 68 65 20 6e 75 6d 62 65 72 0d 0a   or the number..
f520: 20 20 20 20 20 20 2f 2f 2f 20 6f 66 20 70 61 67        /// of pag
f530: 65 73 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68  es written to th
f540: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
f550: 69 6e 20 72 6f 6c 6c 62 61 63 6b 20 6d 6f 64 65  in rollback mode
f560: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 74 61  ..      /// data
f570: 62 61 73 65 73 2e 20 41 6e 79 20 70 61 67 65 73  bases. Any pages
f580: 20 77 72 69 74 74 65 6e 20 61 73 20 70 61 72 74   written as part
f590: 20 6f 66 20 74 72 61 6e 73 61 63 74 69 6f 6e 20   of transaction 
f5a0: 72 6f 6c 6c 62 61 63 6b 0d 0a 20 20 20 20 20 20  rollback..      
f5b0: 2f 2f 2f 20 6f 72 20 64 61 74 61 62 61 73 65 20  /// or database 
f5c0: 72 65 63 6f 76 65 72 79 20 6f 70 65 72 61 74 69  recovery operati
f5d0: 6f 6e 73 20 61 72 65 20 6e 6f 74 20 69 6e 63 6c  ons are not incl
f5e0: 75 64 65 64 2e 20 49 66 20 61 6e 20 49 4f 20 6f  uded. If an IO o
f5f0: 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 74 68  r..      /// oth
f600: 65 72 20 65 72 72 6f 72 20 6f 63 63 75 72 73 20  er error occurs 
f610: 77 68 69 6c 65 20 77 72 69 74 69 6e 67 20 61 20  while writing a 
f620: 70 61 67 65 20 74 6f 20 64 69 73 6b 2c 20 74 68  page to disk, th
f630: 65 20 65 66 66 65 63 74 0d 0a 20 20 20 20 20 20  e effect..      
f640: 2f 2f 2f 20 6f 6e 20 73 75 62 73 65 71 75 65 6e  /// on subsequen
f650: 74 20 53 51 4c 49 54 45 5f 44 42 53 54 41 54 55  t SQLITE_DBSTATU
f660: 53 5f 43 41 43 48 45 5f 57 52 49 54 45 20 72 65  S_CACHE_WRITE re
f670: 71 75 65 73 74 73 20 69 73 0d 0a 20 20 20 20 20  quests is..     
f680: 20 2f 2f 2f 20 75 6e 64 65 66 69 6e 65 64 2e 20   /// undefined. 
f690: 54 68 65 20 68 69 67 68 77 61 74 65 72 20 6d 61  The highwater ma
f6a0: 72 6b 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  rk associated wi
f6b0: 74 68 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 51  th..      /// SQ
f6c0: 4c 49 54 45 5f 44 42 53 54 41 54 55 53 5f 43 41  LITE_DBSTATUS_CA
f6d0: 43 48 45 5f 57 52 49 54 45 20 69 73 20 61 6c 77  CHE_WRITE is alw
f6e0: 61 79 73 20 30 2e 0d 0a 20 20 20 20 20 20 2f 2f  ays 0...      //
f6f0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
f700: 20 20 20 20 53 51 4c 49 54 45 5f 44 42 53 54 41      SQLITE_DBSTA
f710: 54 55 53 5f 43 41 43 48 45 5f 57 52 49 54 45 20  TUS_CACHE_WRITE 
f720: 3d 20 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 9,....      //
f730: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
f740: 20 20 20 2f 2f 2f 20 54 68 69 73 20 70 61 72 61     /// This para
f750: 6d 65 74 65 72 20 72 65 74 75 72 6e 73 20 7a 65  meter returns ze
f760: 72 6f 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  ro for the curre
f770: 6e 74 20 76 61 6c 75 65 20 69 66 20 61 6e 64 20  nt value if and 
f780: 6f 6e 6c 79 0a 20 20 20 20 20 20 2f 2f 2f 20 69  only.      /// i
f790: 66 20 61 6c 6c 20 66 6f 72 65 69 67 6e 20 6b 65  f all foreign ke
f7a0: 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 28 64  y constraints (d
f7b0: 65 66 65 72 72 65 64 20 6f 72 20 69 6d 6d 65 64  eferred or immed
f7c0: 69 61 74 65 29 20 68 61 76 65 0d 0a 20 20 20 20  iate) have..    
f7d0: 20 20 2f 2f 2f 20 62 65 65 6e 20 72 65 73 6f 6c    /// been resol
f7e0: 76 65 64 2e 20 54 68 65 20 68 69 67 68 77 61 74  ved. The highwat
f7f0: 65 72 20 6d 61 72 6b 20 69 73 20 61 6c 77 61 79  er mark is alway
f800: 73 20 30 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  s 0...      /// 
f810: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
f820: 20 20 53 51 4c 49 54 45 5f 44 42 53 54 41 54 55    SQLITE_DBSTATU
f830: 53 5f 44 45 46 45 52 52 45 44 5f 46 4b 53 20 3d  S_DEFERRED_FKS =
f840: 20 31 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   10,....      //
f850: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
f860: 20 20 20 2f 2f 2f 20 54 68 69 73 20 70 61 72 61     /// This para
f870: 6d 65 74 65 72 20 69 73 20 73 69 6d 69 6c 61 72  meter is similar
f880: 20 74 6f 20 44 42 53 54 41 54 55 53 5f 43 41 43   to DBSTATUS_CAC
f890: 48 45 5f 55 53 45 44 2c 20 65 78 63 65 70 74 20  HE_USED, except 
f8a0: 74 68 61 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  that..      /// 
f8b0: 69 66 20 61 20 70 61 67 65 72 20 63 61 63 68 65  if a pager cache
f8c0: 20 69 73 20 73 68 61 72 65 64 20 62 65 74 77 65   is shared betwe
f8d0: 65 6e 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20 63  en two or more c
f8e0: 6f 6e 6e 65 63 74 69 6f 6e 73 20 74 68 65 0d 0a  onnections the..
f8f0: 20 20 20 20 20 20 2f 2f 2f 20 62 79 74 65 73 20        /// bytes 
f900: 6f 66 20 68 65 61 70 20 6d 65 6d 6f 72 79 20 75  of heap memory u
f910: 73 65 64 20 62 79 20 74 68 61 74 20 70 61 67 65  sed by that page
f920: 72 20 63 61 63 68 65 20 69 73 20 64 69 76 69 64  r cache is divid
f930: 65 64 20 65 76 65 6e 6c 79 0d 0a 20 20 20 20 20  ed evenly..     
f940: 20 2f 2f 2f 20 62 65 74 77 65 65 6e 20 74 68 65   /// between the
f950: 20 61 74 74 61 63 68 65 64 20 63 6f 6e 6e 65 63   attached connec
f960: 74 69 6f 6e 73 2e 20 49 6e 20 6f 74 68 65 72 20  tions. In other 
f970: 77 6f 72 64 73 2c 20 69 66 20 6e 6f 6e 65 20 6f  words, if none o
f980: 66 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  f..      /// the
f990: 20 70 61 67 65 72 20 63 61 63 68 65 73 20 61 73   pager caches as
f9a0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
f9b0: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
f9c0: 63 74 69 6f 6e 20 61 72 65 0d 0a 20 20 20 20 20  ction are..     
f9d0: 20 2f 2f 2f 20 73 68 61 72 65 64 2c 20 74 68 69   /// shared, thi
f9e0: 73 20 72 65 71 75 65 73 74 20 72 65 74 75 72 6e  s request return
f9f0: 73 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65  s the same value
fa00: 20 61 73 20 44 42 53 54 41 54 55 53 5f 43 41 43   as DBSTATUS_CAC
fa10: 48 45 5f 55 53 45 44 2e 0d 0a 20 20 20 20 20 20  HE_USED...      
fa20: 2f 2f 2f 20 4f 72 2c 20 69 66 20 6f 6e 65 20 6f  /// Or, if one o
fa30: 72 20 6d 6f 72 65 20 6f 72 20 74 68 65 20 70 61  r more or the pa
fa40: 67 65 72 20 63 61 63 68 65 73 20 61 72 65 20 73  ger caches are s
fa50: 68 61 72 65 64 2c 20 74 68 65 20 76 61 6c 75 65  hared, the value
fa60: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75  ..      /// retu
fa70: 72 6e 65 64 20 62 79 20 74 68 69 73 20 63 61 6c  rned by this cal
fa80: 6c 20 77 69 6c 6c 20 62 65 20 73 6d 61 6c 6c 65  l will be smalle
fa90: 72 20 74 68 61 6e 20 74 68 61 74 20 72 65 74 75  r than that retu
faa0: 72 6e 65 64 20 62 79 0d 0a 20 20 20 20 20 20 2f  rned by..      /
fab0: 2f 2f 20 44 42 53 54 41 54 55 53 5f 43 41 43 48  // DBSTATUS_CACH
fac0: 45 5f 55 53 45 44 2e 20 54 68 65 20 68 69 67 68  E_USED. The high
fad0: 77 61 74 65 72 20 6d 61 72 6b 20 61 73 73 6f 63  water mark assoc
fae0: 69 61 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20  iated with..    
faf0: 20 20 2f 2f 2f 20 53 51 4c 49 54 45 5f 44 42 53    /// SQLITE_DBS
fb00: 54 41 54 55 53 5f 43 41 43 48 45 5f 55 53 45 44  TATUS_CACHE_USED
fb10: 5f 53 48 41 52 45 44 20 69 73 20 61 6c 77 61 79  _SHARED is alway
fb20: 73 20 30 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  s 0...      /// 
fb30: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
fb40: 20 20 53 51 4c 49 54 45 5f 44 42 53 54 41 54 55    SQLITE_DBSTATU
fb50: 53 5f 43 41 43 48 45 5f 55 53 45 44 5f 53 48 41  S_CACHE_USED_SHA
fb60: 52 45 44 20 3d 20 31 31 0d 0a 20 20 7d 0d 0a 0d  RED = 11..  }...
fb70: 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
fb80: 0d 0a 20 20 2f 2f 2f 20 54 68 65 73 65 20 61 72  ..  /// These ar
fb90: 65 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 20  e the supported 
fba0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 76 65  configuration ve
fbb0: 72 62 73 20 66 6f 72 20 75 73 65 20 77 69 74 68  rbs for use with
fbc0: 20 74 68 65 20 6e 61 74 69 76 65 0d 0a 20 20 2f   the native..  /
fbd0: 2f 2f 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  // SQLite librar
fbe0: 79 2e 20 20 54 68 65 79 20 61 72 65 20 75 73 65  y.  They are use
fbf0: 64 20 77 69 74 68 20 74 68 65 0d 0a 20 20 2f 2f  d with the..  //
fc00: 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  / <see cref="SQL
fc10: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 53 65  iteConnection.Se
fc20: 74 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 4f 70  tConfigurationOp
fc30: 74 69 6f 6e 22 20 2f 3e 20 6d 65 74 68 6f 64 2e  tion" /> method.
fc40: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
fc50: 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75  y>..  public enu
fc60: 6d 20 53 51 4c 69 74 65 43 6f 6e 66 69 67 44 62  m SQLiteConfigDb
fc70: 4f 70 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20  OpsEnum..  {..  
fc80: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
fc90: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
fca0: 73 20 76 61 6c 75 65 20 72 65 70 72 65 73 65 6e  s value represen
fcb0: 74 73 20 61 6e 20 75 6e 6b 6e 6f 77 6e 20 28 6f  ts an unknown (o
fcc0: 72 20 69 6e 76 61 6c 69 64 29 20 6f 70 74 69 6f  r invalid) optio
fcd0: 6e 2c 20 64 6f 20 6e 6f 74 20 75 73 65 20 69 74  n, do not use it
fce0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
fcf0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53  ummary>..      S
fd00: 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4e  QLITE_DBCONFIG_N
fd10: 4f 4e 45 20 3d 20 30 2c 20 2f 2f 20 6e 69 6c 0d  ONE = 0, // nil.
fd20: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
fd30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
fd40: 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  / This option is
fd50: 20 75 73 65 64 20 74 6f 20 63 68 61 6e 67 65 20   used to change 
fd60: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
fd70: 22 6d 61 69 6e 22 20 64 61 74 61 62 61 73 65 0d  "main" database.
fd80: 0a 20 20 20 20 20 20 2f 2f 2f 20 73 63 68 65 6d  .      /// schem
fd90: 61 2e 20 20 54 68 65 20 73 6f 6c 65 20 61 72 67  a.  The sole arg
fda0: 75 6d 65 6e 74 20 69 73 20 61 20 70 6f 69 6e 74  ument is a point
fdb0: 65 72 20 74 6f 20 61 20 63 6f 6e 73 74 61 6e 74  er to a constant
fdc0: 20 55 54 46 38 20 73 74 72 69 6e 67 0d 0a 20 20   UTF8 string..  
fdd0: 20 20 20 20 2f 2f 2f 20 77 68 69 63 68 20 77 69      /// which wi
fde0: 6c 6c 20 62 65 63 6f 6d 65 20 74 68 65 20 6e 65  ll become the ne
fdf0: 77 20 73 63 68 65 6d 61 20 6e 61 6d 65 20 69 6e  w schema name in
fe00: 20 70 6c 61 63 65 20 6f 66 20 22 6d 61 69 6e 22   place of "main"
fe10: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
fe20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53  ummary>..      S
fe30: 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4d  QLITE_DBCONFIG_M
fe40: 41 49 4e 44 42 4e 41 4d 45 20 3d 20 31 30 30 30  AINDBNAME = 1000
fe50: 2c 20 2f 2f 20 63 68 61 72 2a 0d 0a 0d 0a 20 20  , // char*....  
fe60: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
fe70: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69  >..      /// Thi
fe80: 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
fe90: 20 74 6f 20 63 6f 6e 66 69 67 75 72 65 20 74 68   to configure th
fea0: 65 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f  e lookaside memo
feb0: 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 0d 0a 20  ry allocator... 
fec0: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c       /// The val
fed0: 75 65 20 6d 75 73 74 20 62 65 20 61 6e 20 61 72  ue must be an ar
fee0: 72 61 79 20 77 69 74 68 20 74 68 72 65 65 20 65  ray with three e
fef0: 6c 65 6d 65 6e 74 73 2e 20 20 54 68 65 20 73 65  lements.  The se
ff00: 63 6f 6e 64 20 65 6c 65 6d 65 6e 74 0d 0a 20 20  cond element..  
ff10: 20 20 20 20 2f 2f 2f 20 6d 75 73 74 20 62 65 20      /// must be 
ff20: 61 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e  an <see cref="In
ff30: 74 33 32 22 20 2f 3e 20 63 6f 6e 74 61 69 6e 69  t32" /> containi
ff40: 6e 67 20 74 68 65 20 73 69 7a 65 20 6f 66 20 65  ng the size of e
ff50: 61 63 68 20 62 75 66 66 65 72 0d 0a 20 20 20 20  ach buffer..    
ff60: 20 20 2f 2f 2f 20 73 6c 6f 74 2e 20 20 54 68 65    /// slot.  The
ff70: 20 74 68 69 72 64 20 65 6c 65 6d 65 6e 74 20 6d   third element m
ff80: 75 73 74 20 62 65 20 61 6e 20 3c 73 65 65 20 63  ust be an <see c
ff90: 72 65 66 3d 22 49 6e 74 33 32 22 20 2f 3e 20 63  ref="Int32" /> c
ffa0: 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20 20 20  ontaining..     
ffb0: 20 2f 2f 2f 20 74 68 65 20 6e 75 6d 62 65 72 20   /// the number 
ffc0: 6f 66 20 73 6c 6f 74 73 2e 20 20 54 68 65 20 66  of slots.  The f
ffd0: 69 72 73 74 20 65 6c 65 6d 65 6e 74 20 6d 75 73  irst element mus
ffe0: 74 20 62 65 20 61 6e 20 3c 73 65 65 20 63 72 65  t be an <see cre
fff0: 66 3d 22 49 6e 74 50 74 72 22 20 2f 3e 0d 0a 20  f="IntPtr" />.. 
10000 20 20 20 20 20 2f 2f 2f 20 74 68 61 74 20 70 6f       /// that po
10010 69 6e 74 73 20 74 6f 20 61 20 6e 61 74 69 76 65  ints to a native
10020 20 6d 65 6d 6f 72 79 20 62 75 66 66 65 72 20 6f   memory buffer o
10030 66 20 62 79 74 65 73 20 65 71 75 61 6c 20 74 6f  f bytes equal to
10040 20 6f 72 20 67 72 65 61 74 65 72 0d 0a 20 20 20   or greater..   
10050 20 20 20 2f 2f 2f 20 74 68 61 6e 20 74 68 65 20     /// than the 
10060 70 72 6f 64 75 63 74 20 6f 66 20 74 68 65 20 73  product of the s
10070 65 63 6f 6e 64 20 61 6e 64 20 74 68 69 72 64 20  econd and third 
10080 65 6c 65 6d 65 6e 74 20 76 61 6c 75 65 73 2e 0d  element values..
10090 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
100a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53 51 4c  mary>..      SQL
100b0 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f  ITE_DBCONFIG_LOO
100c0 4b 41 53 49 44 45 20 3d 20 31 30 30 31 2c 20 2f  KASIDE = 1001, /
100d0 2f 20 76 6f 69 64 2a 20 69 6e 74 20 69 6e 74 0d  / void* int int.
100e0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
100f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
10100 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  / This option is
10110 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20   used to enable 
10120 6f 72 20 64 69 73 61 62 6c 65 20 74 68 65 20 65  or disable the e
10130 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 0d 0a 20  nforcement of.. 
10140 20 20 20 20 20 2f 2f 2f 20 66 6f 72 65 69 67 6e       /// foreign
10150 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73   key constraints
10160 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
10170 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53  ummary>..      S
10180 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45  QLITE_DBCONFIG_E
10190 4e 41 42 4c 45 5f 46 4b 45 59 20 3d 20 31 30 30  NABLE_FKEY = 100
101a0 32 2c 20 2f 2f 20 69 6e 74 20 69 6e 74 2a 0d 0a  2, // int int*..
101b0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
101c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
101d0 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
101e0 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f  used to enable o
101f0 72 20 64 69 73 61 62 6c 65 20 74 72 69 67 67 65  r disable trigge
10200 72 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  rs...      /// <
10210 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
10220 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47   SQLITE_DBCONFIG
10230 5f 45 4e 41 42 4c 45 5f 54 52 49 47 47 45 52 20  _ENABLE_TRIGGER 
10240 3d 20 31 30 30 33 2c 20 2f 2f 20 69 6e 74 20 69  = 1003, // int i
10250 6e 74 2a 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  nt*....      ///
10260 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
10270 20 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f    /// This optio
10280 6e 20 69 73 20 75 73 65 64 20 74 6f 20 65 6e 61  n is used to ena
10290 62 6c 65 20 6f 72 20 64 69 73 61 62 6c 65 20 74  ble or disable t
102a0 68 65 20 74 77 6f 2d 61 72 67 75 6d 65 6e 74 20  he two-argument 
102b0 76 65 72 73 69 6f 6e 0d 0a 20 20 20 20 20 20 2f  version..      /
102c0 2f 2f 20 6f 66 20 74 68 65 20 66 74 73 33 5f 74  // of the fts3_t
102d0 6f 6b 65 6e 69 7a 65 72 28 29 20 66 75 6e 63 74  okenizer() funct
102e0 69 6f 6e 20 77 68 69 63 68 20 69 73 20 70 61 72  ion which is par
102f0 74 20 6f 66 20 74 68 65 20 46 54 53 33 20 66 75  t of the FTS3 fu
10300 6c 6c 2d 74 65 78 74 0d 0a 20 20 20 20 20 20 2f  ll-text..      /
10310 2f 2f 20 73 65 61 72 63 68 20 65 6e 67 69 6e 65  // search engine
10320 20 65 78 74 65 6e 73 69 6f 6e 2e 0d 0a 20 20 20   extension...   
10330 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
10340 3e 0d 0a 20 20 20 20 20 20 53 51 4c 49 54 45 5f  >..      SQLITE_
10350 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f  DBCONFIG_ENABLE_
10360 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 20 3d  FTS3_TOKENIZER =
10370 20 31 30 30 34 2c 20 2f 2f 20 69 6e 74 20 69 6e   1004, // int in
10380 74 2a 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  t*....      /// 
10390 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
103a0 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e   /// This option
103b0 20 69 73 20 75 73 65 64 20 74 6f 20 65 6e 61 62   is used to enab
103c0 6c 65 20 6f 72 20 64 69 73 61 62 6c 65 20 74 68  le or disable th
103d0 65 20 6c 6f 61 64 69 6e 67 20 6f 66 20 65 78 74  e loading of ext
103e0 65 6e 73 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20  ensions...      
103f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
10400 20 20 20 20 20 20 53 51 4c 49 54 45 5f 44 42 43        SQLITE_DBC
10410 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 4c 4f 41  ONFIG_ENABLE_LOA
10420 44 5f 45 58 54 45 4e 53 49 4f 4e 20 3d 20 31 30  D_EXTENSION = 10
10430 30 35 2c 20 2f 2f 20 69 6e 74 20 69 6e 74 2a 0d  05, // int int*.
10440 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
10450 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
10460 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  / This option is
10470 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20   used to enable 
10480 6f 72 20 64 69 73 61 62 6c 65 20 74 68 65 20 61  or disable the a
10490 75 74 6f 6d 61 74 69 63 20 63 68 65 63 6b 70 6f  utomatic checkpo
104a0 69 6e 74 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f  inting..      //
104b0 2f 20 77 68 65 6e 20 61 20 57 41 4c 20 64 61 74  / when a WAL dat
104c0 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64 2e  abase is closed.
104d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
104e0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53 51  mmary>..      SQ
104f0 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4e 4f  LITE_DBCONFIG_NO
10500 5f 43 4b 50 54 5f 4f 4e 5f 43 4c 4f 53 45 20 3d  _CKPT_ON_CLOSE =
10510 20 31 30 30 36 2c 20 2f 2f 20 69 6e 74 20 69 6e   1006, // int in
10520 74 2a 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  t*....      /// 
10530 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
10540 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e   /// This option
10550 20 69 73 20 75 73 65 64 20 74 6f 20 65 6e 61 62   is used to enab
10560 6c 65 20 6f 72 20 64 69 73 61 62 6c 65 20 74 68  le or disable th
10570 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20  e query planner 
10580 73 74 61 62 69 6c 69 74 79 0d 0a 20 20 20 20 20  stability..     
10590 20 2f 2f 2f 20 67 75 61 72 61 6e 74 65 65 20 28   /// guarantee (
105a0 51 50 53 47 29 2e 0d 0a 20 20 20 20 20 20 2f 2f  QPSG)...      //
105b0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
105c0 20 20 20 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e      SQLITE_DBCON
105d0 46 49 47 5f 45 4e 41 42 4c 45 5f 51 50 53 47 20  FIG_ENABLE_QPSG 
105e0 3d 20 31 30 30 37 2c 20 2f 2f 20 69 6e 74 20 69  = 1007, // int i
105f0 6e 74 2a 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  nt*....      ///
10600 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
10610 20 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f    /// This optio
10620 6e 20 69 73 20 75 73 65 64 20 74 6f 20 65 6e 61  n is used to ena
10630 62 6c 65 20 6f 72 20 64 69 73 61 62 6c 65 20 74  ble or disable t
10640 68 65 20 65 78 74 72 61 20 45 58 50 4c 41 49 4e  he extra EXPLAIN
10650 20 51 55 45 52 59 20 50 4c 41 4e 0d 0a 20 20 20   QUERY PLAN..   
10660 20 20 20 2f 2f 2f 20 6f 75 74 70 75 74 20 66 6f     /// output fo
10670 72 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  r trigger progra
10680 6d 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ms...      /// <
10690 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
106a0 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47   SQLITE_DBCONFIG
106b0 5f 54 52 49 47 47 45 52 5f 45 51 50 20 3d 20 31  _TRIGGER_EQP = 1
106c0 30 30 38 2c 20 2f 2f 20 69 6e 74 20 69 6e 74 2a  008, // int int*
106d0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
106e0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
106f0 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  // This option i
10700 73 20 75 73 65 64 20 61 73 20 70 61 72 74 20 6f  s used as part o
10710 66 20 74 68 65 20 70 72 6f 63 65 73 73 20 74 6f  f the process to
10720 20 72 65 73 65 74 20 61 20 64 61 74 61 62 61 73   reset a databas
10730 65 20 62 61 63 6b 0d 0a 20 20 20 20 20 20 2f 2f  e back..      //
10740 2f 20 74 6f 20 61 6e 20 65 6d 70 74 79 20 73 74  / to an empty st
10750 61 74 65 2e 20 20 42 65 63 61 75 73 65 20 72 65  ate.  Because re
10760 73 65 74 74 69 6e 67 20 61 20 64 61 74 61 62 61  setting a databa
10770 73 65 20 69 73 20 64 65 73 74 72 75 63 74 69 76  se is destructiv
10780 65 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f  e and..      ///
10790 20 69 72 72 65 76 65 72 73 69 62 6c 65 2c 20 74   irreversible, t
107a0 68 65 20 70 72 6f 63 65 73 73 20 72 65 71 75 69  he process requi
107b0 72 65 73 20 74 68 65 20 75 73 65 20 6f 66 20 74  res the use of t
107c0 68 69 73 20 6f 62 73 63 75 72 65 20 66 6c 61 67  his obscure flag
107d0 20 61 6e 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   and..      /// 
107e0 6d 75 6c 74 69 70 6c 65 20 73 74 65 70 73 20 74  multiple steps t
107f0 6f 20 68 65 6c 70 20 65 6e 73 75 72 65 20 74 68  o help ensure th
10800 61 74 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 68  at it does not h
10810 61 70 70 65 6e 20 62 79 20 61 63 63 69 64 65 6e  appen by acciden
10820 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  t...      /// </
10830 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
10840 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
10850 52 45 53 45 54 5f 44 41 54 41 42 41 53 45 20 3d  RESET_DATABASE =
10860 20 31 30 30 39 2c 20 2f 2f 20 69 6e 74 20 69 6e   1009, // int in
10870 74 2a 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  t*....      /// 
10880 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
10890 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e   /// This option
108a0 20 61 63 74 69 76 61 74 65 73 20 6f 72 20 64 65   activates or de
108b0 61 63 74 69 76 61 74 65 73 20 74 68 65 20 22 64  activates the "d
108c0 65 66 65 6e 73 69 76 65 22 20 66 6c 61 67 20 66  efensive" flag f
108d0 6f 72 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  or a..      /// 
108e0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
108f0 69 6f 6e 2e 20 20 57 68 65 6e 20 74 68 65 20 64  ion.  When the d
10900 65 66 65 6e 73 69 76 65 20 66 6c 61 67 20 69 73  efensive flag is
10910 20 65 6e 61 62 6c 65 64 2c 20 6c 61 6e 67 75 61   enabled, langua
10920 67 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66 65  ge..      /// fe
10930 61 74 75 72 65 73 20 74 68 61 74 20 61 6c 6c 6f  atures that allo
10940 77 20 6f 72 64 69 6e 61 72 79 20 53 51 4c 20 74  w ordinary SQL t
10950 6f 20 64 65 6c 69 62 65 72 61 74 65 6c 79 20 63  o deliberately c
10960 6f 72 72 75 70 74 20 74 68 65 20 64 61 74 61 62  orrupt the datab
10970 61 73 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 66  ase..      /// f
10980 69 6c 65 20 61 72 65 20 64 69 73 61 62 6c 65 64  ile are disabled
10990 2e 20 20 54 68 65 20 64 69 73 61 62 6c 65 64 20  .  The disabled 
109a0 66 65 61 74 75 72 65 73 20 69 6e 63 6c 75 64 65  features include
109b0 20 62 75 74 20 61 72 65 20 6e 6f 74 20 6c 69 6d   but are not lim
109c0 69 74 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ited..      /// 
109d0 74 6f 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  to the following
109e0 3a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 21 5b  :..      /// <![
109f0 43 44 41 54 41 5b 3c 75 6c 3e 5d 5d 3e 0d 0a 20  CDATA[<ul>]]>.. 
10a00 20 20 20 20 20 2f 2f 2f 20 3c 21 5b 43 44 41 54       /// <![CDAT
10a10 41 5b 3c 6c 69 3e 5d 5d 3e 0d 0a 20 20 20 20 20  A[<li>]]>..     
10a20 20 2f 2f 2f 20 54 68 65 20 50 52 41 47 4d 41 20   /// The PRAGMA 
10a30 77 72 69 74 61 62 6c 65 5f 73 63 68 65 6d 61 3d  writable_schema=
10a40 4f 4e 20 73 74 61 74 65 6d 65 6e 74 2e 0d 0a 20  ON statement... 
10a50 20 20 20 20 20 2f 2f 2f 20 3c 21 5b 43 44 41 54       /// <![CDAT
10a60 41 5b 3c 2f 6c 69 3e 5d 5d 3e 0d 0a 20 20 20 20  A[</li>]]>..    
10a70 20 20 2f 2f 2f 20 3c 21 5b 43 44 41 54 41 5b 3c    /// <![CDATA[<
10a80 6c 69 3e 5d 5d 3e 0d 0a 20 20 20 20 20 20 2f 2f  li>]]>..      //
10a90 2f 20 54 68 65 20 50 52 41 47 4d 41 20 6a 6f 75  / The PRAGMA jou
10aa0 72 6e 61 6c 5f 6d 6f 64 65 3d 4f 46 46 20 73 74  rnal_mode=OFF st
10ab0 61 74 65 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20  atement...      
10ac0 2f 2f 2f 20 3c 21 5b 43 44 41 54 41 5b 3c 2f 6c  /// <![CDATA[</l
10ad0 69 3e 5d 5d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  i>]]>..      ///
10ae0 20 3c 21 5b 43 44 41 54 41 5b 3c 6c 69 3e 5d 5d   <![CDATA[<li>]]
10af0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 57 72 69  >..      /// Wri
10b00 74 65 73 20 74 6f 20 74 68 65 20 73 71 6c 69 74  tes to the sqlit
10b10 65 5f 64 62 70 61 67 65 20 76 69 72 74 75 61 6c  e_dbpage virtual
10b20 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 2f   table...      /
10b30 2f 2f 20 3c 21 5b 43 44 41 54 41 5b 3c 2f 6c 69  // <![CDATA[</li
10b40 3e 5d 5d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  >]]>..      /// 
10b50 3c 21 5b 43 44 41 54 41 5b 3c 6c 69 3e 5d 5d 3e  <![CDATA[<li>]]>
10b60 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 69 72 65  ..      /// Dire
10b70 63 74 20 77 72 69 74 65 73 20 74 6f 20 73 68 61  ct writes to sha
10b80 64 6f 77 20 74 61 62 6c 65 73 2e 0d 0a 20 20 20  dow tables...   
10b90 20 20 20 2f 2f 2f 20 3c 21 5b 43 44 41 54 41 5b     /// <![CDATA[
10ba0 3c 2f 6c 69 3e 5d 5d 3e 0d 0a 20 20 20 20 20 20  </li>]]>..      
10bb0 2f 2f 2f 20 3c 21 5b 43 44 41 54 41 5b 3c 2f 75  /// <![CDATA[</u
10bc0 6c 3e 5d 5d 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  l>]]>..      ///
10bd0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
10be0 20 20 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46     SQLITE_DBCONF
10bf0 49 47 5f 44 45 46 45 4e 53 49 56 45 20 3d 20 31  IG_DEFENSIVE = 1
10c00 30 31 30 2c 20 2f 2f 20 69 6e 74 20 69 6e 74 2a  010, // int int*
10c10 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
10c20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
10c30 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 61  // This option a
10c40 63 74 69 76 61 74 65 73 20 6f 72 20 64 65 61 63  ctivates or deac
10c50 74 69 76 61 74 65 73 20 74 68 65 20 22 77 72 69  tivates the "wri
10c60 74 61 62 6c 65 5f 73 63 68 65 6d 61 22 20 66 6c  table_schema" fl
10c70 61 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ag...      /// <
10c80 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
10c90 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47   SQLITE_DBCONFIG
10ca0 5f 57 52 49 54 41 42 4c 45 5f 53 43 48 45 4d 41  _WRITABLE_SCHEMA
10cb0 20 3d 20 31 30 31 31 2c 20 2f 2f 20 69 6e 74 20   = 1011, // int 
10cc0 69 6e 74 2a 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  int*....      //
10cd0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
10ce0 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74 69     /// This opti
10cf0 6f 6e 20 61 63 74 69 76 61 74 65 73 20 6f 72 20  on activates or 
10d00 64 65 61 63 74 69 76 61 74 65 73 20 74 68 65 20  deactivates the 
10d10 6c 65 67 61 63 79 20 62 65 68 61 76 69 6f 72 20  legacy behavior 
10d20 6f 66 20 74 68 65 20 41 4c 54 45 52 0d 0a 20 20  of the ALTER..  
10d30 20 20 20 20 2f 2f 2f 20 54 41 42 4c 45 20 52 45      /// TABLE RE
10d40 4e 41 4d 45 20 63 6f 6d 6d 61 6e 64 20 73 75 63  NAME command suc
10d50 68 20 69 74 20 62 65 68 61 76 65 73 20 61 73 20  h it behaves as 
10d60 69 74 20 64 69 64 20 70 72 69 6f 72 20 74 6f 20  it did prior to 
10d70 76 65 72 73 69 6f 6e 20 33 2e 32 34 2e 30 0d 0a  version 3.24.0..
10d80 20 20 20 20 20 20 2f 2f 2f 20 28 32 30 31 38 2d        /// (2018-
10d90 30 36 2d 30 34 29 2e 0d 0a 20 20 20 20 20 20 2f  06-04)...      /
10da0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
10db0 20 20 20 20 20 53 51 4c 49 54 45 5f 44 42 43 4f       SQLITE_DBCO
10dc0 4e 46 49 47 5f 4c 45 47 41 43 59 5f 41 4c 54 45  NFIG_LEGACY_ALTE
10dd0 52 5f 54 41 42 4c 45 20 3d 20 31 30 31 32 2c 20  R_TABLE = 1012, 
10de0 2f 2f 20 69 6e 74 20 69 6e 74 2a 0d 0a 0d 0a 20  // int int*.... 
10df0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
10e00 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
10e10 69 73 20 6f 70 74 69 6f 6e 20 61 63 74 69 76 61  is option activa
10e20 74 65 73 20 6f 72 20 64 65 61 63 74 69 76 61 74  tes or deactivat
10e30 65 73 20 74 68 65 20 6c 65 67 61 63 79 20 64 6f  es the legacy do
10e40 75 62 6c 65 2d 71 75 6f 74 65 64 20 73 74 72 69  uble-quoted stri
10e50 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 69  ng..      /// li
10e60 74 65 72 61 6c 20 6d 69 73 66 65 61 74 75 72 65  teral misfeature
10e70 20 66 6f 72 20 44 4d 4c 20 73 74 61 74 65 6d 65   for DML stateme
10e80 6e 74 20 6f 6e 6c 79 2c 20 74 68 61 74 20 69 73  nt only, that is
10e90 20 44 45 4c 45 54 45 2c 20 49 4e 53 45 52 54 2c   DELETE, INSERT,
10ea0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 53 45 4c 45  ..      /// SELE
10eb0 43 54 2c 20 61 6e 64 20 55 50 44 41 54 45 20 73  CT, and UPDATE s
10ec0 74 61 74 65 6d 65 6e 74 73 2e 0d 0a 20 20 20 20  tatements...    
10ed0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
10ee0 0d 0a 20 20 20 20 20 20 53 51 4c 49 54 45 5f 44  ..      SQLITE_D
10ef0 42 43 4f 4e 46 49 47 5f 44 51 53 5f 44 4d 4c 20  BCONFIG_DQS_DML 
10f00 3d 20 31 30 31 33 2c 20 2f 2f 20 69 6e 74 20 69  = 1013, // int i
10f10 6e 74 2a 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  nt*....      ///
10f20 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
10f30 20 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f    /// This optio
10f40 6e 20 61 63 74 69 76 61 74 65 73 20 6f 72 20 64  n activates or d
10f50 65 61 63 74 69 76 61 74 65 73 20 74 68 65 20 6c  eactivates the l
10f60 65 67 61 63 79 20 64 6f 75 62 6c 65 2d 71 75 6f  egacy double-quo
10f70 74 65 64 20 73 74 72 69 6e 67 0d 0a 20 20 20 20  ted string..    
10f80 20 20 2f 2f 2f 20 6c 69 74 65 72 61 6c 20 6d 69    /// literal mi
10f90 73 66 65 61 74 75 72 65 20 66 6f 72 20 44 44 4c  sfeature for DDL
10fa0 20 73 74 61 74 65 6d 65 6e 74 73 2c 20 73 75 63   statements, suc
10fb0 68 20 61 73 20 43 52 45 41 54 45 20 54 41 42 4c  h as CREATE TABL
10fc0 45 20 61 6e 64 20 43 52 45 41 54 45 0d 0a 20 20  E and CREATE..  
10fd0 20 20 20 20 2f 2f 2f 20 49 4e 44 45 58 2e 0d 0a      /// INDEX...
10fe0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
10ff0 61 72 79 3e 0d 0a 20 20 20 20 20 20 53 51 4c 49  ary>..      SQLI
11000 54 45 5f 44 42 43 4f 4e 46 49 47 5f 44 51 53 5f  TE_DBCONFIG_DQS_
11010 44 44 4c 20 3d 20 31 30 31 34 2c 20 2f 2f 20 69  DDL = 1014, // i
11020 6e 74 20 69 6e 74 2a 0d 0a 0d 0a 20 20 20 20 20  nt int*....     
11030 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11040 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f        /// This o
11050 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
11060 20 65 6e 61 62 6c 65 20 6f 72 20 64 69 73 61 62   enable or disab
11070 6c 65 20 43 52 45 41 54 45 20 56 49 45 57 2e 0d  le CREATE VIEW..
11080 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
11090 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53 51 4c  mary>..      SQL
110a0 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41  ITE_DBCONFIG_ENA
110b0 42 4c 45 5f 56 49 45 57 20 3d 20 31 30 31 35 20  BLE_VIEW = 1015 
110c0 2f 2f 20 69 6e 74 20 69 6e 74 2a 0d 0a 20 20 7d  // int int*..  }
110d0 0d 0a 0d 0a 20 20 2f 2f 20 54 68 65 73 65 20 61  ....  // These a
110e0 72 65 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 74  re the options t
110f0 6f 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 73  o the internal s
11100 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 20 63 61  qlite3_config ca
11110 6c 6c 2e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ll...  internal 
11120 65 6e 75 6d 20 53 51 4c 69 74 65 43 6f 6e 66 69  enum SQLiteConfi
11130 67 4f 70 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20  gOpsEnum..  {.. 
11140 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47     SQLITE_CONFIG
11150 5f 4e 4f 4e 45 20 3d 20 30 2c 20 2f 2f 20 6e 69  _NONE = 0, // ni
11160 6c 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f  l..    SQLITE_CO
11170 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41  NFIG_SINGLETHREA
11180 44 20 3d 20 31 2c 20 2f 2f 20 6e 69 6c 0d 0a 20  D = 1, // nil.. 
11190 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47     SQLITE_CONFIG
111a0 5f 4d 55 4c 54 49 54 48 52 45 41 44 20 3d 20 32  _MULTITHREAD = 2
111b0 2c 20 2f 2f 20 6e 69 6c 0d 0a 20 20 20 20 53 51  , // nil..    SQ
111c0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49  LITE_CONFIG_SERI
111d0 41 4c 49 5a 45 44 20 3d 20 33 2c 20 2f 2f 20 6e  ALIZED = 3, // n
111e0 69 6c 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43  il..    SQLITE_C
111f0 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 20 3d 20 34  ONFIG_MALLOC = 4
11200 2c 20 2f 2f 20 73 71 6c 69 74 65 33 5f 6d 65 6d  , // sqlite3_mem
11210 5f 6d 65 74 68 6f 64 73 2a 0d 0a 20 20 20 20 53  _methods*..    S
11220 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54  QLITE_CONFIG_GET
11230 4d 41 4c 4c 4f 43 20 3d 20 35 2c 20 2f 2f 20 73  MALLOC = 5, // s
11240 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f  qlite3_mem_metho
11250 64 73 2a 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f  ds*..    SQLITE_
11260 43 4f 4e 46 49 47 5f 53 43 52 41 54 43 48 20 3d  CONFIG_SCRATCH =
11270 20 36 2c 20 2f 2f 20 76 6f 69 64 2a 2c 20 69 6e   6, // void*, in
11280 74 20 73 7a 2c 20 69 6e 74 20 4e 0d 0a 20 20 20  t sz, int N..   
11290 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50   SQLITE_CONFIG_P
112a0 41 47 45 43 41 43 48 45 20 3d 20 37 2c 20 2f 2f  AGECACHE = 7, //
112b0 20 76 6f 69 64 2a 2c 20 69 6e 74 20 73 7a 2c 20   void*, int sz, 
112c0 69 6e 74 20 4e 0d 0a 20 20 20 20 53 51 4c 49 54  int N..    SQLIT
112d0 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 20 3d 20  E_CONFIG_HEAP = 
112e0 38 2c 20 2f 2f 20 76 6f 69 64 2a 2c 20 69 6e 74  8, // void*, int
112f0 20 6e 42 79 74 65 2c 20 69 6e 74 20 6d 69 6e 0d   nByte, int min.
11300 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46  .    SQLITE_CONF
11310 49 47 5f 4d 45 4d 53 54 41 54 55 53 20 3d 20 39  IG_MEMSTATUS = 9
11320 2c 20 2f 2f 20 62 6f 6f 6c 65 61 6e 0d 0a 20 20  , // boolean..  
11330 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f    SQLITE_CONFIG_
11340 4d 55 54 45 58 20 3d 20 31 30 2c 20 2f 2f 20 73  MUTEX = 10, // s
11350 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74  qlite3_mutex_met
11360 68 6f 64 73 2a 0d 0a 20 20 20 20 53 51 4c 49 54  hods*..    SQLIT
11370 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45  E_CONFIG_GETMUTE
11380 58 20 3d 20 31 31 2c 20 2f 2f 20 73 71 6c 69 74  X = 11, // sqlit
11390 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73  e3_mutex_methods
113a0 2a 0d 0a 20 20 20 20 2f 2f 20 70 72 65 76 69 6f  *..    // previo
113b0 75 73 6c 79 20 53 51 4c 49 54 45 5f 43 4f 4e 46  usly SQLITE_CONF
113c0 49 47 5f 43 48 55 4e 4b 41 4c 4c 4f 43 20 31 32  IG_CHUNKALLOC 12
113d0 20 77 68 69 63 68 20 69 73 20 6e 6f 77 20 75 6e   which is now un
113e0 75 73 65 64 0d 0a 20 20 20 20 53 51 4c 49 54 45  used..    SQLITE
113f0 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44  _CONFIG_LOOKASID
11400 45 20 3d 20 31 33 2c 20 2f 2f 20 69 6e 74 20 69  E = 13, // int i
11410 6e 74 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43  nt..    SQLITE_C
11420 4f 4e 46 49 47 5f 50 43 41 43 48 45 20 3d 20 31  ONFIG_PCACHE = 1
11430 34 2c 20 2f 2f 20 73 71 6c 69 74 65 33 5f 70 63  4, // sqlite3_pc
11440 61 63 68 65 5f 6d 65 74 68 6f 64 73 2a 0d 0a 20  ache_methods*.. 
11450 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47     SQLITE_CONFIG
11460 5f 47 45 54 50 43 41 43 48 45 20 3d 20 31 35 2c  _GETPCACHE = 15,
11470 20 2f 2f 20 73 71 6c 69 74 65 33 5f 70 63 61 63   // sqlite3_pcac
11480 68 65 5f 6d 65 74 68 6f 64 73 2a 0d 0a 20 20 20  he_methods*..   
11490 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c   SQLITE_CONFIG_L
114a0 4f 47 20 3d 20 31 36 2c 20 2f 2f 20 78 46 75 6e  OG = 16, // xFun
114b0 63 2c 20 76 6f 69 64 2a 0d 0a 20 20 20 20 53 51  c, void*..    SQ
114c0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49 20  LITE_CONFIG_URI 
114d0 3d 20 31 37 2c 20 2f 2f 20 69 6e 74 0d 0a 20 20  = 17, // int..  
114e0 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f    SQLITE_CONFIG_
114f0 50 43 41 43 48 45 32 20 3d 20 31 38 2c 20 2f 2f  PCACHE2 = 18, //
11500 20 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f   sqlite3_pcache_
11510 6d 65 74 68 6f 64 73 32 2a 0d 0a 20 20 20 20 53  methods2*..    S
11520 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54  QLITE_CONFIG_GET
11530 50 43 41 43 48 45 32 20 3d 20 31 39 2c 20 2f 2f  PCACHE2 = 19, //
11540 20 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f   sqlite3_pcache_
11550 6d 65 74 68 6f 64 73 32 2a 0d 0a 20 20 20 20 53  methods2*..    S
11560 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56  QLITE_CONFIG_COV
11570 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e  ERING_INDEX_SCAN
11580 20 3d 20 32 30 2c 20 2f 2f 20 69 6e 74 0d 0a 20   = 20, // int.. 
11590 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47     SQLITE_CONFIG
115a0 5f 53 51 4c 4c 4f 47 20 3d 20 32 31 2c 20 2f 2f  _SQLLOG = 21, //
115b0 20 78 53 71 6c 6c 6f 67 2c 20 76 6f 69 64 2a 0d   xSqllog, void*.
115c0 0a 20 20 20 20 53 51 4c 49 54 45 5f 43 4f 4e 46  .    SQLITE_CONF
115d0 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 20 3d 20 32  IG_MMAP_SIZE = 2
115e0 32 2c 20 2f 2f 20 73 71 6c 69 74 65 33 5f 69 6e  2, // sqlite3_in
115f0 74 36 34 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74  t64, sqlite3_int
11600 36 34 0d 0a 20 20 20 20 53 51 4c 49 54 45 5f 43  64..    SQLITE_C
11610 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48 45 41 50  ONFIG_WIN32_HEAP
11620 53 49 5a 45 20 3d 20 32 33 2c 20 2f 2f 20 69 6e  SIZE = 23, // in
11630 74 20 6e 42 79 74 65 0d 0a 20 20 20 20 53 51 4c  t nByte..    SQL
11640 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48  ITE_CONFIG_PCACH
11650 45 5f 48 44 52 53 5a 20 3d 20 32 34 2c 20 2f 2f  E_HDRSZ = 24, //
11660 20 69 6e 74 20 2a 70 73 7a 0d 0a 20 20 20 20 53   int *psz..    S
11670 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41  QLITE_CONFIG_PMA
11680 53 5a 20 3d 20 32 35 20 2f 2f 20 75 6e 73 69 67  SZ = 25 // unsig
11690 6e 65 64 20 69 6e 74 20 73 7a 50 6d 61 0d 0a 20  ned int szPma.. 
116a0 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
116b0 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65  mary>..  /// The
116c0 73 65 20 63 6f 6e 73 74 61 6e 74 73 20 61 72 65  se constants are
116d0 20 75 73 65 64 20 77 69 74 68 20 74 68 65 20 73   used with the s
116e0 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28  qlite3_trace_v2(
116f0 29 20 41 50 49 20 61 6e 64 20 74 68 65 0d 0a 20  ) API and the.. 
11700 20 2f 2f 2f 20 63 61 6c 6c 62 61 63 6b 73 20 72   /// callbacks r
11710 65 67 69 73 74 65 72 65 64 20 62 79 20 69 74 2e  egistered by it.
11720 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
11730 79 3e 0d 0a 20 20 5b 46 6c 61 67 73 28 29 5d 0d  y>..  [Flags()].
11740 0a 20 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75 6d  .  internal enum
11750 20 53 51 4c 69 74 65 54 72 61 63 65 46 6c 61 67   SQLiteTraceFlag
11760 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 53 51  s..  {..      SQ
11770 4c 49 54 45 5f 54 52 41 43 45 5f 4e 4f 4e 45 20  LITE_TRACE_NONE 
11780 3d 20 30 78 30 2c 20 2f 2f 20 6e 69 6c 0d 0a 20  = 0x0, // nil.. 
11790 20 20 20 20 20 53 51 4c 49 54 45 5f 54 52 41 43       SQLITE_TRAC
117a0 45 5f 53 54 4d 54 20 3d 20 30 78 31 2c 20 2f 2f  E_STMT = 0x1, //
117b0 20 70 53 74 6d 74 2c 20 7a 53 71 6c 0d 0a 20 20   pStmt, zSql..  
117c0 20 20 20 20 53 51 4c 49 54 45 5f 54 52 41 43 45      SQLITE_TRACE
117d0 5f 50 52 4f 46 49 4c 45 20 3d 20 30 78 32 2c 20  _PROFILE = 0x2, 
117e0 2f 2f 20 70 53 74 6d 74 2c 20 70 69 4e 73 65 63  // pStmt, piNsec
117f0 36 34 0d 0a 20 20 20 20 20 20 53 51 4c 49 54 45  64..      SQLITE
11800 5f 54 52 41 43 45 5f 52 4f 57 20 3d 20 30 78 34  _TRACE_ROW = 0x4
11810 2c 20 2f 2f 20 70 53 74 6d 74 0d 0a 20 20 20 20  , // pStmt..    
11820 20 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 43    SQLITE_TRACE_C
11830 4c 4f 53 45 20 3d 20 30 78 38 20 2f 2f 20 70 44  LOSE = 0x8 // pD
11840 62 0d 0a 20 20 7d 0d 0a 7d 0d 0a                 b..  }..}..