This repository has been archived by the owner on Oct 13, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathreadme.htm
1673 lines (1642 loc) · 96.9 KB
/
readme.htm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
ADO.NET SQLite Data Provider<br />
Version 1.0.90.0 December 23, 2013<br />
Using <a href="http://www.sqlite.org/releaselog/3_8_2.html">SQLite 3.8.2</a><br />
Originally written by Robert Simpson<br />
Released to the public domain, use at your own risk!<br />
Official provider website: <a href="http://system.data.sqlite.org/">http://system.data.sqlite.org/</a><br />
Legacy versions: <a href="http://sqlite.phxsoftware.com/">http://sqlite.phxsoftware.com/</a><br />
<br />
The current development version can be downloaded from <a href="http://system.data.sqlite.org/index.html/timeline?y=ci">
http://system.data.sqlite.org/index.html/timeline?y=ci</a>
<br />
<br />
<h2><b>Features</b></h2>
<ul>
<li>
Written from scratch on Visual Studio 2008 specifically for ADO.NET,
implementing all the base classes and features recently introduced in the
framework, including automatic transaction enlistment.
</li>
<li>
Supports the Full and Compact .NET Framework, and native C/C++ development.
100% binary compatible with the original sqlite3.dll.
</li>
<li>
Full support for Mono via a "managed only" provider that runs
against the official SQLite 3.6.1 or higher library.
</li>
<li>Full Entity Framework support (ADO.NET 3.5 SP1).</li>
<li>
On the Compact Framework, it is faster than SQL Server Mobile. SQLite's
installed size is a fraction of SQL Mobile's. It uses less memory at
runtime, runs queries faster, and has a smaller database file size as well.
</li>
<li>
Encrypted database support. Encrypted databases are fully encrypted and
support both binary and cleartext password types.
</li>
<li>
Visual Studio design-time Support, works with all versions of Visual Studio
2005/2008/2010/2012. You can add a SQLite database to the Servers list,
design queries with the Query Designer, drag-and-drop tables onto a Typed
DataSet, etc.
<br />
<font color="red">
Due to Visual Studio licensing restrictions, the Express Editions can no
longer be supported.
</font>
</li>
<li>
Full SQLite schema editing inside Visual Studio. You can create/edit tables,
views, triggers, indexes, check constraints and foreign keys.
</li>
<li>
Single file redistributable (except on Compact Framework). The core SQLite
native code and the ADO.NET managed wrapper are combined into one mixed-mode
assembly.
</li>
<li>
Binaries included for x86, x64, Itanium, and ARM processors.
<br />
<font color="red">
Itanium processor support not currently included.
</font>
</li>
<li>DbProviderFactory support.</li>
<li>
Full support for ATTACH'ed databases. Exposed as <i>Catalogs</i> in the
schema. When cloning a connection, all attached databases are automatically
re-attached to the new connection.
</li>
<li>
DbConnection.GetSchema(...) support includes <i>ReservedWords</i>,
<i>MetaDataCollections</i>, <i>DataSourceInformation</i>, <i>DataTypes</i>,
<i>Columns</i>, <i>Tables</i>, <i>Views</i>, <i>ViewColumns</i>,
<i>Catalogs</i>, <i>Indexes</i>, <i>IndexColumns</i>, <i>ForeignKeys</i> and
<i>Triggers</i>.
</li>
<li>
Enhanced DbDataReader.GetSchemaTable() functionality returns catalog,
namespace and detailed schema information even for complex queries.
</li>
<li>Named and unnamed parameters.</li>
<li>
Full UTF-8 and UTF-16 support, each with optimized pipelines into the native
database core.
</li>
<li>
Multiple simultaneous DataReaders (one DataReader per Command however).
</li>
<li>
Full support for user-defined scalar and aggregate functions, encapsulated
into an easy-to-use base class in which only a couple of overrides are
necessary to implement new SQL functions.
</li>
<li>
Full support for user-defined collating sequences, every bit as simple to
implement as user-defined functions and uses the same base class.
</li>
<li>
Full source for the entire engine and wrapper. No copyrights. Public
Domain. 100% free for commercial and non-commercial use.
</li>
</ul>
<h2><strong>Design-Time Support</strong></h2>
<p>
Download and run one of the setup packages and then select the
"<b>Install the designer components for Visual Studio 20XX.</b>"
option when prompted.
</p>
<h2>
<strong>DbFactory Support (Non-Compact Framework)</strong></h2>
In order to use the SQLiteFactory and have the SQLite data provider enumerated in
the DbProviderFactories methods, you must add the following segment into your application's
app.config file:<br />
<pre>
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.90.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
</DbProviderFactories>
</system.data>
</configuration>
</pre>
<p>
See the help documentation for further details on implementing both version-specific
(GAC enabled) and version independent DBProviderFactories support.
</p>
<h2>Compiling for the Compact Framework</h2>
<p>
Just change the target platform from Win32 to Compact Framework and recompile.
<strong>The Compact Framework has no support for enumerating attributes in an assembly,
therefore all user-defined collating sequences and functions must be explicitly
registered.</strong> See the <strong>testce</strong> sample application for
an example of how to explicitly register user-defined collating sequences and functions.</p>
<h2><b><a name="redist"></a>Distributing The SQLite Engine and ADO.NET Assembly</b></h2>
<p>
On the desktop, only the <strong>System.Data.SQLite.DLL</strong> file needs to be
distributed with your application(s). This DLL contains both the managed wrapper
and the native SQLite3 codebase. For the Compact Framework, you will have
to distribute both the CF version of System.Data.SQLite.DLL, as well as the SQLite.Interop.XXX.DLL.
This is a breaking change as of 1.0.59.0. Recent Windows Mobile frameworks
are not supporting the mixed CF assembly I was building prior to this version.</p>
<h2><b>Development Notes Regarding the SQLite 3 Source Code</b></h2>
<p>
The core SQLite engine is compiled directly from the unmodified source code available
at the sqlite.org website. Several additional pieces are compiled on top of
it to extend its functionality, but the core engine's source is not changed.</p>
<p>
</p>
<h2><b>Version History</b></h2>
<p>
<b>1.0.90.0 - December 23, 2013</b>
</p>
<ul>
<li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_2.html">SQLite 3.8.2</a>.</li>
<li>Add Visual Studio 2013 support to all the applicable solution/project files, their associated supporting files, and the test suite.</li>
<li>Add Visual Studio 2013 support to the redesigned designer support installer.</li>
<li>Add support for Windows Embedded Compact 2013.</li>
<li>Add experimental support for the native regexp extension.</li>
<li>Never create a new connection wrapper in the SQLiteConnection.Shutdown method. <b>** Potentially Incompatible Change **</b></li>
<li>Add experimental GetMemoryStatistics, ReleaseMemory, and Shutdown methods to the SQLiteConnection class.</li>
<li>Add memory leak detection to the test project for the .NET Compact Framework.</li>
<li>Add SQLITE_ENABLE_MEMORY_MANAGEMENT compile-time option to the interop assembly.</li>
<li>Use current isolation level when enlisting into an existing transaction. Fix for [56b42d99c1].</li>
<li>Better handling of non-error log messages from the SQLite core library. Pursuant to [44df10ea90].</li>
<li>Add TraceWarning connection flag to enable tracing of type mapping failures and disable tracing of them by default. Pursuant to [6d45c782e4].</li>
<li>Use 32-bit values to keep track of numeric precision and scale when building the schema table for a query. Fix for [ef2216192d].</li>
</ul>
<p>
<b>1.0.89.0 - October 28, 2013</b>
</p>
<ul>
<li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_1.html">SQLite 3.8.1</a>.</li>
<li>Add AutoCommit property to the SQLiteConnection class. Fix for [9ba9346f75].</li>
<li>Use declared column sizes for the AnsiStringFixedLength and StringFixedLength mapped database types. Fix for [3113734605].</li>
<li>Check the result of sqlite3_column_name function against NULL.</li>
<li>Return false for the SQLiteParameterCollection.IsSynchronized property because it is not thread-safe.</li>
<li>Raise the static SQLiteConnection.Changed event when any SQLiteCommand, SQLiteDataReader, or CriticalHandle derived object instance is created. Fix for [aba4549801].</li>
<li>Add SQLiteCommand.Execute, SQLiteCommand.ExecuteNonQuery, and SQLiteCommand.ExecuteScalar method overloads that take a CommandBehavior parameter.</li>
<li>Revise how the extra object data is passed to the static SQLiteConnection.Changed event. <b>** Potentially Incompatible Change **</b></li>
<li>Make sure the database cannot be changed by a query when the CommandBehavior.SchemaOnly flag is used. Fix for [f8dbab8baf]. <b>** Potentially Incompatible Change **</b></li>
<li>Fix bug in <a href="http://sourceforge.net/projects/ndoc3/">NDoc3</a> that was preventing some of the MSDN documentation links from working.</li>
<li>Include the XML documentation files in the NuGet packages. Fix for [5970d5b0a6].</li>
<li>Add InteropVersion, InteropSourceId, ProviderVersion, and ProviderSourceId properties to the SQLiteConnection class.</li>
<li>Add experimental support for interfacing with the authorizer callback in the SQLite core library.</li>
<li>Add experimental support for the native totype extension.</li>
</ul>
<p>
<b>1.0.88.0 - August 7, 2013</b>
</p>
<ul>
<li>Various fixes to managed virtual table integration infrastructure.</li>
<li>Implement workaround for an incorrect PROCESSOR_ARCHITECTURE being reported. Fix for [9ac9862611].</li>
<li>Modify classes that implement the IDisposable pattern to set the disposed flag after their base classes have been disposed.</li>
<li>When automatically registering custom functions, use the executing assembly (i.e. System.Data.SQLite) for reference detection. Fix for [4e49a58c4c].</li>
</ul>
<p>
<b>1.0.87.0 - July 8, 2013</b>
</p>
<ul>
<li>Add all the necessary infrastructure to allow virtual tables to be implemented in managed code. Fix for [9a544991be].</li>
<li>The DbType to type name translation needs to prioritize the Entity Framework type names. Fix for [47f4bac575].</li>
<li>Add DateTimeFormatString connection string property to allow the DateTime format string used for all parsing and formatting to be overridden.</li>
<li>Add NoFunctions connection flag to skip binding functions registered in the application domain.</li>
<li>Add several data-types for compatibility purposes. Fix for [fe50b8c2e8].</li>
<li>Add SQLiteConnection.BindFunction method to facilitate adding custom functions on a per-connection basis.</li>
<li>When reading a DateTime value, avoid unnecessary string conversions. Fix for [4d87fbc742].</li>
<li>Modify the index introspection code so that it does not treat PRAGMA table_info "pk" column values as boolean. Fix for [f2c47a01eb].</li>
<li>Disable use of the new connection string parsing algorithm when the No_SQLiteConnectionNewParser environment variable is set. Pursuant to [bbdda6eae2].</li>
<li>Rename the ReturnCode property of the SQLiteException class to ResultCode. <b>** Potentially Incompatible Change **</b></li>
</ul>
<p>
<b>1.0.86.0 - May 23, 2013</b>
</p>
<ul>
<li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_17.html">SQLite 3.7.17</a>.</li>
<li>Disable use of the AllowPartiallyTrustedCallers attribute when compiled for the .NET Framework 4.0/4.5. <b>** Potentially Incompatible Change **</b></li>
<li>Allow semi-colons in the data source file name. Fix for [e47b3d8346]. <b>** Potentially Incompatible Change **</b></li>
<li>NULL values should be reported as type "object", not "DBNull". Fix for [48a6b8e4ca].</li>
</ul>
<p>
<b>1.0.85.0 - April 18, 2013</b>
</p>
<ul>
<li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_16_2.html">SQLite 3.7.16.2</a>.</li>
<li>Properly handle embedded NUL characters in parameter and column values. Fix for [3567020edf].</li>
<li>Make use of the sqlite3_prepare_v2 function when applicable.</li>
<li>Check for a valid row in the SQLiteDataReader.GetValue method.</li>
<li>Implement processor architecture detection when running on the .NET Compact Framework (via P/Invoke).</li>
<li>Support automated testing when running on the .NET Compact Framework 2.0.</li>
<li>Skip checking loaded assemblies for types tagged with the SQLiteFunction attribute when the No_SQLiteFunctions environment variable is set. Pursuant to [e4c8121f7b].</li>
<li>Add HexPassword connection string property to work around the inability to include a literal semicolon in a connection string property value. Pursuant to [1c456ae75f].</li>
<li>Add static Execute method to the SQLiteCommand class.</li>
<li>Support custom connection pool implementations by adding the ISQLiteConnectionPool interface, the static SQLiteConnection.ConnectionPool property, and the static CreateHandle method in addition to modifying the SQLiteConnectionPool class. Pursuant to [393d954be0].</li>
<li>Add public constructor to the SQLiteDataAdapter class that allows passing the parseViaFramework parameter to the SQLiteConnection constructor.</li>
<li>When built with the CHECK_STATE compile-time option, skip throwing exceptions from the SQLiteDataReader class when the object is being disposed.</li>
<li>Support automatic value conversions for columns with a declared type of BIGUINT, INTEGER8, INTEGER16, INTEGER32, INTEGER64, SMALLUINT, TINYSINT, UNSIGNEDINTEGER, UNSIGNEDINTEGER8, UNSIGNEDINTEGER16, UNSIGNEDINTEGER32, UNSIGNEDINTEGER64, INT8, INT16, INT32, INT64, UINT, UINT8, UINT16, UINT32, UINT64, or ULONG.</li>
<li>Add BindUInt32AsInt64 connection flag to force binding of UInt32 values as Int64 instead. Pursuant to [c010fa6584].</li>
<li>Add BindAllAsText and GetAllAsText connection flags to force binding and returning of all values as text.</li>
<li>Remove AUTOINCREMENT from the column type name map. <b>** Potentially Incompatible Change **</b></li>
<li>Avoid throwing overflow exceptions from the SQLite3.GetValue method for integral column types. Partial fix for [c010fa6584]. <b>** Potentially Incompatible Change **</b></li>
<li>Use the legacy connection closing algorithm when built with the INTEROP_LEGACY_CLOSE compile-time option.</li>
<li>Support using the directory containing the primary managed-only assembly as the basis for native library pre-loading.</li>
<li>Still further enhancements to the build and test automation.</li>
</ul>
<p>
<b>1.0.84.0 - January 9, 2013</b>
</p>
<ul>
<li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_15_2.html">SQLite 3.7.15.2</a>.</li>
<li>Explicitly dispose of all SQLiteCommand objects managed by the DbDataAdapter class. Fix for [6434e23a0f].</li>
<li>Add Cancel method to the SQLiteConnection class to interrupt a long running query.</li>
<li>Improve thread safety of the SQLiteLog.LogMessage method.</li>
</ul>
<p>
<b>1.0.83.0 - December 29, 2012</b>
</p>
<ul>
<li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_15_1.html">SQLite 3.7.15.1</a>.</li>
<li>Add Visual Studio 2012 support to all the applicable solution/project files, their associated supporting files, and the test suite.</li>
<li>Add Visual Studio 2012 support to the redesigned designer support installer.</li>
<li>Allow opened connections to skip adding the extension functions included in the interop assembly via the new NoExtensionFunctions connection flag.</li>
<li>Support loading of SQLite extensions via the new EnableExtensions and LoadExtension methods of the SQLiteConnection class. Pursuant to [17045010df].</li>
<li>Remove one set of surrounding single or double quotes from property names and values parsed from the connection string. Fix for [b4cc611998].</li>
<li>Modify parsing of connection strings to allow property names and values to be quoted. <b>** Potentially Incompatible Change **</b></li>
<li>Add ParseViaFramework property to the SQLiteConnection class to allow the built-in (i.e. framework provided) connection string parser to be used when opening a connection. Pursuant to [b4cc611998].</li>
<li>Add notifications before and after any connection is opened and closed, as well as other related notifications, via the new static Changed event.</li>
<li>Add an overload of the SQLiteLog.LogMessage method that takes a single string parameter.</li>
<li>Add an overload of the SQLiteConnection.LogMessage method that takes a SQLiteErrorCode parameter.</li>
<li>All applicable calls into the SQLite core library now return a SQLiteErrorCode instead of an integer error code.</li>
<li>Make sure the error code of the SQLiteException class gets serialized.</li>
<li>Make the test project for the .NET Compact Framework more flexible.</li>
<li>When available, the new sqlite3_errstr function from the core library is used to get the error message for a specific return code.</li>
<li>The SetMemoryStatus, Shutdown, ResultCode, ExtendedResultCode, and SetAvRetry methods of the SQLiteConnection class now return a SQLiteErrorCode instead of an integer error code. <b>** Potentially Incompatible Change **</b></li>
<li>The public constructor for the SQLiteException now takes a SQLiteErrorCode instead of an integer error code. <b>** Potentially Incompatible Change **</b></li>
<li>The ErrorCode property of the SQLiteException is now an Int32, to allow the property inherited from the base class to be properly overridden. <b>** Potentially Incompatible Change **</b></li>
<li>The ErrorCode field of the LogEventArgs is now an object instead of an integer. <b>** Potentially Incompatible Change **</b></li>
<li>The names and messages associated with the SQLiteErrorCode enumeration values have been normalized to match those in the SQLite core library. <b>** Potentially Incompatible Change **</b></li>
<li>Implement more robust locking semantics for the CriticalHandle derived classes when compiled for the .NET Compact Framework.</li>
<li>Cache column indexes as they are looked up when using the SQLiteDataReader to improve performance.</li>
<li>Prevent the SQLiteConnection.Close method from throwing non-fatal exceptions during its disposal.</li>
<li>Rename the interop assembly functions sqlite3_cursor_rowid, sqlite3_context_collcompare, sqlite3_context_collseq, sqlite3_cursor_rowid, and sqlite3_table_cursor to include an "_interop" suffix. <b>** Potentially Incompatible Change **</b></li>
<li>Prevent the LastInsertRowId, MemoryUsed, and MemoryHighwater connection properties from throwing NotSupportedException when running on the .NET Compact Framework. Fix for [dd45aba387].</li>
<li>Improve automatic detection of the sqlite3_close_v2 function when compiled to use the standard SQLite library.</li>
<li>Add protection against ThreadAbortException asynchronously interrupting native resource initialization and finalization.</li>
<li>Add native logging callback for use with the sqlite3_log function to the interop assembly, enabled via the INTEROP_LOG preprocessor definition.</li>
<li>Add various diagnostic messages to the interop assembly, enabled via flags in the INTEROP_DEBUG preprocessor definition.</li>
<li>Further enhancements to the build and test automation.</li>
<li>Add test automation for the Windows CE binaries.</li>
</ul>
<p>
<b>1.0.82.0 - September 3, 2012</b>
</p>
<ul>
<li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_14.html">SQLite 3.7.14</a>.</li>
<li>Properly handle quoted data source values in the connection string. Fix for [8c3bee31c8].</li>
<li>The <a href="http://nuget.org/packages/System.Data.SQLite">primary NuGet package</a> now supports x86 / x64 and the .NET Framework 2.0 / 4.0 (i.e. in a single package).</li>
<li>Change the default value for the Synchronous connection string property to Full to match the default used by the SQLite core library itself. <b>** Potentially Incompatible Change **</b></li>
<li>Add the ability to skip applying default connection settings to opened databases via the new SetDefaults connection string property.</li>
<li>Add the ability to skip expanding data source file names to their fully qualified paths via the new ToFullPath connection string property.</li>
<li>Fix the database cleanup ordering in the tests for ticket [343d392b51].</li>
<li>Add support for the sqlite3_close_v2 function from the SQLite core library.</li>
<li>Add support for <a href="http://www.sqlite.org/uri.html">URI file names</a> via the new FullUri connection string property.</li>
<li>Improve support for the standard SQLite core library in the LINQ assembly and the test suite.</li>
<li>Add SetMemoryStatus static method to the SQLiteConnection class.</li>
<li>Improve threaded handling of the delegate used by the SQLiteLog class.</li>
<li>Add define constants to support enabling or disabling individual groups of trace statements.</li>
</ul>
<p>
<b>1.0.81.0 - May 27, 2012</b>
</p>
<ul>
<li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_12_1.html">SQLite 3.7.12.1</a>.</li>
<li>Support compiling the interop assembly without support for the custom extension functions and the CryptoAPI based codec.</li>
<li>Add DefineConstants property to the SQLiteConnection class to return the list of define constants used when compiling the core managed assembly.</li>
<li>Add release archive verification tool to the release automation.</li>
<li>Fix NullReferenceException when calling the SQLiteDataAdapter.FillSchema method on a query that returns multiple result sets. Fix for [3aa50d8413].</li>
<li>Fix subtle race condition between threads fetching connection handles from the connection pool and any garbage collection (GC) threads that may be running. Fix for [996d13cd87].</li>
<li>Add missing call to SetTimeout in the SQLite3_UTF16.Open method.</li>
<li>Add checks to prevent the SQLiteConnectionPool.Remove method from returning any connection handles that are closed or invalid.</li>
<li>Modify static SQLiteBase helper methods to prevent them from passing IntPtr.Zero to the SQLite native library.</li>
<li>Remove static locks from the static helper methods in the SQLiteBase class, replacing them with a lock on the connection handle instance being operated upon.</li>
<li>Revise CriticalHandle derived classes to make them more thread-safe.</li>
<li>Add connection pool related diagnostic messages when compiled with the DEBUG define constant.</li>
<li>Add PoolCount property to the SQLiteConnection class to return the number of pool entries for the file name associated with the connection.</li>
<li>Rename internal SQLiteLastError methods to GetLastError.</li>
<li>Add assembly file test constraints to all tests that execute the "test.exe" or "testlinq.exe" files.</li>
</ul>
<p>
<b>1.0.80.0 - April 1, 2012</b>
</p>
<ul>
<li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_11.html">SQLite 3.7.11</a>.</li>
<li>In the SQLiteFunction class, when calling user-provided methods from a delegate called by native code, avoid throwing exceptions, optionally tracing the caught exceptions. Fix for [8a426d12eb].</li>
<li>Add Visual Studio 2005 support to all the applicable solution/project files, their associated supporting files, and the test suite.</li>
<li>Add Visual Studio 2005 support to the redesigned designer support installer.</li>
<li>Add experimental support for "pre-loading" the native SQLite library based on the processor architecture of the current process. This feature is now enabled by default at compile-time.</li>
<li>Add support for the native <a href="http://www.sqlite.org/backup.html">SQLite Online Backup API</a>. Fix for [c71846ed57].</li>
<li>Acquire and hold a static data lock while checking if the native SQLite library has been initialized to prevent a subtle race condition that can result in superfluous error messages. Fix for [72905c9a77].</li>
<li>Support tracing of all parameter binding activity and use the connection flags to control what is traced.</li>
<li>When converting a DateTime instance of an "Unspecified" kind to a string, use the same kind as the connection, if available.</li>
<li>Add overload of the SQLiteDataReader.GetValues method that returns a NameValueCollection.</li>
<li>Add static ToUnixEpoch method to the SQLiteConvert class to convert a DateTime value to the number of whole seconds since the Unix epoch.</li>
<li>In the implicit conversion operators (to IntPtr) for both the SQLiteConnectionHandle and SQLiteStatementHandle classes, return IntPtr.Zero if the instance being converted is null.</li>
<li>Write warning message to the active trace listeners (for the Debug build configuration only) if a column type or type name cannot be mapped properly. See [4bbf851fa5].</li>
<li>When tracing SQL statements to be prepared, bypass the internal length limit of the sqlite3_log function by using the SQLiteLog class directly instead. Also, detect null and/or empty strings and emit a special message in that case.</li>
<li>For the setup, the Visual Studio task should only be initially checked if the GAC task is available and vice-versa.</li>
<li>Improve compatibility with custom command processors by using __ECHO instead of _ECHO in batch tools.</li>
<li>Add OpenAndReturn method to the SQLiteConnection class to open a connection and return it.</li>
<li>Add missing CheckDisposed calls to the SQLiteConnection class.</li>
<li>Add missing throw statement to the SQLiteConnection class.</li>
<li>Make sure the interop project uses /fp:precise for Windows CE.</li>
<li>Regenerate package load key to support loading the designer package into Visual Studio 2008 without having the matching SDK installed.</li>
<li>Modify transaction object disposal so that it can never cause an exception to be thrown.</li>
</ul>
<p>
<b>1.0.79.0 - January 28, 2012</b>
</p>
<ul>
<li>Use the WoW64 registry keys when installing the VS designer components on 64-bit Windows. Fix for [d8491abd0b].</li>
<li>Correct resource name used by the LINQ assembly to locate several key string resources. Fix for [fbebb30da9].</li>
</ul>
<p>
<b>1.0.78.0 - January 27, 2012</b>
</p>
<ul>
<li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_10.html">SQLite 3.7.10</a>.</li>
<li>Redesign the VS designer support installer and integrate it into the setup packages.</li>
<li>When emitting SQL for foreign keys in the VS designer, be sure to take all returned schema rows into account. Remainder of fix for [b226147b37].</li>
<li>Add Flags connection string property to control extra behavioral flags for the connection.</li>
<li>Refactor all IDisposable implementations to conform to best practices, potentially eliminating leaks in certain circumstances.</li>
<li>Even more enhancements to the build and test automation.</li>
<li>Support parameter binding to more primitive types, including unsigned integer types.</li>
<li>Recognize the TIMESTAMP column data type as the DateTime type. Fix for [bb4b04d457].</li>
<li>Prevent logging superfluous messages having to do with library initialization checking. Fix for [3fc172d1be].</li>
<li>Support the DateTimeKind and BaseSchemaName connection string properties in the SQLiteConnectionStringBuilder class. Fix for [f3ec1e0066].</li>
<li>Overloads of the SQLiteConvert.ToDateTime and SQLiteConvert.ToJulianDay methods that do not require an instance should be static. Partial fix for [4bbf851fa5]. <b>** Potentially Incompatible Change **</b></li>
</ul>
<p>
<b>1.0.77.0 - November 28, 2011</b>
</p>
<ul>
<li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_9.html">SQLite 3.7.9</a>.</li>
<li>More enhancements to the build and test automation.</li>
<li>Plug native memory leak when closing a database connection containing a statement that cannot be finalized for some reason.</li>
<li>The SQLite3 class should always attempt to dispose the contained SQLiteConnectionHandle, even when called via the finalizer.</li>
<li>When compiled with DEBUG defined, emit diagnostic information related to resource cleanup to any TraceListener objects that may be registered.</li>
<li>Stop characterizing all log messages as errors. From now on, if the errorCode is zero, the message will not be considered an error.</li>
<li>Never attempt to configure the native logging interface if the SQLite core library has already been initialized for the process. Fix for [2ce0870fad].</li>
<li>Allow the SQLiteLog class to be used for logging messages without having an open connection.</li>
<li>Support building the core System.Data.SQLite assemblies using the .NET Framework 4.0 Client Profile. Fix for [566f1ad1e4].</li>
<li>When generating the schema based on the contents of a SQLiteDataReader, skip flagging columns as unique if the data reader is holding the result of some kind of multi-table construct (e.g. a cross join) because we must allow duplicate values in that case. Fix for [7e3fa93744].</li>
<li>When returning schema information that may be used by the .NET Framework to construct dynamic SQL, use a fake schema name (instead of null) so that the table names will be properly qualified with the catalog name (i.e. the attached database name). Partial fix for [343d392b51].</li>
<li>Add SQLiteSourceId property to the SQLiteConnection class to return the SQLite source identifier.</li>
<li>Add MemoryUsed and MemoryHighwater properties to the SQLiteConnection class to help determine the memory usage of SQLite.</li>
<li>Add DateTimeKind connection string property to control the DateTimeKind of parsed DateTime values. Partial fix for [343d392b51]. <b>** Potentially Incompatible Change **</b></li>
<li>Improve the robustness of the SQLiteLog class when it will be initialized and unloaded multiple times.</li>
<li>Fix the name of the interop assembly for Windows CE. Add unit tests to prevent this type of issue from happening again. Fix for [737ca4ff74].</li>
<li>Formally support the SQL type name BOOLEAN in addition to BOOL. Fix for [544dba0a2f].</li>
<li>Make sure the SQLiteConvert.TypeNameToDbType method is thread-safe. Fix for [84718e79fa].</li>
</ul>
<p>
<b>1.0.76.0 - October 4, 2011</b>
</p>
<ul>
<li>Prevent the domain unload event handler in SQLiteLog from being registered multiple times. Fix for [0d5b1ef362].</li>
<li>Stop allowing non-default application domains to initialize the SQLiteLog class. Fix for [ac47dd230a].</li>
</ul>
<p>
<b>1.0.75.0 - October 3, 2011</b>
</p>
<ul>
<li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_8.html">SQLite 3.7.8</a>.</li>
<li>More enhancements to the build system.</li>
<li>Add official <a href="http://www.nuget.org/">NuGet</a> packages for x86 and x64.</li>
<li>Add Changes and LastInsertRowId properties to the connection class.</li>
<li>Support more formats when converting data from/to the DateTime type.</li>
<li>Make all the assembly versioning attributes consistent.</li>
<li>Add unit testing infrastructure using <a href="http://eagle.to/">Eagle</a>.</li>
<li>Integrate all legacy unit tests, including the "testlinq" project, into the new test suite.</li>
<li>Add projects to build the interop assembly statically linked to the Visual C++ runtime. Fix for [53f0c5cbf6].</li>
<li>Add SQLITE_ENABLE_STAT2 compile-time option to the interop assembly. Fix for [74807fbf27].</li>
<li>Fix mutex issues exposed when running the test suite with the debug version of SQLite.</li>
<li>Fix transaction enlistment when repeated attempts are made to enlist in the same transaction. Fix for [ccfa69fc32].</li>
<li>Support the SQLITE_FCNTL_WIN32_AV_RETRY file control to mitigate the impact of file sharing violations caused by external processes.</li>
<li>Refactor the logging interface to be thread-safe and self-initializing.</li>
<li>Shutdown the SQLite native interface when the AppDomain is being unloaded. Fix for [b4a7ddc83f].</li>
<li>Support Skip operation for LINQ using OFFSET. Fix for [8b7d179c3c].</li>
<li>Support EndsWith operation for LINQ using SUBSTR. Fix for [59edc1018b].</li>
<li>Support all SQLite journal modes. Fix for [448d663d11].</li>
<li>Do not throw exceptions when disposing SQLiteDataReader. Fix for [e1b2e0f769].</li>
<li>The REAL type should be mapped to System.Double. Fix for [2c630bffa7] and [b0a5990f48].</li>
<li>Minor optimization to GetParamValueBytes(). Fix for [201128cc88].</li>
<li>Support the ON UPDATE, ON DELETE, and MATCH clause information when generating schema metadata for foreign keys. Partial fix for [b226147b37]. VS designer changes are not yet tested.</li>
<li>Fix incorrect resource name for SR.resx in the mixed-mode assembly.</li>
<li>Reduce the number of String.Compare() calls in the hot path for SQLiteCommand.ExecuteReader().</li>
</ul>
<p>
<b>1.0.74.0 - July 4, 2011</b>
</p>
<ul>
<li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_7_1.html">SQLite 3.7.7.1</a>.</li>
<li>Fix incorrect hard-coded .NET Framework version information SQLiteFactory_Linq.cs that was causing IServiceProvider.GetService to fail when running against the .NET Framework 3.5.</li>
<li>Fix all XML documentation warnings.</li>
<li>Restore support for the mixed-mode assembly (i.e. the one that can be registered in the Global Assembly Cache).</li>
<li>Restore support for the Compact Framework.</li>
<li>Remove unused "using" statements from the System.Data.SQLite and System.Data.SQLite.Linq projects.</li>
<li>Remove hard-coded System.Data.SQLite.Linq version from SQLiteFactory_Linq.cs</li>
<li>Modify the setup to support bundled packages (i.e. with the mixed-mode assembly) and standard packages (i.e. with the managed assembly separate from the native interop library).</li>
<li>Disable the ability to register with the Global Assembly Cache in the standard setup package (i.e. it is available in the bundled setup only).</li>
<li>Remove PATH modification from the setup.</li>
<li>Modify the naming scheme for the source, setup, and binary packages to allow for the necessary variants.</li>
<li>In the build automation, attempt to automatically detect if Visual Studio 2008 and/or 2010 are installed and support building binaries for both at once, when available.</li>
<li>Add release automation to build the source, setup, and binary packages in all supported build variants.</li>
<li>Add the testlinq project to the new build system and make it work properly with Visual Studio 2008 and 2010.</li>
</ul>
<p>
<b>1.0.73.0 - June 2, 2011</b>
</p>
<ul>
<li>Updated to <a href="http://www.sqlite.org/releaselog/3_7_6_3.html">SQLite 3.7.6.3</a>.</li>
<li>Minor optimization to GetBytes(). Fix for [8c1650482e].</li>
<li>Update various assembly information settings.</li>
<li>Correct System.Data.SQLite.Linq version and resource information. Fix for [6489c5a396] and [133daf50d6].</li>
<li>Moved log handler from SQLiteConnection object to SQLiteFactory object to prevent if from being prematurely GCed.</li>
<li>We should block x64 installs on x86 and we should install native only if the setup package itself is native. Fix for [e058ce156e].</li>
</ul>
<p>
<b>1.0.72.0 - May 1, 2011</b>
</p>
<ul>
<li>Add the correct directory to the path. Fix for [50515a0c8e].</li>
</ul>
<p>
<b>1.0.71.0 - April 27, 2011</b>
</p>
<ul>
<li>Updated to SQLite 3.7.6+ <a href="http://www.sqlite.org/src/info/1bd1484cd7">[1bd1484cd7]</a> to get additional Windows error logging.</li>
<li>Updated setup to optionally add install directory to PATH if GAC option selected.</li>
</ul>
<p>
<b>1.0.70.0 - April 22, 2011</b>
</p>
<ul>
<li>Added support for sqlite3_extended_result_codes(), sqlite3_errcode(), and sqlite3_extended_errcode() via SetExtendedResultCodes(), ResultCode(), and ExtendedResultCode().</li>
<li>Added support for SQLITE_CONFIG_LOG via SQLiteLogEventHandler().</li>
</ul>
<p>
<b>1.0.69.0 - April 12, 2011</b>
</p>
<ul>
<li>Code merge with <a href="http://www.sqlite.org/releaselog/3_7_6.html">SQLite 3.7.6</a>.</li>
<li>New VS2008 and VS2010 solution files.</li>
<li>Build and packaging automation.</li>
<li>New Inno Setup files.</li>
<li>Designer support currently not ready for release.</li>
</ul>
<p>
<b>1.0.68.0 - February 2011</b>
</p>
<ul>
<li>Code merge with <a href="http://www.sqlite.org/releaselog/3_7_5.html">SQLite 3.7.5</a>.</li>
<li>Continuing work on supporting Visual Studio 2010.</li>
</ul>
<p>
<b>1.0.67.0 - January 3, 2011</b></p>
<ul>
<li>Code merge with <a href="http://www.sqlite.org/releaselog/3_7_4.html">SQLite 3.7.4</a>.</li>
<li>Continuing work on supporting Visual Studio 2010.</li>
</ul>
<p>
<b>1.0.66.1 - August 1, 2010</b></p>
<ul>
<li>Code merge with SQLite 3.7.0.1</li>
<li>Re-enabled VS2005 designer support, broken in previous versions during the 2008
transition</li>
<li>Implemented new forms of Take/Skip in the EF framework courtesy jlsantiago</li>
<li>Added "Foreign Keys" to the connection string parameters</li>
<li>Added the Truncate option to the Journal Modes enumeration</li>
</ul>
<p>
<b>1.0.66.0 - April 18, 2010</b></p>
<ul>
<li>Code merge with SQLite 3.6.23.1</li>
<li>Fixed a bug in the installer that accidentally modified the machine.config on
.NET versions prior to 2.0, invaliding the config file.</li>
<li>Fixed INTERSECT and EXCEPT union query generation in EF</li>
<li>Fixed an out of memory error in the trigger designer in cases where a WHEN clause
is used in the trigger</li>
</ul>
<p>
<b>1.0.65.0 - July 26, 2009</b></p>
<ul>
<li>Fixed a bug in the encryption module to prevent a double free() when rekeying
a database.</li>
<li>Fixed a bug in the encryption module when ATTACHing an encrypted database.</li>
<li>Incorporated the WinCE locking fix from ticket <a href="http://www.sqlite.org/cvstrac/tktview?tn=3991">
#3991</a></li>
<li>Added "bigint" to the dropdown in the table designer, plus other minor
table designer bugfixes.</li>
</ul>
<p>
<b>1.0.64.0 - July 9, 2009</b></p>
<ul>
<li>Fixed the missing resources problem from the 63 release.</li>
<li>Added preliminary support for the Visual Studio 2010 beta.</li>
<li>Fixed a bug in SQLiteCommand that threw a null reference exception when setting
the Transaction object to null.</li>
<li>If SQLiteConnection.EnlistTransaction is called multiple times for the same
transaction scope, just return without throwing an error.</li>
</ul>
<p>
<b>1.0.63.0 - June 29, 2009</b></p>
<ul>
<li>Code merge with SQLite 3.6.16</li>
<li>Check the autocommit mode of the connection to which a transaction is bound
during the disposal of the transaction. If autocommit is enabled, then the
database has already rolled back the transaction and we don't need to do it
during dispose, and can quietly ignore the step without throwing an error.</li>
<li>Eliminated the mergebin step altogether. It was developed primarily to
merge the Compact Framework binaries together, but since we're not doing that
anymore, its use is limited. Its non-standard method of merging a binary on
the desktop framework is redundant as well. The desktop binary now hard-links
to MSCOREE, but as of Windows XP, this was redundant as well since XP and beyond
automatically attempt to load MSCOREE on startup when a DLL has a .NET header.</li>
<li>More improvements to the test.exe program for running the tests against Sql
Server for comparison purposes.</li>
</ul>
<p>
<b>1.0.62.0 - June 19, 2009</b></p>
<ul>
<li>Code merge with SQLite 3.6.15</li>
<li>Fixed the decimal reading bug in the SQLiteDataReader</li>
<li>Changed Join()'s to Sleep()'s in the statement retry code to prevent
message pumping</li>
<li>Fixed a bad pointer conversion when retrieving blobs using GetBytes() in 64-bit
land</li>
<li>Several changes to the Test program that comes with the provider. Tests
can now be individually disabled, and the test program can run against several provider
back-ends</li>
</ul>
<p>
<b>1.0.61.0 - April 28, 2009</b></p>
<ul>
<li>Code merge with SQLite 3.6.13. The new backup features are as yet unimplemented
in the provider, but will be forthcoming in a subsequent release</li>
<li>Fixed the default-value lookups in SQLiteConnectionStringBuilder when accessing
properties</li>
<li>Lock the SQLiteTransaction object during dispose to avoid potential race condition
during cleanup</li>
<li>Fixed SQLiteDataReader.GetDecimal() processing and parsing of decimal values
for cases when SQLite returns things like "1.0e-05" instead of "0.0001"</li>
</ul>
<p>
<b>1.0.60.0 - October 3, 2008</b></p>
<ul>
<li>Throw a NotSupported exception in the EF Sql Gen code instead of parsing illegal
SQL during an update/insert/delete where no primary key is defined.</li>
<li>Fixed the Compact Framework interop library. Since the linker flag /subsystem
had no version specified, it was causing a problem for many CE-based platforms.</li>
<li>Incorporated SQLite patch for ticket <a href="http://www.sqlite.org/cvstrac/tktview?tn=3387">
#3387</a> and reverted out the vfs override code I added in build 59 to work around
this problem.</li>
<li>Fixed a designer issue when creating a new table from the Server Explorer.
After initially saving it, if you then continued to edit it and tried to save it
again, it would generate the change SQL using the old temporary table name rather
than the new name.</li>
</ul>
<p>
<b>1.0.59.0 - September 22, 2008</b></p>
<ul>
<li>Code merge with SQLite 3.6.3. Solves a couple different EF issues that
were either giving inconsistent results or crashing the engine.</li>
<li>Fixed the parsing of literal binaries in the EF SqlGen code. SQLite now
passes nearly all the testcases in <a href="http://sqlite.phxsoftware.com/forums/p/1377/5921.aspx#5921">
Microsoft's EF Query Samples</a> application -- the exception being the <i>datetimeoffset
</i>and<i> time</i> constants tests, and tests that use the <i>APPLY </i>keyword
which are unsupported for now.</li>
<li>Revamped the Compact Framework mixed-mode assembly. Tired of playing cat
and mouse with the Compact Framework's support for mixed-mode assemblies.
The CF build now requires that you distribute both the System.Data.SQLite library
and the paired SQLite.Interop.XXX library. The XXX denotes the build
number of the library.</li>
<li>Implemented a workaround for Vista's overzealous caching by turning off
FILE_FLAG_RANDOM_ACCESS for OS versions above XP. This is implemented as a
custom (default override) VFS in the interop.c file, so no changes are made to the
SQLite source code.</li>
<li>Fixed some registry issues in the designer install.exe, which prevented some
design-time stuff from working on the Compact Framework when .NET 3.5 was installed.</li>
</ul>
<p>
<b>1.0.58.0 - August 30, 2008</b></p>
<ul>
<li>Code merge with SQLite 3.6.2. If only I'd waited one more day to release
57! Several LINQ issues have been resolved with this engine release relating
to deeply-nested subqueries that the EF SqlGen creates.</li>
<li>The Rollback SQLiteConnection event no longer requires an open connection in
order to subscribe to it. Missed this one in the 57 release.</li>
</ul>
<p>
<b>1.0.57.0 - August 29, 2008</b></p>
<ul>
<li>Compiled against 3.6.1 with checkin <a href="http://www.sqlite.org/cvstrac/tktview?tn=3300">
#3300</a> resolved, which fixes an Entity Framework bug I was seeing. I currently
have 3 other tickets out on the engine, which are not yet resolved and relate to
EF.</li>
<li>Fixed decimal types to store and fetch using InvariantCulture. If you're
using decimal datatypes in your database and were affected by the 56 release, please
issue an UPDATE <table> SET <column> = REPLACE(<column>, ',',
'.'); to fix the decimal separators. Apologies for not testing
that more thoroughly before releasing 56.</li>
<li>Too many LINQ fixes to list. Fixed views so they generate, fixed the LIMIT
clause, implemented additional functionality and removed unnecessary code.</li>
<li>Fixed foreign key names in the designer so viewing the SQL script on a new unsaved
table after renaming it in the properties toolwindow will reflect in the script
properly.</li>
<li>Fixed the Update and Commit events on SQLiteConnection so they don't require
the connection to be opened first.</li>
<li>Fixed userdef aggregate functions so they play nice with each other when appearing
multiple times in the same statement.</li>
<li>Fixed the editing and saving of default values in the table designer.</li>
<li>Fixed ForeignKeys schema to support multi-column foreign keys. Also hacked
support for them in the table designer, provided two foreign keys in the designer
have the same name and reference the same foreign table and different columns.
Will implement first-class support for this in the next release.</li>
</ul>
<p>
<b>1.0.56.0 - August 11, 2008</b></p>
<ul>
<li>Fixed a bug in the table designer when designing new tables, wherein you had
to save the table first before being able to create indexes and foreign keys.</li>
<li>Tweaks to decimal type handling. The 'decimal' type can't
be represented by Int64 or Double (without loss of precision) in SQLite, so we have
to fudge it by treating it like a string and converting it back and forth in the
provider. Unfortunately backing it to the db as a string causes sorting problems.
See <a href="http://sqlite.phxsoftware.com/forums/p/1296/5595.aspx#5595">this post</a>
for details on using a custom collation sequence to overcome the sorting issue arising
from this patch.</li>
<li>Minor tweaks and bugfixes to the test program and the provider.</li>
<li>More adjustments to make the managed-only version of the provider run and pass
all tests on Mono.</li>
<li>LINQ to Entities bits heavily updated and compiled against VS2008 SP1 RTM.
SQLite LINQ support is still considered beta.</li>
</ul>
<p>
<b>1.0.55.0 - August 6, 2008</b></p>
<ul>
<li>Code merge with SQLite 3.6.1</li>
<li>Added support for the user-contributed extension-functions at <a href="http://www.sqlite.org/contrib">
http://www.sqlite.org/contrib</a>. Feel free to override any of them with
your own implementation. The new functions are: <i>acos, asin, atan, atn2,
atan2, acosh, asinh, atanh, difference, degrees, radians, cos, sin, tan, cot, cosh,
sinh, tanh, coth, exp, log, log10, power, sign, sqrt, square, ceil, floor, pi, replicate,
charindex, leftstr, rightstr, reverse, proper, padl, padr, padc, strfilter,</i>
and aggregates <i>stdev, variance, mode, median, lower_quartile, upper_quartile.</i></li>
<li>Moved the last_rows_affected() function to the C extension library.</li>
<li>Added a new class, SQLiteFunctionEx which extends SQLiteFunction and adds the
ability for a user-defined function to get the collating sequence during the Invoke/Step
methods. User-defined functions can use the collating sequence as a helper
to compare values.</li>
<li>When registering user-defined collation sequences and functions, the provider
will now register both a UTF8 and a UTF16 version instead of just UTF8.</li>
<li>Revamped connection pooling and added static ClearPool() and ClearAllPools()
functions to SQLiteConnection. Behavior of the pool and its clearing mechanics
match SqlClient.</li>
<li>Fixed connections going to the pool so that any unfinalized lingering commands
from un-collected datareaders are automatically reset and any lurking transactions
made on the connection are rolled back.</li>
<li>Transaction isolation levels are now partially supported. Serializable
is the default, which obtains read/write locks immediately -- this is compatible
with previous releases of the provider. Unspecified will default to whatever
the default isolation mode is set to, and ReadCommitted will cause a deferred lock
to be obtained. No other values are legal.</li>
<li>Revamped the test.exe program. It's now an interactive GUI application.
Easier for me to add tests now.</li>
<li>Tweaks to the VS designer package and installer.</li>
<li>More adjustments to the internal SQLite3.Prepare() method to account for both
kinds of lock errors when retrying.</li>
<li>Stripped a lot of unnecessary interop() calls and replaced with base sqlite
calls. Revamped most of UnsafeNativeMethods to make it easier to port the
code.</li>
<li>Rerigged internal callbacks for userdef functions and other native to managed
callbacks. More portable this way.</li>
<li>Source can now can be compiled with the SQLITE_STANDARD preprocessor symbol
to force the wrapper to use the stock sqlite3 library. Some functionality
is missing, but its minimal. None of the precompiled binaries are compiled
using this setting, but its useful for testing portability.</li>
<li>Added "boolean" and a couple other missing datatypes to the "DataTypes"
schema xml file. Used by the VS designer when displaying tables and querying.</li>
<li>Added a new connection string option "Read Only". When set to
True, the database will be opened in read-only mode.</li>
<li>Added a new connection string option "Max Pool Size" to set the maximum
size of the connection pool for a given db file connection.</li>
<li>Added a new connection string option "Default IsolationLevel" to set
the default isolation level of transactions. Possible values are Serializable
and ReadCommitted.</li>
<li>Added a new connection string option "URI" as an optional parameter
for compatibility with other ports of the provider.</li>
</ul>
<p>
<b>1.0.54.0 - July 25, 2008</b></p>
<ul>
<li>Fixed the setup project, which somehow "forgot" to include all the
binaries in the 53 release.</li>
<li>Fixed a crash in the table designer when creating a new table and tabbing past
the "Allow Nulls" cell in the grid while creating a new column.</li>
<li>Fixed a mostly-benign bug in SQLiteDataReader's GetEnumerator, which failed
to pass along a flag to the underyling DbEnumerator it creates. This one's
been around since day 1 and nobody's noticed it in all these years.</li>
<li>Added a new connection string parameter "Journal Mode" that allows
you to set the SQLite journal mode to Delete, Persist or Off.</li>
</ul>
<p>
<b>1.0.53.0 - July 24, 2008</b></p>
<ul>
<li>Enabled sqlite_load_extension</li>
<li>Added retry/timeout code to SQLite3.Prepare() when preparing statements for
execution and a SQLITE_BUSY error occurs.</li>
<li>Added a new schema to SQLiteConnection.GetSchema() called <i>Triggers</i>.
Used to retrieve the trigger(s) associated with a database and/or table/view.</li>
<li>Extensive updates to table/view editing capabilities inside Visual Studio's
Server Explorer. The program now parses and lets you edit CHECK constraints
and triggers on a table, as well as define triggers on views. Experimental
still, so e-mail me if you have issues.</li>
<li>Minor bugfix to the ViewColumns schema to return the proper base column name
for a view that aliases a column.</li>
<li>Fixed the insert/update/delete DML support in the Linq module.</li>
<li>Changed the behavior of SQLiteCommand to allow a transaction to be set even
if the command hasn't been associated with a connection yet.</li>
</ul>
<p>
<b>1.0.52.0 - July 16, 2008</b></p>
<ul>
<li>Code merge with SQLite 3.6.0</li>
<li>Added a lot of previously-missing exports to the DEF file for the native library.</li>
<li>Fixed SQLiteDataReader to check for an invalid connection before operating on
an open cursor.</li>
<li>Implemented the Cancel() function of SQLiteCommand to cancel an active reader.</li>
<li>Added beta table and view designers to the Visual Studio Server Explorer.
You can now edit/create tables and views, manage indexes and foreign keys from Visual
Studio. This feature is still undergoing testing so use at your own risk!</li>
<li>Fixed the Server Explorer so VS2005 users can once again right-click tables
and views and open the table data.</li>
<li>Added some new interop code to assist in returning more metadata not normally
available through the SQLite API. Specifically, index column sort modes and
collating sequences. Also added code to detect (but not parse) CHECK constraints,
so the table designer can pop up a warning when editing a table with these constraints.
Since I can't currently parse them.</li>
<li>Lots of LINQ SQL generation improvements and fixes.</li>
<li>Made some progress cleaning up and fixing up the schema definitions and manifests
for EdmGen.</li>
<li>Added a built-in SQLiteFunction called last_rows_affected() which can be called
from SQL to get the number of rows affected by the last update/insert operation
on the connection. This is roughly equivalent to Sql Server's @@ROWCOUNT
variable.</li>
</ul>
<p>
<b>1.0.51.0 - July 1, 2008</b></p>
<ul>
<li><b>VS2008 SP1 Beta1 LINQ Support</b></li>
<li>Added experimental Entity Framework support in a new library, System.Data.SQLite.Linq.
Some things work, some don't. I haven't finished rigging everything
up yet. The core library remains stable. All LINQ-specific code is completely
separate from the core.</li>
<li>Added some columns to several existing schemas to support some of the EDM framework
stuff.</li>
<li>Minor tweaks to the factory to better support dynamic loading of the Linq extension
library for SQLite.</li>
<li>SQLite's busy handler was interfering with the provider's busy handling
mechanism, so its been disabled.</li>
</ul>
<p>
<b>1.0.50.0 - June 27, 2008</b></p>
<ul>
<li>Fixed some lingering dispose issues and race conditions when some objects were
finalized.</li>
<li>Fixed the SQLiteConvert.Split() routine to be a little smarter when splitting
strings, which solves the quoted data source filename problem.</li>
<li>Enhanced the mergebin utility to work around the strong name validation bug
on the Compact Framework. The old workaround kludged the DLL and caused WM6.1
to fail to load it. This new solution is permanent and no longer kludges the
DLL.</li>
</ul>
<p>
<b>1.0.49.0 - May 28, 2008</b></p>
<ul>
<li>Code merge with SQLite 3.5.9</li>
<li>Fixed schema problems when querying the TEMP catalog.</li>
<li>Changed BLOB datatype schema to return IsLong = False instead of True.
This was preventing DbCommandBuilder from using GUID's and BLOB's as primary keys.</li>
<li>Fix rollover issue with SQLite3.Reset() using TickCount.</li>
<li>Fixed SQLiteDataReader to dispose of its command (if called for) before closing
the connection (when flagged to do so) instead of the other way around.</li>
<li>Fixed a DbNull error when retrieving items not backed by a table schema.</li>
<li>Fixed foreign key constraint parsing bug.</li>
<li>Added FailIfMissing property to the SQLiteConnectionStringBuilder.</li>
<li>Converted the source projects to Visual Studio 2008.</li>
</ul>
<p>
<b>1.0.48.0 - December 28, 2007</b></p>
<ul>
<li>Code merge with SQLite 3.5.4</li>
<li>Calling SQLiteDataReader.GetFieldType() on a column with no schema information
and whos first row is initially NULL now returns type Object instead of type DbNull.</li>
<li>Added support for a new DateTime type, JulianDay. SQLite uses Julian dates
internally.</li>
<li>Added a new connection string parameter "Default Timeout" and a corresponding
method on the SQLiteConnection object to change the default command timeout.
This is especially useful for changing the timeout on transactions, which use SQLiteCommand
objects internally and have no ADO.NET-friendly way to adjust the command timeout
on those commands.</li>
<li>FTS1 and FTS2 modules were removed from the codebase. Please upgrade all
full-text indexes to use the FTS3 module. </li>
</ul>
<p>
<b>1.0.47.2 - December 10, 2007</b></p>
<ul>
<li>Fixed yet one more bug when closing a database with unfinalized command objects</li>
<li>Fixed the DataReader's GetFieldType function when dealing with untyped SQLite
affinities</li>
</ul>
<p>
<b>1.0.47.1 - December 5, 2007</b></p>
<ul>
<li>Fixed a leftover bug from the codemerge with SQLite 3.5.3 that failed to close
a database.</li>
<li>Fixed the broken Compact Framework distribution binary.</li>
<li>SQLite 3.5.x changed some internal infrastructure pieces in the encryption interface
which I didn't catch initially. Fixed. </li>
</ul>
<p>
<b>1.0.47.0 - December 4, 2007</b></p>
<ul>
<li>Code merge with SQLite 3.5.3</li>
<li>Added installer support for Visual Studio 2008. Code is still using the
VS2005 SDK so one or two bells and whistles are missing, but nothing significant.</li>
<li>This is the last version that the FTS1 and FTS2 extensions will appear.
Everyone should rebuild their fulltext indexes using the new FTS3 module.
FTS1 and FTS2 suffer from a design flaw that could cause database corruption with
certain vacuum operations.</li>
<li>Fixed pooled connections so they rollback any outstanding transactions before
going to the pool. </li>
<li>Fixed the unintended breaking of the TYPES keyword, and mis-typing of untyped
or indeterminate column types. </li>
<li>Assert a FileIOPermission() requirement in the static SQLiteFunction constructor.
</li>
<li>The CE-only SQLiteFunction.RegisterFunction() is now available on the desktop
platform for dynamic registration of functions. You must still close and re-open
a connection in order for the new function to be seen by a connection.</li>
<li>Fixed the "database is locked" errors by implementing behavioral changes in
the interop.c file for SQLite. Closing a database force-finalizes any prepared
statements on the database to ensure the connection is fully closed. This
was rather tricky because the GC thread could still be finalizing statements itself.
</li>
<li>Modifed the mergebin utility to help circumvent a long-standing strong name
verification bug in the Compact Framework.</li>
</ul>
<p>
<b>1.0.46.0 - September 30, 2007</b></p>
<ul>
<li>Fixed faulty logic in type discovery code when using SQLiteDataReader.GetValue().</li>
<li>Fixed Connection.Open() bug when dealing with :memory: databases.</li>
<li>Fixed SQLiteCommand.ExecuteScalar() to return a properly-typed value.</li>
<li>Added support for SQLiteParameter.ResetDbType().</li>
<li>Added test cases for rigid and flexible type testing.</li>
</ul>
<p>
<b>1.0.45.0 - September 25, 2007</b></p>
<ul>
<li><strong>Breaking change in GetSchema("Indexes") </strong>-- MetaDataCollections
restrictions and identifier parts counts were wrong for this schema and I was using
the wrong final parameter as the final restriction. Meaning, if you use the
Indexes schema and are querying for a specific index the array should now be {catalog,
null, table, index } instead of {catalog, null, table, null, index}</li>
<li>Code merge with SQLite 3.4.2</li>
<li>Fixed some errors in the encryption module, most notably when a non-default
page size is specified in the connection string. </li>
<li>Fixed SQLiteDataReader to better handle type-less usage scenarios, which also
fixes problems with null values and datetimes.</li>
<li>Fixed the leftover temp files problem on WinCE </li>
<li>Added connection pooling. The default is disabled for now, but may change
in the future. Set "Pooling=True" in the connection string to enable it. </li>
<li>Sped up SQLiteConnection.Open() considerably.</li>
<li>Added some more robust cleanup code regarding SQLiteFunctions.</li>
<li>Minor additions to the code to allow for future LINQ integration into the main
codebase.</li>
<li>Fixed a long-standing bug in the Open() command of SQLiteConnection which failed
to honor the documented default behavior of the SQLite.NET provider to open the
database in "Synchronous=Normal" mode. The default was "Full". </li>
<li>If Open() fails, it no longer sets the connection state to Broken. It
instead reverts back to Closed, and cleans up after itself.</li>
<li>Added several new parameters to the ConnectionString for setting max page count,
legacy file format, and another called FailIfMissing to raise an error rather than
create the database file automatically if it does not already exist.</li>
<li>Fixed some designer toolbox references to the wrong version of the SQLite.Designer</li>
<li>Fixed a bug in the mergebin utility with regards to COR20 metadata rowsize computations.
</li>
<li>Minor documentation corrections </li>
</ul>
<p>
<b>1.0.44.0 - July 21, 2007</b></p>
<ul>
<li>Code merge with SQLite 3.4.1</li>
<li>Fixed a bug in SQLiteConnection.Open() which threw the wrong kind of error in
the wrong kind of way when a database file could not be opened or created. </li>
<li>Small enhancements to the TYPES keyword, and added documentation for it in the
help file.</li>
<li>Hopefully fixed the occasional SQLITE_BUSY errors that cropped up when starting
a transaction. Usually occurred in high-contention scenarios, and the underlying
SQLite engine bypasses the busy handler in this scenario to return immediately.</li>
</ul>
<p>
<b>1.0.43.0 - June 21, 2007</b></p>
<ul>
<li>Code merge with SQLite 3.4.0</li>
<li>Fixed a reuse bug in the SQLiteDataAdapter in conjunction with the SQLiteCommandBuilder.
It's been there unnoticed for more than a year, so it looks like most folks never
encountered it. </li>
<li>Fixed an event handler bug in SQLiteCommandBuilder in which it could fail to
unlatch from the DataAdapter when reused. Relates to the previous bugfix.</li>
<li>Fixed a double-dispose bug in SQLiteStatement that triggered a SQLiteException. </li>