System.Data.SQLite
Check-in [41d8f0f895]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:1.0.54.0
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | sourceforge
Files: files | file ages | folders
SHA1:41d8f0f8956c8960986c39f2bacfdbc851b61a44
User & Date: rmsimpson 2008-07-26 04:34:33
Context
2008-08-06
21:40
1.0.55.0 check-in: 24425920c8 user: rmsimpson tags: sourceforge
2008-07-26
04:34
1.0.54.0 check-in: 41d8f0f895 user: rmsimpson tags: sourceforge
2008-07-24
06:19
1.0.53.0 check-in: 2b553f96c4 user: rmsimpson tags: sourceforge
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Changes to Doc/Extra/dbfactorysupport.html.

    93     93   <configuration>
    94     94     <system.data>
    95     95       <DbProviderFactories>
    96     96         <remove invariant="System.Data.SQLite"/>
    97     97         <add name="SQLite Data Provider" invariant="System.Data.SQLite" 
    98     98              description=".Net Framework Data Provider for SQLite"
    99     99              type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite,
   100         -                 Version=1.0.53.0, Culture=neutral,
          100  +                 Version=1.0.54.0, Culture=neutral,
   101    101                    PublicKeyToken=db937bc2d44ff139"/>
   102    102       </DbProviderFactories>
   103    103     </system.data>
   104    104   </configuration>
   105    105   </pre>
   106    106         </div>
   107    107         <p>

Changes to Doc/Extra/version.html.

    51     51             </td>
    52     52           </tr>
    53     53         </table>
    54     54       </div>
    55     55       <div id="mainSection">
    56     56       <div id="mainBody">
    57     57       <h1 class="heading">Version History</h1>
           58  +    <p><b>1.0.54.0 - July 25, 2008</b></p>
           59  +    <ul>
           60  +      <li>Fixed the setup project, which somehow &quot;forgot&quot; to include all the binaries in 
           61  +        the 53 release.</li>
           62  +      <li>Fixed a crash in the table designer when creating a new table and tabbing past 
           63  +        the &quot;Allow Nulls&quot; cell in the grid while creating a new column.</li>
           64  +      <li>Fixed a mostly-benign bug in SQLiteDataReader&#39;s GetEnumerator, which failed to 
           65  +        pass along a flag to the underyling DbEnumerator it creates.&nbsp; This one&#39;s 
           66  +        been around since day 1 and nobody&#39;s noticed it in all these years.</li>
           67  +      <li>Added a new connection string parameter &quot;Journal Mode&quot; that allows you to set 
           68  +        the SQLite journal mode to Delete, Persist or Off.</li>
           69  +    </ul>
    58     70       <p><b>1.0.53.0 - July 24, 2008</b></p>
    59     71       <ul>
    60     72         <li>Enabled sqlite_load_extension</li>
    61     73         <li>Added retry/timeout code to SQLite3.Prepare() when preparing statements for 
    62     74           execution and a SQLITE_BUSY error occurs.</li>
    63     75         <li>Added a new schema to SQLiteConnection.GetSchema() called <i>Triggers</i>.&nbsp; 
    64     76           Used to retrieve the trigger(s) associated with a database and/or table/view.</li>

Changes to Doc/SQLite.NET.chm.

cannot compute difference between binary files

Changes to SQLite.Designer/Design/Column.cs.

   121    121         {
   122    122           if (_parent.DataGridView.EditingControl != null)
   123    123             value = ((IDataGridViewEditingControl)_parent.DataGridView.EditingControl).EditingControlFormattedValue;
   124    124           else
   125    125             value = _parent.Cells[cellIndex].EditedFormattedValue;
   126    126         }
   127    127         else
   128         -        value = _parent.Cells[cellIndex].Value;
   129         -
   130         -      if (value == null) value = String.Empty;
          128  +        value = _parent.Cells[cellIndex].EditedFormattedValue;
   131    129   
   132    130         switch (cellIndex)
   133    131         {
   134    132           case 0:
   135    133             ColumnName = value.ToString();
   136    134             break;
   137    135           case 1:
   138    136             DataType = value.ToString();
   139    137             break;
   140    138           case 2:
   141         -          AllowNulls = Convert.ToBoolean(value);
          139  +          try
          140  +          {
          141  +            AllowNulls = Convert.ToBoolean(value);
          142  +          }
          143  +          catch
          144  +          {
          145  +          }
   142    146             break;
   143    147         }
   144    148       }
   145    149   
   146    150       [DefaultValue("BINARY")]
   147    151       [Category("Constraints")]
   148    152       [Editor(typeof(CollationTypeEditor), typeof(UITypeEditor))]
................................................................................
   246    250           isprimary = true;
   247    251           builder.Append(" PRIMARY KEY");
   248    252   
   249    253           if (_table.PrimaryKey.Columns[0].SortMode != ColumnSortMode.Ascending)
   250    254             builder.Append(" DESC");
   251    255   
   252    256           if (_table.PrimaryKey.Conflict != ConflictEnum.Abort)
   253         -          builder.AppendFormat(" ON CONFLICT {0}", _table.PrimaryKey.Conflict.ToString());
          257  +          builder.AppendFormat(" ON CONFLICT {0}", _table.PrimaryKey.Conflict.ToString().ToUpperInvariant());
   254    258   
   255    259           if (_table.PrimaryKey.AutoIncrement == true)
   256    260             builder.Append(" AUTOINCREMENT");
   257    261         }
   258    262   
   259    263         if (AllowNulls == false)
   260    264           builder.Append(" NOT NULL");

Changes to SQLite.Designer/Editors/TableDesignerDoc.Designer.cs.

    34     34         this.components = new System.ComponentModel.Container();
    35     35         System.Windows.Forms.SplitContainer _splitter;
    36     36         System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TableDesignerDoc));
    37     37         this._dataGrid = new System.Windows.Forms.DataGridView();
    38     38         this.name = new System.Windows.Forms.DataGridViewTextBoxColumn();
    39     39         this.type = new SQLite.Designer.Editors.AutoCompleteColumn();
    40     40         this.isnull = new System.Windows.Forms.DataGridViewCheckBoxColumn();
    41         -      this._propertyGrid = new System.Windows.Forms.PropertyGrid();
           41  +      this._pg = new System.Windows.Forms.PropertyGrid();
    42     42         this._sqlText = new System.Windows.Forms.RichTextBox();
           43  +      this._propertyGrid = new System.Windows.Forms.PropertyGrid();
    43     44         this.autoCompleteColumn1 = new SQLite.Designer.Editors.AutoCompleteColumn();
    44     45         this._imageList = new System.Windows.Forms.ImageList(this.components);
    45         -      this._pg = new System.Windows.Forms.PropertyGrid();
    46     46         _splitter = new System.Windows.Forms.SplitContainer();
    47     47         _splitter.Panel1.SuspendLayout();
    48     48         _splitter.Panel2.SuspendLayout();
    49     49         _splitter.SuspendLayout();
    50     50         ((System.ComponentModel.ISupportInitialize)(this._dataGrid)).BeginInit();
    51     51         this.SuspendLayout();
    52     52         // 
................................................................................
   114    114         // type
   115    115         // 
   116    116         this.type.HeaderText = "Data Type";
   117    117         this.type.Name = "type";
   118    118         // 
   119    119         // isnull
   120    120         // 
          121  +      this.isnull.FalseValue = false;
   121    122         this.isnull.HeaderText = "Allow Nulls";
          123  +      this.isnull.IndeterminateValue = false;
   122    124         this.isnull.Name = "isnull";
          125  +      this.isnull.TrueValue = true;
   123    126         // 
   124         -      // _propertyGrid
          127  +      // _pg
   125    128         // 
   126         -      this._propertyGrid.Dock = System.Windows.Forms.DockStyle.Fill;
   127         -      this._propertyGrid.Location = new System.Drawing.Point(0, 0);
   128         -      this._propertyGrid.Name = "_propertyGrid";
   129         -      this._propertyGrid.Size = new System.Drawing.Size(436, 244);
   130         -      this._propertyGrid.TabIndex = 0;
          129  +      this._pg.Location = new System.Drawing.Point(3, 171);
          130  +      this._pg.Name = "_pg";
          131  +      this._pg.PropertySort = System.Windows.Forms.PropertySort.NoSort;
          132  +      this._pg.Size = new System.Drawing.Size(130, 130);
          133  +      this._pg.TabIndex = 1;
          134  +      this._pg.ToolbarVisible = false;
          135  +      this._pg.Visible = false;
   131    136         // 
   132    137         // _sqlText
   133    138         // 
   134    139         this._sqlText.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
   135    140         this._sqlText.Location = new System.Drawing.Point(3, 3);
   136    141         this._sqlText.Name = "_sqlText";
   137    142         this._sqlText.ReadOnly = true;
   138    143         this._sqlText.Size = new System.Drawing.Size(165, 162);
   139    144         this._sqlText.TabIndex = 0;
   140    145         this._sqlText.Text = "";
   141    146         this._sqlText.Visible = false;
   142    147         // 
          148  +      // _propertyGrid
          149  +      // 
          150  +      this._propertyGrid.Dock = System.Windows.Forms.DockStyle.Fill;
          151  +      this._propertyGrid.Location = new System.Drawing.Point(0, 0);
          152  +      this._propertyGrid.Name = "_propertyGrid";
          153  +      this._propertyGrid.Size = new System.Drawing.Size(436, 244);
          154  +      this._propertyGrid.TabIndex = 0;
          155  +      // 
   143    156         // autoCompleteColumn1
   144    157         // 
   145    158         this.autoCompleteColumn1.HeaderText = "Data Type";
   146    159         this.autoCompleteColumn1.Name = "autoCompleteColumn1";
   147    160         this.autoCompleteColumn1.Resizable = System.Windows.Forms.DataGridViewTriState.True;
   148    161         this.autoCompleteColumn1.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
   149    162         // 
   150    163         // _imageList
   151    164         // 
   152    165         this._imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("_imageList.ImageStream")));
   153    166         this._imageList.TransparentColor = System.Drawing.Color.Magenta;
   154    167         this._imageList.Images.SetKeyName(0, "PrimaryKey.bmp");
   155    168         // 
   156         -      // _pg
   157         -      // 
   158         -      this._pg.Location = new System.Drawing.Point(3, 171);
   159         -      this._pg.Name = "_pg";
   160         -      this._pg.PropertySort = System.Windows.Forms.PropertySort.NoSort;
   161         -      this._pg.Size = new System.Drawing.Size(130, 130);
   162         -      this._pg.TabIndex = 1;
   163         -      this._pg.ToolbarVisible = false;
   164         -      this._pg.Visible = false;
   165         -      // 
   166    169         // TableDesignerDoc
   167    170         // 
   168    171         this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
   169    172         this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
   170    173         this.BackColor = System.Drawing.SystemColors.Window;
   171    174         this.Controls.Add(_splitter);
          175  +      this.Font = new System.Drawing.Font("MS Shell Dlg 2", 8.25F);
   172    176         this.Name = "TableDesignerDoc";
   173    177         this.Size = new System.Drawing.Size(436, 631);
   174    178         _splitter.Panel1.ResumeLayout(false);
   175    179         _splitter.Panel2.ResumeLayout(false);
   176    180         _splitter.ResumeLayout(false);
   177    181         ((System.ComponentModel.ISupportInitialize)(this._dataGrid)).EndInit();
   178    182         this.ResumeLayout(false);
................................................................................
   181    185   
   182    186       #endregion
   183    187   
   184    188       private System.Windows.Forms.PropertyGrid _propertyGrid;
   185    189       private AutoCompleteColumn autoCompleteColumn1;
   186    190       private System.Windows.Forms.ImageList _imageList;
   187    191       private System.Windows.Forms.DataGridView _dataGrid;
          192  +    private System.Windows.Forms.RichTextBox _sqlText;
          193  +    private System.Windows.Forms.PropertyGrid _pg;
   188    194       private System.Windows.Forms.DataGridViewTextBoxColumn name;
   189    195       private AutoCompleteColumn type;
   190    196       private System.Windows.Forms.DataGridViewCheckBoxColumn isnull;
   191         -    private System.Windows.Forms.RichTextBox _sqlText;
   192         -    private System.Windows.Forms.PropertyGrid _pg;
   193    197   
   194    198     }
   195    199   }

Changes to SQLite.Designer/Editors/TableDesignerDoc.cs.

   412    412         return newVal;
   413    413       }
   414    414   
   415    415       #region IOleCommandTarget Members
   416    416   
   417    417       public int Exec(ref Guid pguidCmdGroup, uint nCmdID, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
   418    418       {
   419         -      System.Diagnostics.Debug.WriteLine(String.Format("{0} {1}", pguidCmdGroup, nCmdID));
   420    419         if (pguidCmdGroup == VSConstants.GUID_VSStandardCommandSet97)
   421    420         {
   422    421           switch ((VSConstants.VSStd97CmdID)nCmdID)
   423    422           {
   424    423             case VSConstants.VSStd97CmdID.GenerateChangeScript:
   425    424               {
   426    425                 using (ChangeScriptDialog dlg = new ChangeScriptDialog(_table.Name, GetChangeScript()))
................................................................................
   551    550           {
   552    551             case VSConstants.VSStd97CmdID.ManageIndexes:
   553    552               EditorHolder holder = new EditorHolder(_table);
   554    553               _pg.SelectedObject = holder;
   555    554               _pg.SelectedGridItem = _pg.SelectedGridItem.Parent.GridItems[0];
   556    555               IndexEditor ed = new IndexEditor(_table);
   557    556               ed.EditValue((ITypeDescriptorContext)_pg.SelectedGridItem, (System.IServiceProvider)_pg.SelectedGridItem, _pg.SelectedGridItem.Value);
          557  +
          558  +            _dataGrid_SelectionChanged(this, EventArgs.Empty);
          559  +            _dataGrid.Invalidate();
          560  +
   558    561               return VSConstants.S_OK;
   559    562             case VSConstants.VSStd97CmdID.ManageRelationships:
   560    563               holder = new EditorHolder(_table);
   561    564               _pg.SelectedObject = holder;
   562    565               _pg.SelectedGridItem = _pg.SelectedGridItem.Parent.GridItems[1];
   563    566               ForeignKeyEditor fed = new ForeignKeyEditor(_table);
   564    567               fed.EditValue((ITypeDescriptorContext)_pg.SelectedGridItem, (System.IServiceProvider)_pg.SelectedGridItem, _pg.SelectedGridItem.Value);

Changes to SQLite.Designer/Editors/ViewDesignerDoc.Designer.cs.

    55     55         this._pg.Visible = false;
    56     56         // 
    57     57         // ViewDesignerDoc
    58     58         // 
    59     59         this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    60     60         this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    61     61         this.Controls.Add(this._pg);
           62  +      this.Font = new System.Drawing.Font("MS Shell Dlg 2", 8.25F);
    62     63         this.Name = "ViewDesignerDoc";
    63     64         this.Size = new System.Drawing.Size(553, 407);
    64     65         this.ResumeLayout(false);
    65     66   
    66     67       }
    67     68   
    68     69       #endregion
    69     70   
    70     71       private System.Windows.Forms.Timer _timer;
    71     72       private System.Windows.Forms.Timer _check;
    72     73       private System.Windows.Forms.PropertyGrid _pg;
    73     74     }
    74     75   }

Changes to SQLite.Interop/SQLite.Interop.rc.

    49     49   
    50     50   /////////////////////////////////////////////////////////////////////////////
    51     51   //
    52     52   // Version
    53     53   //
    54     54   
    55     55   VS_VERSION_INFO VERSIONINFO
    56         - FILEVERSION 1,0,53,0
           56  + FILEVERSION 1,0,54,0
    57     57    PRODUCTVERSION 1,0,0,0
    58     58    FILEFLAGSMASK 0x17L
    59     59   #ifdef _DEBUG
    60     60    FILEFLAGS 0x1L
    61     61   #else
    62     62    FILEFLAGS 0x0L
    63     63   #endif
................................................................................
    67     67   BEGIN
    68     68       BLOCK "StringFileInfo"
    69     69       BEGIN
    70     70           BLOCK "040904b0"
    71     71           BEGIN
    72     72               VALUE "Comments", "http://sqlite.phxsoftware.com"
    73     73               VALUE "FileDescription", "System.Data.SQLite Interop Library"
    74         -            VALUE "FileVersion", "1.0.53.0"
           74  +            VALUE "FileVersion", "1.0.54.0"
    75     75               VALUE "InternalName", "SQLite.Interop.DLL"
    76     76               VALUE "LegalCopyright", "Released to the public domain"
    77     77               VALUE "OriginalFilename", "SQLite3.DLL 3.6.0"
    78     78               VALUE "ProductName", "System.Data.SQLite"
    79     79               VALUE "ProductVersion", "1.0"
    80     80           END
    81     81       END

Changes to SQLite.Interop/merge.h.

     1      1   // This code was automatically generated from assembly
     2      2   // C:\Src\SQLite.NET\System.Data.SQLite\bin\CompactFramework\System.Data.SQLite.dll
     3      3   
     4      4   #include <windef.h>
     5      5   
     6      6   #pragma data_seg(push,clrseg,".clr")
     7      7   #pragma comment(linker, "/SECTION:.clr,ER")
     8         -  char __ph[138636] = {0}; // The number of bytes to reserve
            8  +  char __ph[138928] = {0}; // The number of bytes to reserve
     9      9   #pragma data_seg(pop,clrseg)
    10     10   
    11     11   typedef BOOL (WINAPI *DLLMAIN)(HANDLE, DWORD, LPVOID);
    12     12   typedef struct EXTRA_STUFF
    13     13   {
    14     14     DWORD dwNativeEntryPoint;
    15     15   } EXTRA_STUFF, *LPEXTRA_STUFF;

Changes to SQLite.Interop/merge_full.h.

     1      1   // This code was automatically generated from assembly
     2      2   // C:\Src\SQLite.NET\System.Data.SQLite\bin\System.Data.SQLite.dll
     3      3   
     4      4   #include <windef.h>
     5      5   
     6      6   #pragma data_seg(push,clrseg,".clr")
     7      7   #pragma comment(linker, "/SECTION:.clr,ER")
     8         -  char __ph[151004] = {0}; // The number of bytes to reserve
            8  +  char __ph[151584] = {0}; // The number of bytes to reserve
     9      9   #pragma data_seg(pop,clrseg)
    10     10   
    11     11   typedef BOOL (WINAPI *DLLMAIN)(HANDLE, DWORD, LPVOID);
    12     12   typedef struct EXTRA_STUFF
    13     13   {
    14     14     DWORD dwNativeEntryPoint;
    15     15   } EXTRA_STUFF, *LPEXTRA_STUFF;

Changes to System.Data.SQLite.Linq/System.Data.SQLite.Linq.csproj.

    40     40       <Reference Include="System.Core">
    41     41         <RequiredTargetFramework>3.5</RequiredTargetFramework>
    42     42       </Reference>
    43     43       <Reference Include="System.Data" />
    44     44       <Reference Include="System.Data.Entity">
    45     45         <RequiredTargetFramework>3.5</RequiredTargetFramework>
    46     46       </Reference>
    47         -    <Reference Include="System.Data.SQLite, Version=1.0.52.0, Culture=neutral, PublicKeyToken=1fdb50b1b62b4c84, processorArchitecture=MSIL">
           47  +    <Reference Include="System.Data.SQLite, Version=1.0.54.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
    48     48         <SpecificVersion>False</SpecificVersion>
           49  +      <HintPath>..\bin\System.Data.SQLite.DLL</HintPath>
    49     50         <Private>False</Private>
    50     51       </Reference>
    51     52       <Reference Include="System.Xml" />
    52     53     </ItemGroup>
    53     54     <ItemGroup>
    54     55       <Compile Include="AssemblyInfo.cs" />
    55     56       <Compile Include="Properties\Resources.Designer.cs">

Changes to System.Data.SQLite/AssemblyInfo.cs.

    44     44   //      Major Version
    45     45   //      Minor Version 
    46     46   //      Build Number
    47     47   //      Revision
    48     48   //
    49     49   // You can specify all the values or you can default the Revision and Build Numbers 
    50     50   // by using the '*' as shown below:
    51         -[assembly: AssemblyVersion("1.0.53.0")]
           51  +[assembly: AssemblyVersion("1.0.54.0")]
    52     52   #if !PLATFORM_COMPACTFRAMEWORK
    53         -[assembly: AssemblyFileVersion("1.0.53.0")]
           53  +[assembly: AssemblyFileVersion("1.0.54.0")]
    54     54   #endif

Changes to System.Data.SQLite/SQLiteConnection.cs.

   113    113     /// </item>
   114    114     /// <item>
   115    115     /// <description>Default Timeout</description>
   116    116     /// <description>{time in seconds}<br/>The default command timeout</description>
   117    117     /// <description>N</description>
   118    118     /// <description>30</description>
   119    119     /// </item>
          120  +  /// <item>
          121  +  /// <description>Journal Mode</description>
          122  +  /// <description><b>Delete</b> - Delete the journal file after a commit<br/><b>Persist</b> - Zero out and leave the journal file on disk after a commit<br/><b>Off</b> - Disable the rollback journal entirely</description>
          123  +  /// <description>N</description>
          124  +  /// <description>Delete</description>
          125  +  /// </item>
   120    126     /// </list>
   121    127     /// </remarks>
   122    128     public sealed partial class SQLiteConnection : DbConnection, ICloneable
   123    129     {
   124    130       private const string _dataDirectory = "|DataDirectory|";
   125    131       private const string _masterdb = "sqlite_master";
   126    132       private const string _tempmasterdb = "sqlite_temp_master";
................................................................................
   525    531       /// </item>
   526    532       /// <item>
   527    533       /// <description>Default Timeout</description>
   528    534       /// <description>{time in seconds}<br/>The default command timeout</description>
   529    535       /// <description>N</description>
   530    536       /// <description>30</description>
   531    537       /// </item>
          538  +    /// <item>
          539  +    /// <description>Journal Mode</description>
          540  +    /// <description><b>Delete</b> - Delete the journal file after a commit<br/><b>Persist</b> - Zero out and leave the journal file on disk after a commit<br/><b>Off</b> - Disable the rollback journal entirely</description>
          541  +    /// <description>N</description>
          542  +    /// <description>Delete</description>
          543  +    /// </item>
   532    544       /// </list>
   533    545       /// </remarks>
   534    546   #if !PLATFORM_COMPACTFRAMEWORK
   535    547       [RefreshProperties(RefreshProperties.All), DefaultValue("")]
   536    548       [Editor("SQLite.Designer.SQLiteConnectionStringEditor, SQLite.Designer, Version=1.0.33.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
   537    549   #endif
   538    550       public override string ConnectionString
................................................................................
   777    789   
   778    790             defValue = FindKey(opts, "Cache Size", "2000");
   779    791             if (Convert.ToInt32(defValue, CultureInfo.InvariantCulture) != 2000)
   780    792             {
   781    793               cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA cache_size={0}", defValue);
   782    794               cmd.ExecuteNonQuery();
   783    795             }
          796  +
          797  +          defValue = FindKey(opts, "Journal Mode", "Delete");
          798  +          if (String.Compare(defValue, "Default", StringComparison.OrdinalIgnoreCase) != 0)
          799  +          {
          800  +            cmd.CommandText = String.Format(CultureInfo.InvariantCulture, "PRAGMA journal_mode={0}", defValue);
          801  +            cmd.ExecuteNonQuery();
          802  +          }
   784    803           }
   785    804   
   786    805   #if !PLATFORM_COMPACTFRAMEWORK
   787    806           if (Transactions.Transaction.Current != null && (FindKey(opts, "Enlist", "Y").ToUpper()[0] == 'Y'
   788    807                || Convert.ToBoolean(FindKey(opts, "Enlist", "True"), CultureInfo.CurrentCulture) == true))
   789    808             EnlistTransaction(Transactions.Transaction.Current);
   790    809   #endif

Changes to System.Data.SQLite/SQLiteConnectionStringBuilder.cs.

   363    363           else return (SQLiteDateFormats)value;
   364    364         }
   365    365         set
   366    366         {
   367    367           this["DateTimeFormat"] = value;
   368    368         }
   369    369       }
          370  +
          371  +    [Browsable(true)]
          372  +    [DefaultValue(SQLiteJournalModeEnum.Delete)]
          373  +    [DisplayName("Journal Mode")]
          374  +    public SQLiteJournalModeEnum JournalMode
          375  +    {
          376  +      get
          377  +      {
          378  +        object value;
          379  +        TryGetValue("Journal Mode", out value);
          380  +        if (value is string)
          381  +          return (SQLiteJournalModeEnum)TypeDescriptor.GetConverter(typeof(SQLiteJournalModeEnum)).ConvertFrom(value);
          382  +        else
          383  +          return (SQLiteJournalModeEnum)value;
          384  +      }
          385  +      set
          386  +      {
          387  +        this["Journal Mode"] = value;
          388  +      }
          389  +    }
   370    390   
   371    391       /// <summary>
   372    392       /// Helper function for retrieving values from the connectionstring
   373    393       /// </summary>
   374    394       /// <param name="keyword">The keyword to retrieve settings for</param>
   375    395       /// <param name="value">The resulting parameter value</param>
   376    396       /// <returns>Returns true if the value was found and returned</returns>

Changes to System.Data.SQLite/SQLiteConvert.cs.

    55     55       /// <summary>
    56     56       /// Used internally
    57     57       /// </summary>
    58     58       None = 11,
    59     59     }
    60     60   
    61     61     /// <summary>
    62         -  /// This implementation of SQLite for ADO.NET can process date/time fields in databases in only one of two formats.  Ticks and ISO8601.
           62  +  /// This implementation of SQLite for ADO.NET can process date/time fields in databases in only one of three formats.  Ticks, ISO8601
           63  +  /// and JulianDay.
    63     64     /// Ticks is inherently more accurate, but less compatible with 3rd party tools that query the database, and renders the DateTime field
    64         -  /// unreadable without post-processing.
           65  +  /// unreadable as text without post-processing.
    65     66     /// ISO8601 is more compatible, readable, fully-processable, but less accurate as it doesn't provide time down to fractions of a second.
           67  +  /// JulianDay is the numeric format the SQLite uses internally and is arguably the most compatible with 3rd party tools.  It is
           68  +  /// not readable as text without post-processing.
    66     69     /// </summary>
    67     70     public enum SQLiteDateFormats
    68     71     {
    69     72       /// <summary>
    70     73       /// Using ticks is more accurate but less compatible with other viewers and utilities that access your database.
    71     74       /// </summary>
    72     75       Ticks = 0,
................................................................................
    75     78       /// </summary>
    76     79       ISO8601 = 1,
    77     80       /// <summary>
    78     81       /// JulianDay format, which is what SQLite uses internally
    79     82       /// </summary>
    80     83       JulianDay = 2
    81     84     }
           85  +
           86  +  /// <summary>
           87  +  /// This enum determines how SQLite treats its journal file.
           88  +  /// </summary>
           89  +  /// <remarks>
           90  +  /// By default SQLite will create and delete the journal file when needed during a transaction.
           91  +  /// However, for some computers running certain filesystem monitoring tools, the rapid
           92  +  /// creation and deletion of the journal file can cause those programs to fail, or to interfere with SQLite.
           93  +  /// 
           94  +  /// If a program or virus scanner is interfering with SQLite's journal file, you may receive errors like "unable to open database file"
           95  +  /// when starting a transaction.  If this is happening, you may want to change the default journal mode to Persist.
           96  +  /// </remarks>
           97  +  public enum SQLiteJournalModeEnum
           98  +  {
           99  +    /// <summary>
          100  +    /// The default mode, this causes SQLite to create and destroy the journal file as-needed.
          101  +    /// </summary>
          102  +    Delete = 0,
          103  +    /// <summary>
          104  +    /// When this is set, SQLite will keep the journal file even after a transaction has completed.  It's contents will be erased,
          105  +    /// and the journal re-used as often as needed.  If it is deleted, it will be recreated the next time it is needed.
          106  +    /// </summary>
          107  +    Persist = 1,
          108  +    /// <summary>
          109  +    /// This option disables the rollback journal entirely.  Interrupted transactions or a program crash can cause database
          110  +    /// corruption in this mode!
          111  +    /// </summary>
          112  +    Off = 2
          113  +  }
    82    114   
    83    115     /// <summary>
    84    116     /// Struct used internally to determine the datatype of a column in a resultset
    85    117     /// </summary>
    86    118     internal class SQLiteType
    87    119     {
    88    120       /// <summary>

Changes to System.Data.SQLite/SQLiteDataReader.cs.

   176    176   
   177    177       /// <summary>
   178    178       /// Enumerator support
   179    179       /// </summary>
   180    180       /// <returns>Returns a DbEnumerator object.</returns>
   181    181       public override Collections.IEnumerator GetEnumerator()
   182    182       {
   183         -      return new DbEnumerator(this);
          183  +      return new DbEnumerator(this, ((_commandBehavior & CommandBehavior.CloseConnection) == CommandBehavior.CloseConnection));
   184    184       }
   185    185   
   186    186       /// <summary>
   187    187       /// Not implemented.  Returns 0
   188    188       /// </summary>
   189    189       public override int Depth
   190    190       {

Changes to bin/CompactFramework/System.Data.SQLite.DLL.

cannot compute difference between binary files

Changes to bin/CompactFramework/System.Data.SQLite.lib.

cannot compute difference between binary files

Changes to bin/CompactFramework/testce.exe.

cannot compute difference between binary files

Changes to bin/Designer/SQLite.Designer.dll.

cannot compute difference between binary files

Changes to bin/Designer/SQLite.Designer.pdb.

cannot compute difference between binary files

Changes to bin/Designer/System.Data.SQLite.Linq.dll.

cannot compute difference between binary files

Changes to bin/Designer/System.Data.SQLite.Linq.pdb.

cannot compute difference between binary files

Changes to bin/Designer/install.exe.

cannot compute difference between binary files

Changes to bin/Designer/install.pdb.

cannot compute difference between binary files

Changes to bin/System.Data.SQLite.XML.

   103    103               </item>
   104    104               <item>
   105    105               <description>Default Timeout</description>
   106    106               <description>{time in seconds}<br/>The default command timeout</description>
   107    107               <description>N</description>
   108    108               <description>30</description>
   109    109               </item>
          110  +            <item>
          111  +            <description>Journal Mode</description>
          112  +            <description><b>Delete</b> - Delete the journal file after a commit<br/><b>Persist</b> - Zero out and leave the journal file on disk after a commit<br/><b>Off</b> - Disable the rollback journal entirely</description>
          113  +            <description>N</description>
          114  +            <description>Delete</description>
          115  +            </item>
   110    116               </list>
   111    117               </remarks>
   112    118           </member>
   113    119           <member name="F:System.Data.SQLite.SQLiteConnection._connectionState">
   114    120               <summary>
   115    121               State of the current connection
   116    122               </summary>
................................................................................
   587    593               </item>
   588    594               <item>
   589    595               <description>Default Timeout</description>
   590    596               <description>{time in seconds}<br/>The default command timeout</description>
   591    597               <description>N</description>
   592    598               <description>30</description>
   593    599               </item>
          600  +            <item>
          601  +            <description>Journal Mode</description>
          602  +            <description><b>Delete</b> - Delete the journal file after a commit<br/><b>Persist</b> - Zero out and leave the journal file on disk after a commit<br/><b>Off</b> - Disable the rollback journal entirely</description>
          603  +            <description>N</description>
          604  +            <description>Delete</description>
          605  +            </item>
   594    606               </list>
   595    607               </remarks>
   596    608           </member>
   597    609           <member name="P:System.Data.SQLite.SQLiteConnection.DataSource">
   598    610               <summary>
   599    611               Returns the filename without extension or path
   600    612               </summary>
................................................................................
   758    770           <member name="F:System.Data.SQLite.TypeAffinity.None">
   759    771               <summary>
   760    772               Used internally
   761    773               </summary>
   762    774           </member>
   763    775           <member name="T:System.Data.SQLite.SQLiteDateFormats">
   764    776               <summary>
   765         -            This implementation of SQLite for ADO.NET can process date/time fields in databases in only one of two formats.  Ticks and ISO8601.
          777  +            This implementation of SQLite for ADO.NET can process date/time fields in databases in only one of three formats.  Ticks, ISO8601
          778  +            and JulianDay.
   766    779               Ticks is inherently more accurate, but less compatible with 3rd party tools that query the database, and renders the DateTime field
   767         -            unreadable without post-processing.
          780  +            unreadable as text without post-processing.
   768    781               ISO8601 is more compatible, readable, fully-processable, but less accurate as it doesn't provide time down to fractions of a second.
          782  +            JulianDay is the numeric format the SQLite uses internally and is arguably the most compatible with 3rd party tools.  It is
          783  +            not readable as text without post-processing.
   769    784               </summary>
   770    785           </member>
   771    786           <member name="F:System.Data.SQLite.SQLiteDateFormats.Ticks">
   772    787               <summary>
   773    788               Using ticks is more accurate but less compatible with other viewers and utilities that access your database.
   774    789               </summary>
   775    790           </member>
................................................................................
   778    793               The default format for this provider.
   779    794               </summary>
   780    795           </member>
   781    796           <member name="F:System.Data.SQLite.SQLiteDateFormats.JulianDay">
   782    797               <summary>
   783    798               JulianDay format, which is what SQLite uses internally
   784    799               </summary>
          800  +        </member>
          801  +        <member name="T:System.Data.SQLite.SQLiteJournalModeEnum">
          802  +            <summary>
          803  +            This enum determines how SQLite treats its journal file.
          804  +            </summary>
          805  +            <remarks>
          806  +            By default SQLite will create and delete the journal file when needed during a transaction.
          807  +            However, for some computers running certain filesystem monitoring tools, the rapid
          808  +            creation and deletion of the journal file can cause those programs to fail, or to interfere with SQLite.
          809  +            
          810  +            If a program or virus scanner is interfering with SQLite's journal file, you may receive errors like "unable to open database file"
          811  +            when starting a transaction.  If this is happening, you may want to change the default journal mode to Persist.
          812  +            </remarks>
          813  +        </member>
          814  +        <member name="F:System.Data.SQLite.SQLiteJournalModeEnum.Delete">
          815  +            <summary>
          816  +            The default mode, this causes SQLite to create and destroy the journal file as-needed.
          817  +            </summary>
          818  +        </member>
          819  +        <member name="F:System.Data.SQLite.SQLiteJournalModeEnum.Persist">
          820  +            <summary>
          821  +            When this is set, SQLite will keep the journal file even after a transaction has completed.  It's contents will be erased,
          822  +            and the journal re-used as often as needed.  If it is deleted, it will be recreated the next time it is needed.
          823  +            </summary>
          824  +        </member>
          825  +        <member name="F:System.Data.SQLite.SQLiteJournalModeEnum.Off">
          826  +            <summary>
          827  +            This option disables the rollback journal entirely.  Interrupted transactions or a program crash can cause database
          828  +            corruption in this mode!
          829  +            </summary>
   785    830           </member>
   786    831           <member name="T:System.Data.SQLite.SQLiteType">
   787    832               <summary>
   788    833               Struct used internally to determine the datatype of a column in a resultset
   789    834               </summary>
   790    835           </member>
   791    836           <member name="F:System.Data.SQLite.SQLiteType.Type">
................................................................................
  2236   2281           </member>
  2237   2282           <member name="M:System.Data.SQLite.SQLiteBase.SQLiteLastError">
  2238   2283               <summary>
  2239   2284               Returns the text of the last error issued by SQLite
  2240   2285               </summary>
  2241   2286               <returns></returns>
  2242   2287           </member>
  2243         -        <member name="M:System.Data.SQLite.SQLiteBase.Prepare(System.Data.SQLite.SQLiteConnection,System.String,System.Data.SQLite.SQLiteStatement,System.String@)">
         2288  +        <member name="M:System.Data.SQLite.SQLiteBase.Prepare(System.Data.SQLite.SQLiteConnection,System.String,System.Data.SQLite.SQLiteStatement,System.UInt32,System.String@)">
  2244   2289               <summary>
  2245   2290               Prepares a SQL statement for execution.
  2246   2291               </summary>
  2247   2292               <param name="cnn">The source connection preparing the command.  Can be null for any caller except LINQ</param>
  2248   2293               <param name="strSql">The SQL command text to prepare</param>
  2249   2294               <param name="previous">The previous statement in a multi-statement command, or null if no previous statement exists</param>
         2295  +            <param name="timeoutMS">The timeout to wait before aborting the prepare</param>
  2250   2296               <param name="strRemain">The remainder of the statement that was not processed.  Each call to prepare parses the
  2251   2297               SQL up to to either the end of the text or to the first semi-colon delimiter.  The remaining text is returned
  2252   2298               here for a subsequent call to Prepare() until all the text has been processed.</param>
  2253   2299               <returns>Returns an initialized SQLiteStatement.</returns>
  2254   2300           </member>
  2255   2301           <member name="M:System.Data.SQLite.SQLiteBase.Step(System.Data.SQLite.SQLiteStatement)">
  2256   2302               <summary>

Changes to bin/System.Data.SQLite.dll.

cannot compute difference between binary files

Changes to bin/System.Data.SQLite.lib.

cannot compute difference between binary files

Changes to bin/itanium/System.Data.SQLite.DLL.

cannot compute difference between binary files

Changes to bin/itanium/System.Data.SQLite.lib.

cannot compute difference between binary files

Changes to bin/test.exe.

cannot compute difference between binary files

Changes to bin/x64/System.Data.SQLite.DLL.

cannot compute difference between binary files

Changes to bin/x64/System.Data.SQLite.lib.

cannot compute difference between binary files

Changes to readme.htm.

     1      1   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     2      2   <html>
     3      3     <head>
     4      4       <title></title>
     5      5     </head>
     6      6     <body>
     7      7       ADO.NET 2.0 SQLite Data Provider<br>
     8         -    Version 1.0.53.0 July 24, 2008<br>
            8  +    Version 1.0.54.0 July 25, 2008<br>
     9      9       Using SQLite 3.6.0<br>
    10     10       Written by Robert Simpson (<a href="mailto:robert@blackcastlesoft.com">robert@blackcastlesoft.com</a>)<br>
    11     11       Released to the public domain, use at your own risk!<br>
    12     12       Official provider website:&nbsp; <a href="http://sqlite.phxsoftware.com">http://sqlite.phxsoftware.com</a><br />
    13     13       <br>
    14     14       The latest version can be downloaded <a href="http://sourceforge.net/projects/sqlite-dotnet2">
    15     15         here</a>
................................................................................
   116    116       <p>
   117    117         The core sqlite engine is compiled directly from the unmodified source code available
   118    118         at the sqlite.org website.&nbsp; Several additional pieces are compiled on top of
   119    119         it to extend its functionality, but the core engine's source is not changed.</p>
   120    120       <p></p>
   121    121       <p>
   122    122         <b>Version History</b></p>
          123  +    <p><b>1.0.54.0 - July 25, 2008</b></p>
          124  +    <ul>
          125  +      <li>Fixed the setup project, which somehow &quot;forgot&quot; to include all the binaries in 
          126  +        the 53 release.</li>
          127  +      <li>Fixed a crash in the table designer when creating a new table and tabbing past 
          128  +        the &quot;Allow Nulls&quot; cell in the grid while creating a new column.</li>
          129  +      <li>Fixed a mostly-benign bug in SQLiteDataReader&#39;s GetEnumerator, which failed to 
          130  +        pass along a flag to the underyling DbEnumerator it creates.&nbsp; This one&#39;s 
          131  +        been around since day 1 and nobody&#39;s noticed it in all these years.</li>
          132  +      <li>Added a new connection string parameter &quot;Journal Mode&quot; that allows you to set 
          133  +        the SQLite journal mode to Delete, Persist or Off.</li>
          134  +    </ul>
   123    135       <p><b>1.0.53.0 - July 24, 2008</b></p>
   124    136       <ul>
   125    137         <li>Enabled sqlite_load_extension</li>
   126    138         <li>Added retry/timeout code to SQLite3.Prepare() when preparing statements for 
   127    139           execution and a SQLITE_BUSY error occurs.</li>
   128    140         <li>Added a new schema to SQLiteConnection.GetSchema() called <i>Triggers</i>.&nbsp; 
   129    141           Used to retrieve the trigger(s) associated with a database and/or table/view.</li>

Changes to test/Program.cs.

    14     14       {
    15     15         if (System.IO.File.Exists("test.db3"))
    16     16           System.IO.File.Delete("test.db3");
    17     17   
    18     18         DbProviderFactory fact;
    19     19         fact = DbProviderFactories.GetFactory("System.Data.SQLite");
    20     20   
    21         -      SQLiteConnection cnn = new SQLiteConnection();
           21  +      DbConnection cnn = fact.CreateConnection();
    22     22         {
    23         -        cnn.ConnectionString = "Data Source=test.db3;Pooling=False;Password=testing";
           23  +        cnn.ConnectionString = "Data Source=test.db3;Pooling=False;FailIfMissing=False";
    24     24           cnn.Open();
           25  +
           26  +        using (DbCommand cmd = cnn.CreateCommand())
           27  +        {
           28  +          cmd.CommandText = "TYPES integer, nvarchar, double;SELECT 1, 2, 3;";
           29  +          using (DbDataReader reader = cmd.ExecuteReader())
           30  +          {
           31  +            reader.Read();
           32  +          }
           33  +        }
    25     34   
    26     35           TestCases.Run(fact, cnn);
    27     36         }
    28     37   
    29     38         Console.ReadKey();
    30     39       }
    31     40   

Changes to test/TestCases.cs.

   161    161       internal static void DisposePattenTest(DbConnection cnn)
   162    162       {
   163    163         DbConnection newcnn = ((ICloneable)cnn).Clone() as DbConnection;
   164    164         try
   165    165         {
   166    166           for (int x = 0; x < 10000; x++)
   167    167           {
          168  +          if (newcnn.State != ConnectionState.Open) 
          169  +            newcnn.Open();
   168    170             DbCommand cmd = newcnn.CreateCommand();
   169    171             cmd.CommandText = "SELECT * FROM TestCase";
   170    172             DbDataReader reader = cmd.ExecuteReader();
   171    173             reader.Read();
   172    174   
   173    175             if (x % 500 == 0)
   174    176             {
................................................................................
   220    222   
   221    223           p1.Value = 1.01;
   222    224           p2.Value = now;
   223    225           p3.Value = (Decimal)9.91;
   224    226           cmd.ExecuteNonQuery();
   225    227   
   226    228           cmd.CommandText = "select myvalue, datetimevalue, decimalvalue from datatypetest";
          229  +        cmd.Parameters.Clear();
   227    230           using (DbDataReader reader = cmd.ExecuteReader())
   228    231           {
   229    232             for (int n = 0; n < 3; n++)
   230    233             {
   231    234               reader.Read();
   232    235               if (reader.GetValue(1).GetType() != reader.GetDateTime(1).GetType()) throw new ArgumentOutOfRangeException();
   233    236               if (reader.GetValue(2).GetType() != reader.GetDecimal(2).GetType()) throw new ArgumentOutOfRangeException();
................................................................................
   365    368             name.Value = names[n];
   366    369             ingredient.Value = ingredients[n];
   367    370   
   368    371             cmd.ExecuteNonQuery();
   369    372           }
   370    373   
   371    374           cmd.CommandText = "select rowid, name, ingredients from FullText where name match 'pie';";
          375  +        cmd.Parameters.Clear();
   372    376   
   373    377           int[] rowids = { 3, 4 };
   374    378           n = 0;
   375    379   
   376    380           using (DbDataReader reader = cmd.ExecuteReader())
   377    381           {
   378    382             while (reader.Read())
................................................................................
   387    391       }
   388    392       internal static void TransactionTest(DbConnection cnn)
   389    393       {
   390    394         using (TransactionScope scope = new TransactionScope())
   391    395         {
   392    396           using (DbConnection cnn2 = ((ICloneable)cnn).Clone() as DbConnection)
   393    397           {
          398  +          if (cnn2.State != ConnectionState.Open) cnn2.Open();
   394    399             using (DbCommand cmd = cnn2.CreateCommand())
   395    400             {
   396    401               // Created a table inside the transaction scope
   397    402               cmd.CommandText = "CREATE TABLE VolatileTable (ID INTEGER PRIMARY KEY, MyValue VARCHAR(50))";
   398    403               cmd.ExecuteNonQuery();
   399    404   
   400    405               using (DbCommand cmd2 = cnn2.CreateCommand())
................................................................................
   418    423         {
   419    424           cmd.CommandText = "SELECT COUNT(*) FROM VolatileTable";
   420    425           try
   421    426           {
   422    427             object o = cmd.ExecuteScalar();
   423    428             throw new InvalidOperationException("Transaction failed! The table exists!");
   424    429           }
   425         -        catch(SQLiteException)
          430  +        catch(Exception e)
   426    431           {
          432  +          if (e is InvalidOperationException) throw;
   427    433             return; // Succeeded, the table should not have existed
   428    434           }
   429    435         }
   430    436       }
   431    437   
   432    438       internal static void CreateTable(DbConnection cnn)
   433    439       {
................................................................................
   464    470           Guid guid = Guid.NewGuid();
   465    471   
   466    472           cmd.CommandText = "CREATE TABLE GuidTest(MyGuid GUID)";
   467    473           cmd.ExecuteNonQuery();
   468    474   
   469    475           // Insert a guid as a default binary representation
   470    476           cmd.CommandText = "INSERT INTO GuidTest(MyGuid) VALUES(@b)";
   471         -        ((SQLiteParameterCollection)cmd.Parameters).AddWithValue("@b", guid);
          477  +        DbParameter parm = cmd.CreateParameter();
          478  +        parm.ParameterName = "@b";
          479  +        parm.Value = guid;
          480  +        cmd.Parameters.Add(parm);
          481  +        //((SQLiteParameterCollection)cmd.Parameters).AddWithValue("@b", guid);
   472    482   
   473    483           // Insert a guid as text
   474    484           cmd.ExecuteNonQuery();
   475    485           cmd.Parameters[0].Value = guid.ToString();
   476    486           cmd.Parameters[0].DbType = DbType.String;
   477    487           cmd.ExecuteNonQuery();
   478    488   
   479    489           cmd.CommandText = "SELECT MyGuid FROM GuidTest";
          490  +        cmd.Parameters.Clear();
          491  +
   480    492           using (DbDataReader reader = cmd.ExecuteReader())
   481    493           {
   482    494             reader.Read();
   483    495             if (reader.GetFieldType(0) != typeof(Guid)) throw new ArgumentException("Column is not a Guid");
   484    496             if (reader.GetGuid(0) != guid) throw new ArgumentException("Guids don't match!");
   485    497   
   486    498             reader.Read();
................................................................................
   646    658             if (b[100] != 2) throw new ArgumentException();
   647    659             if (b[1000] != 3) throw new ArgumentException();
   648    660             if (b[2000] != 4) throw new ArgumentException();
   649    661             if (b[3000] != 5) throw new ArgumentException();
   650    662   
   651    663             using (DbConnection clone = (DbConnection)((ICloneable)cnn).Clone())
   652    664             {
          665  +            if (clone.State != ConnectionState.Open) clone.Open();
   653    666               using (DbCommand newcmd = clone.CreateCommand())
   654    667               {
   655    668                 newcmd.CommandText = "DELETE FROM TestCase WHERE Field6 IS NULL";
   656    669                 newcmd.CommandTimeout = 2;
   657    670                 int cmdStart = Environment.TickCount;
   658    671                 int cmdEnd;
   659    672   
................................................................................
   937    950               cmdwrite.CommandTimeout = 5;
   938    951   
   939    952               int dwtick = Environment.TickCount;
   940    953               try
   941    954               {
   942    955                 cmdwrite.ExecuteNonQuery();
   943    956               }
   944         -            catch (SQLiteException)
          957  +            catch (Exception)
   945    958               {
   946    959                 dwtick = (Environment.TickCount - dwtick) / 1000;
   947    960                 if (dwtick < 5 || dwtick > 6)
   948    961                   throw new ArgumentOutOfRangeException();
   949    962   
   950    963                 return;
   951    964               }

Changes to tools/setup/exe/setup/setup.rc.

    53     53   
    54     54   /////////////////////////////////////////////////////////////////////////////
    55     55   //
    56     56   // Version
    57     57   //
    58     58   
    59     59   VS_VERSION_INFO VERSIONINFO
    60         - FILEVERSION 1,0,53,0
           60  + FILEVERSION 1,0,54,0
    61     61    PRODUCTVERSION 1,0,0,0
    62     62    FILEFLAGSMASK 0x17L
    63     63   #ifdef _DEBUG
    64     64    FILEFLAGS 0x1L
    65     65   #else
    66     66    FILEFLAGS 0x0L
    67     67   #endif
................................................................................
    71     71   BEGIN
    72     72       BLOCK "StringFileInfo"
    73     73       BEGIN
    74     74           BLOCK "040904b0"
    75     75           BEGIN
    76     76               VALUE "Comments", "http://sqlite.phxsoftware.com"
    77     77               VALUE "FileDescription", "SQLite ADO.NET 2.0 Setup"
    78         -            VALUE "FileVersion", "1.0.53.0"
           78  +            VALUE "FileVersion", "1.0.54.0"
    79     79               VALUE "InternalName", "setup"
    80     80               VALUE "LegalCopyright", "Released to the public domain"
    81     81               VALUE "OriginalFilename", "setup.exe"
    82     82               VALUE "ProductName", "System.Data.SQLite"
    83     83               VALUE "ProductVersion", "1.0"
    84     84           END
    85     85       END

Changes to tools/setup/sqlite_setup.suo.

cannot compute difference between binary files

Changes to tools/setup/sqlite_setup.vdproj.

    10     10   "SccProjectName" = "8:"
    11     11   "SccLocalPath" = "8:"
    12     12   "SccAuxPath" = "8:"
    13     13   "SccProvider" = "8:"
    14     14       "Hierarchy"
    15     15       {
    16     16           "Entry"
           17  +        {
           18  +        "MsmKey" = "8:_044EDE4C16AD134694792A140820F40E"
           19  +        "OwnerKey" = "8:_40F352185F3B41A485F42BFC64BF9162"
           20  +        "MsmSig" = "8:_UNDEFINED"
           21  +        }
           22  +        "Entry"
    17     23           {
    18     24           "MsmKey" = "8:_055B2BCD025C40A08F3B155843F41702"
    19     25           "OwnerKey" = "8:_UNDEFINED"
    20     26           "MsmSig" = "8:_UNDEFINED"
    21     27           }
    22     28           "Entry"
    23     29           {
................................................................................
    69     75           }
    70     76           "Entry"
    71     77           {
    72     78           "MsmKey" = "8:_3578C7AADEF926410602B18EDBBEFFF9"
    73     79           "OwnerKey" = "8:_244D4945EA335F5E4E54085BFD020CC1"
    74     80           "MsmSig" = "8:_UNDEFINED"
    75     81           }
    76         -        "Entry"
    77         -        {
    78         -        "MsmKey" = "8:_3FC53DB84F275D50099C4F2A30AE6DC3"
    79         -        "OwnerKey" = "8:_29B62FDE3E56411381A6E8B358CBB0F5"
    80         -        "MsmSig" = "8:_UNDEFINED"
    81         -        }
    82         -        "Entry"
    83         -        {
    84         -        "MsmKey" = "8:_3FC53DB84F275D50099C4F2A30AE6DC3"
    85         -        "OwnerKey" = "8:_2C7EDFF06B61482393D94E3A63D90113"
    86         -        "MsmSig" = "8:_UNDEFINED"
    87         -        }
    88     82           "Entry"
    89     83           {
    90     84           "MsmKey" = "8:_40DFF08BA903482D807E715A041CA8B1"
    91     85           "OwnerKey" = "8:_UNDEFINED"
    92     86           "MsmSig" = "8:_UNDEFINED"
    93     87           }
    94     88           "Entry"
................................................................................
   141    135           }
   142    136           "Entry"
   143    137           {
   144    138           "MsmKey" = "8:_60E2C442F77C48DE8150EBFC86663225"
   145    139           "OwnerKey" = "8:_UNDEFINED"
   146    140           "MsmSig" = "8:_UNDEFINED"
   147    141           }
   148         -        "Entry"
   149         -        {
   150         -        "MsmKey" = "8:_7A5526750394E83A77FEAF65EFEF3719"
   151         -        "OwnerKey" = "8:_40F352185F3B41A485F42BFC64BF9162"
   152         -        "MsmSig" = "8:_UNDEFINED"
   153         -        }
   154    142           "Entry"
   155    143           {
   156    144           "MsmKey" = "8:_9352653B827F735B8C3BE81D11522ECC"
   157    145           "OwnerKey" = "8:_B00FB4712154B7A5894294702C96689D"
   158    146           "MsmSig" = "8:_UNDEFINED"
   159    147           }
   160    148           "Entry"
................................................................................
   268    256           "Entry"
   269    257           {
   270    258           "MsmKey" = "8:_E6DB5A9B08AC4645A19C948BBFDD0348"
   271    259           "OwnerKey" = "8:_244D4945EA335F5E4E54085BFD020CC1"
   272    260           "MsmSig" = "8:_UNDEFINED"
   273    261           }
   274    262           "Entry"
          263  +        {
          264  +        "MsmKey" = "8:_EC85386E50BF8C0CE5206F2C19EA6FA2"
          265  +        "OwnerKey" = "8:_29B62FDE3E56411381A6E8B358CBB0F5"
          266  +        "MsmSig" = "8:_UNDEFINED"
          267  +        }
          268  +        "Entry"
          269  +        {
          270  +        "MsmKey" = "8:_EC85386E50BF8C0CE5206F2C19EA6FA2"
          271  +        "OwnerKey" = "8:_2C7EDFF06B61482393D94E3A63D90113"
          272  +        "MsmSig" = "8:_UNDEFINED"
          273  +        }
          274  +        "Entry"
   275    275           {
   276    276           "MsmKey" = "8:_UNDEFINED"
   277    277           "OwnerKey" = "8:_B29C75F5F4D24817846DCEF9951068E1"
   278    278           "MsmSig" = "8:_UNDEFINED"
   279    279           }
   280    280           "Entry"
   281    281           {
................................................................................
   324    324           "MsmKey" = "8:_UNDEFINED"
   325    325           "OwnerKey" = "8:_40F352185F3B41A485F42BFC64BF9162"
   326    326           "MsmSig" = "8:_UNDEFINED"
   327    327           }
   328    328           "Entry"
   329    329           {
   330    330           "MsmKey" = "8:_UNDEFINED"
   331         -        "OwnerKey" = "8:_7A5526750394E83A77FEAF65EFEF3719"
          331  +        "OwnerKey" = "8:_044EDE4C16AD134694792A140820F40E"
   332    332           "MsmSig" = "8:_UNDEFINED"
   333    333           }
   334    334           "Entry"
   335    335           {
   336    336           "MsmKey" = "8:_UNDEFINED"
   337    337           "OwnerKey" = "8:_40DFF08BA903482D807E715A041CA8B1"
   338    338           "MsmSig" = "8:_UNDEFINED"
................................................................................
   354    354           "MsmKey" = "8:_UNDEFINED"
   355    355           "OwnerKey" = "8:_29B62FDE3E56411381A6E8B358CBB0F5"
   356    356           "MsmSig" = "8:_UNDEFINED"
   357    357           }
   358    358           "Entry"
   359    359           {
   360    360           "MsmKey" = "8:_UNDEFINED"
   361         -        "OwnerKey" = "8:_3FC53DB84F275D50099C4F2A30AE6DC3"
          361  +        "OwnerKey" = "8:_EC85386E50BF8C0CE5206F2C19EA6FA2"
   362    362           "MsmSig" = "8:_UNDEFINED"
   363    363           }
   364    364           "Entry"
   365    365           {
   366    366           "MsmKey" = "8:_UNDEFINED"
   367    367           "OwnerKey" = "8:_244D4945EA335F5E4E54085BFD020CC1"
   368    368           "MsmSig" = "8:_UNDEFINED"
................................................................................
   499    499                   "AllowLaterVersions" = "11:TRUE"
   500    500                   "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=9832"
   501    501                   }
   502    502               }
   503    503           }
   504    504           "File"
   505    505           {
          506  +            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_044EDE4C16AD134694792A140820F40E"
          507  +            {
          508  +            "AssemblyRegister" = "3:1"
          509  +            "AssemblyIsInGAC" = "11:TRUE"
          510  +            "AssemblyAsmDisplayName" = "8:System.Data.SQLite, Version=1.0.54.0, Culture=neutral, PublicKeyToken=1fdb50b1b62b4c84, processorArchitecture=MSIL"
          511  +                "ScatterAssemblies"
          512  +                {
          513  +                    "_044EDE4C16AD134694792A140820F40E"
          514  +                    {
          515  +                    "Name" = "8:System.Data.SQLite.dll"
          516  +                    "Attributes" = "3:512"
          517  +                    }
          518  +                }
          519  +            "SourcePath" = "8:System.Data.SQLite.dll"
          520  +            "TargetName" = "8:"
          521  +            "Tag" = "8:"
          522  +            "Folder" = "8:_10C8E86E2EEF451BB40F774C35C5466F"
          523  +            "Condition" = "8:"
          524  +            "Transitive" = "11:FALSE"
          525  +            "Vital" = "11:TRUE"
          526  +            "ReadOnly" = "11:FALSE"
          527  +            "Hidden" = "11:FALSE"
          528  +            "System" = "11:FALSE"
          529  +            "Permanent" = "11:FALSE"
          530  +            "SharedLegacy" = "11:FALSE"
          531  +            "PackageAs" = "3:1"
          532  +            "Register" = "3:1"
          533  +            "Exclude" = "11:FALSE"
          534  +            "IsDependency" = "11:TRUE"
          535  +            "IsolateTo" = "8:"
          536  +            }
   506    537               "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_055B2BCD025C40A08F3B155843F41702"
   507    538               {
   508    539               "SourcePath" = "8:..\\..\\bin\\test.exe.config"
   509    540               "TargetName" = "8:test.exe.config"
   510    541               "Tag" = "8:"
   511    542               "Folder" = "8:_30C77BF2E6E84D01ADE5FB8BA2F81504"
   512    543               "Condition" = "8:"
................................................................................
   667    698               "IsDependency" = "11:FALSE"
   668    699               "IsolateTo" = "8:"
   669    700               }
   670    701               "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_2C7EDFF06B61482393D94E3A63D90113"
   671    702               {
   672    703               "AssemblyRegister" = "3:1"
   673    704               "AssemblyIsInGAC" = "11:FALSE"
   674         -            "AssemblyAsmDisplayName" = "8:test, Version=1.0.0.41107, Culture=neutral, processorArchitecture=x86"
          705  +            "AssemblyAsmDisplayName" = "8:test, Version=1.0.0.37698, Culture=neutral, processorArchitecture=x86"
   675    706                   "ScatterAssemblies"
   676    707                   {
   677    708                       "_2C7EDFF06B61482393D94E3A63D90113"
   678    709                       {
   679    710                       "Name" = "8:test.exe"
   680    711                       "Attributes" = "3:512"
   681    712                       }
................................................................................
   776    807               "SharedLegacy" = "11:FALSE"
   777    808               "PackageAs" = "3:1"
   778    809               "Register" = "3:1"
   779    810               "Exclude" = "11:TRUE"
   780    811               "IsDependency" = "11:TRUE"
   781    812               "IsolateTo" = "8:"
   782    813               }
   783         -            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_3FC53DB84F275D50099C4F2A30AE6DC3"
   784         -            {
   785         -            "AssemblyRegister" = "3:1"
   786         -            "AssemblyIsInGAC" = "11:TRUE"
   787         -            "AssemblyAsmDisplayName" = "8:System.Data.SQLite, Version=1.0.53.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86"
   788         -                "ScatterAssemblies"
   789         -                {
   790         -                    "_3FC53DB84F275D50099C4F2A30AE6DC3"
   791         -                    {
   792         -                    "Name" = "8:System.Data.SQLite.dll"
   793         -                    "Attributes" = "3:512"
   794         -                    }
   795         -                }
   796         -            "SourcePath" = "8:System.Data.SQLite.dll"
   797         -            "TargetName" = "8:"
   798         -            "Tag" = "8:"
   799         -            "Folder" = "8:_F11D54EE0EEA4BF59B52E621630B6A2E"
   800         -            "Condition" = "8:"
   801         -            "Transitive" = "11:FALSE"
   802         -            "Vital" = "11:TRUE"
   803         -            "ReadOnly" = "11:FALSE"
   804         -            "Hidden" = "11:FALSE"
   805         -            "System" = "11:FALSE"
   806         -            "Permanent" = "11:FALSE"
   807         -            "SharedLegacy" = "11:FALSE"
   808         -            "PackageAs" = "3:1"
   809         -            "Register" = "3:1"
   810         -            "Exclude" = "11:FALSE"
   811         -            "IsDependency" = "11:TRUE"
   812         -            "IsolateTo" = "8:"
   813         -            }
   814    814               "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_40DFF08BA903482D807E715A041CA8B1"
   815    815               {
   816    816               "AssemblyRegister" = "3:1"
   817    817               "AssemblyIsInGAC" = "11:FALSE"
   818         -            "AssemblyAsmDisplayName" = "8:install, Version=1.0.0.41201, Culture=neutral, processorArchitecture=x86"
          818  +            "AssemblyAsmDisplayName" = "8:install, Version=1.0.0.37539, Culture=neutral, processorArchitecture=x86"
   819    819                   "ScatterAssemblies"
   820    820                   {
   821    821                       "_40DFF08BA903482D807E715A041CA8B1"
   822    822                       {
   823    823                       "Name" = "8:install.exe"
   824    824                       "Attributes" = "3:512"
   825    825                       }
................................................................................
   842    842               "IsDependency" = "11:FALSE"
   843    843               "IsolateTo" = "8:"
   844    844               }
   845    845               "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_40F352185F3B41A485F42BFC64BF9162"
   846    846               {
   847    847               "AssemblyRegister" = "3:1"
   848    848               "AssemblyIsInGAC" = "11:FALSE"
   849         -            "AssemblyAsmDisplayName" = "8:testce, Version=1.0.0.41030, Culture=neutral, processorArchitecture=MSIL"
          849  +            "AssemblyAsmDisplayName" = "8:testce, Version=1.0.0.37552, Culture=neutral, processorArchitecture=MSIL"
   850    850                   "ScatterAssemblies"
   851    851                   {
   852    852                       "_40F352185F3B41A485F42BFC64BF9162"
   853    853                       {
   854    854                       "Name" = "8:testce.exe"
   855    855                       "Attributes" = "3:512"
   856    856                       }
................................................................................
   951    951               "SharedLegacy" = "11:FALSE"
   952    952               "PackageAs" = "3:1"
   953    953               "Register" = "3:1"
   954    954               "Exclude" = "11:FALSE"
   955    955               "IsDependency" = "11:FALSE"
   956    956               "IsolateTo" = "8:"
   957    957               }
   958         -            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_7A5526750394E83A77FEAF65EFEF3719"
   959         -            {
   960         -            "AssemblyRegister" = "3:1"
   961         -            "AssemblyIsInGAC" = "11:TRUE"
   962         -            "AssemblyAsmDisplayName" = "8:System.Data.SQLite, Version=1.0.53.0, Culture=neutral, PublicKeyToken=1fdb50b1b62b4c84, processorArchitecture=MSIL"
   963         -                "ScatterAssemblies"
   964         -                {
   965         -                    "_7A5526750394E83A77FEAF65EFEF3719"
   966         -                    {
   967         -                    "Name" = "8:System.Data.SQLite.dll"
   968         -                    "Attributes" = "3:512"
   969         -                    }
   970         -                }
   971         -            "SourcePath" = "8:System.Data.SQLite.dll"
   972         -            "TargetName" = "8:"
   973         -            "Tag" = "8:"
   974         -            "Folder" = "8:_10C8E86E2EEF451BB40F774C35C5466F"
   975         -            "Condition" = "8:"
   976         -            "Transitive" = "11:FALSE"
   977         -            "Vital" = "11:TRUE"
   978         -            "ReadOnly" = "11:FALSE"
   979         -            "Hidden" = "11:FALSE"
   980         -            "System" = "11:FALSE"
   981         -            "Permanent" = "11:FALSE"
   982         -            "SharedLegacy" = "11:FALSE"
   983         -            "PackageAs" = "3:1"
   984         -            "Register" = "3:1"
   985         -            "Exclude" = "11:FALSE"
   986         -            "IsDependency" = "11:TRUE"
   987         -            "IsolateTo" = "8:"
   988         -            }
   989    958               "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9352653B827F735B8C3BE81D11522ECC"
   990    959               {
   991    960               "SourcePath" = "8:dte80a.olb"
   992    961               "TargetName" = "8:dte80a.olb"
   993    962               "Tag" = "8:"
   994    963               "Folder" = "8:_F11D54EE0EEA4BF59B52E621630B6A2E"
   995    964               "Condition" = "8:"
................................................................................
  1308   1277               "SharedLegacy" = "11:FALSE"
  1309   1278               "PackageAs" = "3:1"
  1310   1279               "Register" = "3:1"
  1311   1280               "Exclude" = "11:TRUE"
  1312   1281               "IsDependency" = "11:TRUE"
  1313   1282               "IsolateTo" = "8:"
  1314   1283               }
         1284  +            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_EC85386E50BF8C0CE5206F2C19EA6FA2"
         1285  +            {
         1286  +            "AssemblyRegister" = "3:1"
         1287  +            "AssemblyIsInGAC" = "11:TRUE"
         1288  +            "AssemblyAsmDisplayName" = "8:System.Data.SQLite, Version=1.0.54.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86"
         1289  +                "ScatterAssemblies"
         1290  +                {
         1291  +                    "_EC85386E50BF8C0CE5206F2C19EA6FA2"
         1292  +                    {
         1293  +                    "Name" = "8:System.Data.SQLite.dll"
         1294  +                    "Attributes" = "3:512"
         1295  +                    }
         1296  +                }
         1297  +            "SourcePath" = "8:System.Data.SQLite.dll"
         1298  +            "TargetName" = "8:"
         1299  +            "Tag" = "8:"
         1300  +            "Folder" = "8:_F11D54EE0EEA4BF59B52E621630B6A2E"
         1301  +            "Condition" = "8:"
         1302  +            "Transitive" = "11:FALSE"
         1303  +            "Vital" = "11:TRUE"
         1304  +            "ReadOnly" = "11:FALSE"
         1305  +            "Hidden" = "11:FALSE"
         1306  +            "System" = "11:FALSE"
         1307  +            "Permanent" = "11:FALSE"
         1308  +            "SharedLegacy" = "11:FALSE"
         1309  +            "PackageAs" = "3:1"
         1310  +            "Register" = "3:1"
         1311  +            "Exclude" = "11:FALSE"
         1312  +            "IsDependency" = "11:TRUE"
         1313  +            "IsolateTo" = "8:"
         1314  +            }
  1315   1315           }
  1316   1316           "FileType"
  1317   1317           {
  1318   1318           }
  1319   1319           "Folder"
  1320   1320           {
  1321   1321               "{3C67513D-01DD-4637-8A68-80971EB9504F}:_A0841E79B7874F7288672343934C7657"
................................................................................
  1441   1441           "LangId" = "3:1033"
  1442   1442           "RequiresElevation" = "11:FALSE"
  1443   1443           }
  1444   1444           "Product"
  1445   1445           {
  1446   1446           "Name" = "8:Microsoft Visual Studio"
  1447   1447           "ProductName" = "8:SQLite ADO.NET 2.0 Provider"
  1448         -        "ProductCode" = "8:{D8D32653-DDF3-4811-9BFE-95455003DCF2}"
  1449         -        "PackageCode" = "8:{D8EEE4A0-04AA-41D9-B3DA-B42BA7E7CA60}"
         1448  +        "ProductCode" = "8:{96C76229-C594-48C3-A78E-6A6651B403B0}"
         1449  +        "PackageCode" = "8:{840277EC-5A49-4B30-835A-18A35F3F6AA7}"
  1450   1450           "UpgradeCode" = "8:{78329A82-AFB1-453B-AF00-D46AC911DA89}"
  1451   1451           "RestartWWWService" = "11:FALSE"
  1452   1452           "RemovePreviousVersions" = "11:TRUE"
  1453   1453           "DetectNewerInstalledVersion" = "11:TRUE"
  1454   1454           "InstallAllUsers" = "11:TRUE"
  1455         -        "ProductVersion" = "8:1.053.0"
         1455  +        "ProductVersion" = "8:1.054.0"
  1456   1456           "Manufacturer" = "8:Phoenix Software Solutions, LLC"
  1457   1457           "ARPHELPTELEPHONE" = "8:"
  1458   1458           "ARPHELPLINK" = "8:http://sqlite.phxsoftware.com"
  1459   1459           "Title" = "8:SQLite ADO.NET 2.0 Provider"
  1460   1460           "Subject" = "8:"
  1461   1461           "ARPCONTACT" = "8:Phoenix Software Solutions, LLC"
  1462   1462           "Keywords" = "8:"
................................................................................
  1511   1511           {
  1512   1512               "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_1D4C9AFDF229479AABE410DD0C754667"
  1513   1513               {
  1514   1514               "Name" = "8:Design-Time Configuration"
  1515   1515               "Arguments" = "8:"
  1516   1516               "Description" = "8:"
  1517   1517               "ShowCmd" = "3:1"
  1518         -            "IconIndex" = "3:0"
         1518  +            "IconIndex" = "3:32512"
  1519   1519               "Transitive" = "11:FALSE"
  1520   1520               "Target" = "8:_40DFF08BA903482D807E715A041CA8B1"
  1521   1521               "Folder" = "8:_1B562A9F876E47058AB813C418E24FBF"
  1522   1522               "WorkingFolder" = "8:_F11D54EE0EEA4BF59B52E621630B6A2E"
  1523         -            "Icon" = "8:"
         1523  +            "Icon" = "8:_40DFF08BA903482D807E715A041CA8B1"
  1524   1524               "Feature" = "8:"
  1525   1525               }
  1526   1526               "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_CC64AEB6D8A643F7BC8EB95EBC803EB5"
  1527   1527               {
  1528   1528               "Name" = "8:Help"
  1529   1529               "Arguments" = "8:"
  1530   1530               "Description" = "8:"