forked from zzzprojects/sqlite-provider
-
Notifications
You must be signed in to change notification settings - Fork 0
/
readme.htm
1983 lines (1951 loc) · 121 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.110.0 - March 4, 2019<br />
Using <a href="https://www.sqlite.org/releaselog/3_27_2.html">SQLite 3.27.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="https://system.data.sqlite.org/">https://system.data.sqlite.org/</a><br />
Legacy versions: <a href="https://sourceforge.net/projects/sqlite-dotnet2/">https://sourceforge.net/projects/sqlite-dotnet2/</a><br />
<br />
The current development version can be downloaded from <a href="https://system.data.sqlite.org/index.html/timeline?y=ci">
https://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/2013/2015. 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 (Desktop 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.110.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 .NET 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 or Deploying System.Data.SQLite</b></h2>
<p>
On the desktop, when using the statically linked mixed-mode assembly, only the
<strong>System.Data.SQLite.dll</strong> file needs to be distributed with your
application(s). This dynamic link library contains both the managed provider
and the SQLite native library. For other build configurations, including those
for the .NET Compact Framework, you will need to distribute both the managed
provider <strong>System.Data.SQLite.dll</strong>, as well as the associated
native library <strong>SQLite.Interop.dll</strong> (or
<strong>SQLite.Interop.XXX.dll</strong> for the .NET Compact Framework). For
the .NET Compact Framework edition, this is a breaking change as of 1.0.59.0.
The recent versions of the .NET Compact Framework do not appear to properly
support mixed-mode assemblies. All builds of System.Data.SQLite, except those
explicitly marked as "static" in their package name, will also require
the associated <a href="https://support.microsoft.com/kb/2019667">Microsoft
Visual C++ Runtime Library</a> to be installed on the target machine. For
further details on distributing and/or deploying System.Data.SQLite, please
refer to the
<a href="https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki">System.Data.SQLite Downloads</a>
web page.
</p>
<h2><b>Development Notes Regarding the SQLite Native Library Source Code</b></h2>
<p>
The included SQLite native library is compiled directly from the official source
code releases available from the <a href="https://www.sqlite.org/">sqlite.org</a>
website.
</p>
<p>
In addition, there are several relatively small extensions included within the
System.Data.SQLite "interop assembly" and some of these extensions are
specific to the System.Data.SQLite project itself; however, the included SQLite
native library source code itself is compiled verbatim, using a set of fully
supported <a href="https://www.sqlite.org/compile.html">compile-time options</a>
designed for robustness and maximum backward compatibility with previously
released versions of System.Data.SQLite.
</p>
<h2><b>Version History</b></h2>
<p>
<b>1.0.110.0 - March 4, 2019</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_27_2.html">SQLite 3.27.2</a>.</li>
<li>Add HidePassword connection flag to remove the password from the connection string once the database is opened. Pursuant to [23d8d6171e].</li>
<li>Add experimental StrictConformance connection flag to force strict compliance to the ADO.NET standard. Pursuant to [e36e05e299].</li>
<li>Add support for the <a href="https://www.sqlite.org/session/c_changesetstart_invert.html">sqlite3changeset_start_v2()</a> and <a href="https://www.sqlite.org/session/c_changesetstart_invert.html">sqlite3changeset_start_v2_strm()</a> interfaces.</li>
</ul>
<p>
<b>1.0.109.0 - August 15, 2018</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_24_0.html">SQLite 3.24.0</a>.</li>
<li>Updated to <a href="https://www.nuget.org/packages/EntityFramework/6.2.0">Entity Framework 6.2.0</a>.</li>
<li>Do not attempt to initialize the logging subsystem more than once. <b>** Potentially Incompatible Change **</b></li>
<li>Prevent GetSchemaTable from throwing InvalidCastException. Fix for [baf42ee135].</li>
<li>Add preliminary support for the .NET Framework 4.7.2.</li>
<li>Add preliminary support for .NET Core 2.0 and the .NET Standard 2.0. Pursuant to [5c89cecd1b].</li>
<li>Add simpler overload for the SQLiteBlob.Create method. Pursuant to [dfc8133ba2].</li>
<li>Add GetFieldAffinity method to the SQLiteDataReader class.</li>
</ul>
<p>
<b>1.0.108.0 - March 2, 2018</b>
</p>
<ul>
<li>Support extended result codes when messages are looked up without the SQLite core library.</li>
<li>Override System.Object members for the SQLiteException class to improve its ToString return value. Pursuant to [53962f9eff].</li>
<li>More database connection configuration options for the <a href="https://www.sqlite.org/c3ref/db_config.html">sqlite3_db_config()</a> interface. <b>** Potentially Incompatible Change **</b></li>
<li>Set HResult property of SQLiteException based on the SQLite core library error code. <b>** Potentially Incompatible Change **</b></li>
<li>Modify experimental WaitForEnlistmentReset method to require a nullable boolean parameter for the value to return when the connection is disposed. <b>** Potentially Incompatible Change **</b></li>
</ul>
<p>
<b>1.0.107.0 - January 30, 2018</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_22_0.html">SQLite 3.22.0</a>.</li>
<li>Improve performance of type name lookups by removing superfluous locking and string creation.</li>
<li>Support asynchronous completion of distributed transactions. Fix for [5cee5409f8].</li>
<li>Add experimental WaitForEnlistmentReset method to the SQLiteConnection class. Pursuant to [7e1dd697dc].</li>
<li>Fix some internal memory accounting present only in the debug build.</li>
<li>Make sure inbound native delegates are unhooked before adding a connection to the pool. Fix for [0e48e80333].</li>
<li>Add preliminary support for the .NET Framework 4.7.1.</li>
<li>Updates to internal DbType mapping related lookup tables. Pursuant to [a799e3978f].</li>
</ul>
<p>
<b>1.0.106.0 - November 2, 2017</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_21_0.html">SQLite 3.21.0</a>.</li>
<li>Add full support for the native <a href="https://www.sqlite.org/sessionintro.html">session</a> extension.</li>
<li>Add BindDecimalAsText and GetDecimalAsText connection flags to force binding and returning of decimal values as text. Pursuant to [b167206ad3].</li>
<li>Add BindInvariantDecimal and GetInvariantDecimal connection flags, enabled by default, to force binding and returning of decimal values using the invariant culture. Pursuant to [b167206ad3]. <b>** Potentially Incompatible Change **</b></li>
<li>Add preliminary support for Visual Studio 2017 and the .NET Framework 4.7. This does <b>not</b> include support for the design-time components for Visual Studio, see [8292431f51].</li>
</ul>
<p>
<b>1.0.105.2 - June 12, 2017</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_19_3.html">SQLite 3.19.3</a>.</li>
<li>Fix issues that prevented SQLiteBlob creation from succeeding for tables that did not have an integer primary key.</li>
</ul>
<p>
<b>1.0.105.1 - May 15, 2017</b>
</p>
<ul>
<li>Prevent culture settings from negatively impacting integer connection string defaults.</li>
<li>Make sure the "No_SQLiteConnectionNewParser" and "DefaultFlags_SQLiteConnection" setting values end up being cached.</li>
<li>Cache the XML file name and assembly directory used by the configuration subsystem.</li>
</ul>
<p>
<b>1.0.105.0 - April 9, 2017</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_18_0.html">SQLite 3.18.0</a>.</li>
<li>Add experimental support for native sha1 extension.</li>
</ul>
<p>
<b>1.0.104.0 - December 16, 2016</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_15_2.html">SQLite 3.15.2</a>.</li>
<li>Add the "%PreLoadSQLite_AssemblyDirectory%", "%PreLoadSQLite_TargetFramework%", and "%PreLoadSQLite_XmlConfigDirectory%" <a href="https://system.data.sqlite.org/index.html/artifact?ci=trunk&filename=Doc/Extra/Provider/environment.html">replacement tokens</a> for use in configuration setting values. Pursuant to [d4728aecb7].</li>
<li>Prevent the GetByte, GetChar, and GetInt16 methods of the SQLiteDataReader class from throwing exceptions for large integer values. Pursuant to [5535448538]. <b>** Potentially Incompatible Change **</b></li>
<li>Use <a href="https://www.sqlite.org/lang_savepoint.html">SAVEPOINTs</a> to properly implement nested transactions when the new AllowNestedTransactions connection flag is used. Pursuant to [1f7bfff467].</li>
<li>When converting a Julian Day value to an integer, round to the nearest millisecond first. Pursuant to [69cf6e5dc8]. <b>** Potentially Incompatible Change **</b></li>
</ul>
<p>
<b>1.0.103.0 - September 15, 2016</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_14_2.html">SQLite 3.14.2</a>.</li>
<li>Add preliminary support for the .NET Framework 4.6.2.</li>
<li>Change the SQLiteReadValueCallback delegate "eventArgs" parameter to be of type SQLiteReadEventArgs. <b>** Potentially Incompatible Change **</b></li>
<li>Make SQLiteReadValueEventArgs and SQLiteReadArrayEventArgs derive from SQLiteReadEventArgs. <b>** Potentially Incompatible Change **</b></li>
<li>Rename SQLiteReadValueEventArgs.ArrayEventArgs property to ExtraEventArgs. <b>** Potentially Incompatible Change **</b></li>
<li>Add No_SQLiteGetSettingValue and No_SQLiteXmlConfigFile environment variables.</li>
<li>Reduce the number of calls to GetSettingValue from SQLiteConnection. Pursuant to [25d53b48f6]. <b>** Potentially Incompatible Change **</b></li>
<li>Add NoVerifyTypeAffinity connection flag to disable all type affinity checking.</li>
<li>Add support for <a href="https://www.sqlite.org/c3ref/blob_open.html">incremental blob I/O</a>.</li>
<li>Improve support for the <a href="https://www.sqlite.org/c3ref/db_config.html">sqlite3_db_config()</a> interface. Pursuant to [f64f4aee95].</li>
</ul>
<p>
<b>1.0.102.0 - June 23, 2016</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_13_0.html">SQLite 3.13.0</a>.</li>
<li>Update the SQLiteConnection.EnableExtensions method to make use of the new SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION option, when available. <b>** Potentially Incompatible Change **</b></li>
<li>Prevent the SQLiteCommand.ExecuteScalar method from throwing an exception when there are no result columns. <b>** Potentially Incompatible Change **</b></li>
<li>Support per-connection customization for binding parameters and reading values, based on the database type name.</li>
<li>Add TypeName property to the SQLiteParameter class.</li>
<li>Add VerifyOnly method to the SQLiteCommand class.</li>
<li>Add IsReadOnly method to the SQLiteConnection class.</li>
</ul>
<p>
<b>1.0.101.0 - April 19, 2016</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_12_2.html">SQLite 3.12.2</a>.</li>
<li>Add binary package release for Mono on POSIX.</li>
</ul>
<p>
<b>1.0.100.0 - April 15, 2016</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_12_1.html">SQLite 3.12.1</a>.</li>
<li>Support compiling and using the interop assembly on Linux and Mac OS X.</li>
<li>Support running the test suite under Mono on Linux and Mac OS X.</li>
<li>Properly handle NULL values in the "name" column of the results returned by PRAGMA index_info(). Fix for [5251bd0878].</li>
<li>For column types that resolve to boolean, recognize case-insensitive prefixes of "True" and "False". Fix for [dbd65441a5].</li>
<li>Add NoVerifyTextAffinity connection flag to skip type affinity checking when fetching a column value as a string. Pursuant to [dbd65441a5].</li>
<li>The UnixEpoch DateTime format should use Int64 internally, not Int32. <b>** Potentially Incompatible Change **</b></li>
<li>Avoid using Path.Combine with null values in the native library pre-loader. Fix for [da685c0bac].</li>
<li>Fix the (unsupported) legacy CryptoAPI based codec so that it no longer prevents page size changes.</li>
</ul>
<p>
<b>1.0.99.1 - March 31, 2016</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_9_3.html">SQLite 3.9.3</a>.</li>
</ul>
<p>
<b>1.0.99.0 - December 9, 2015</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_9_2.html">SQLite 3.9.2</a>.</li>
<li>Add preliminary support for the .NET Framework 4.6.1.</li>
<li>Fix handling of sqlite3_index_info members not available with older versions of the SQLite core library. <b>** Potentially Incompatible Change **</b></li>
<li>Update and improve documentation comments for the native virtual table methods.</li>
<li>Permit an existing registered function to be replaced. Fix for [2556655d1b].</li>
<li>Make GetValue work for boolean columns with textual "True" and "False" values. Fix for [7714b60d61]. <b>** Potentially Incompatible Change **</b></li>
<li>Add Reset method to the SQLiteCommand class.</li>
<li>Add FileName property to the SQLiteConnection class.</li>
<li>Add experimental support for the native json1 and fts5 extensions.</li>
<li>Add GetDatabaseName, GetTableName, and GetOriginalName methods to the SQLiteDataReader class.</li>
</ul>
<p>
<b>1.0.98.0 - August 19, 2015</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_8_11_1.html">SQLite 3.8.11.1</a>.</li>
<li>Add full support for Visual Studio 2015 and the .NET Framework 4.6.</li>
<li>Add support for creating custom SQL functions using delegates.</li>
<li>Implement the Substring method for LINQ using the "substr" core SQL function. <b>** Potentially Incompatible Change **</b></li>
<li>Prevent encrypted connections from being used with the connection pool. Pursuant to [89d3a159f1]. <b>** Potentially Incompatible Change **</b></li>
<li>Honor the second argument to Math.Round when using LINQ. <b>** Potentially Incompatible Change **</b></li>
<li>Honor the pre-existing flags for connections during the Open method. Fix for [964063da16]. <b>** Potentially Incompatible Change **</b></li>
<li>Remove errant semi-colons from the SQL used by LINQ to INSERT and then SELECT rows with composite primary keys. Fix for [9d353b0bd8].</li>
<li>Refactor INSERT/UPDATE handling (in the LINQ assembly) so it can handle composite and non-integer primary keys. Fix for [41aea496e0].</li>
<li>Change the base type for the SQLiteConnectionFlags enumeration to long integer. <b>** Potentially Incompatible Change **</b></li>
<li>Add extended return codes to the SQLiteErrorCode enumeration. Pursuant to [71bedaca19]. <b>** Potentially Incompatible Change **</b></li>
<li>Improve exception handling in all native callbacks implemented in the SQLiteConnection class.</li>
<li>Add Progress event and ProgressOps connection string property to enable raising progress events during long-running queries.</li>
<li>Add "Recursive Triggers" connection string property to enable or disable the recursive trigger capability. Pursuant to [3a82ee635b].</li>
<li>Add NoDefaultFlags connection string property to prevent the default connection flags from being used. Pursuant to [964063da16].</li>
<li>Add VfsName connection string property to allow a non-default VFS to be used by the SQLite core library.</li>
<li>Add BusyTimeout connection string property to set the busy timeout to be used by the SQLite core library.</li>
<li>Add UnbindFunction and UnbindAllFunctions methods to the SQLiteConnection class.</li>
<li>Enable integration with the <a href="http://www.hwaci.com/sw/sqlite/zipvfs.html">ZipVFS</a> extension.</li>
</ul>
<p>
<b>1.0.97.0 - May 26, 2015</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_8_10_2.html">SQLite 3.8.10.2</a>.</li>
<li>Updated to <a href="https://www.nuget.org/packages/EntityFramework/6.1.3">Entity Framework 6.1.3</a>.</li>
<li>Improve ADO.NET conformance of the SQLiteDataReader.RecordsAffected property. Fix for [74542e702e]. <b>** Potentially Incompatible Change **</b></li>
<li>Prevent the IDataReader.GetDataTypeName method from throwing "No current row" exceptions. Fix for [94252b9059].</li>
<li>When BinaryGUID handling is off, transform the LINQ parameter types as well. Fix for [a4d9c7ee94]. <b>** Potentially Incompatible Change **</b></li>
<li>The IDataReader.GetDataTypeName method should always return the declared type name. <b>** Potentially Incompatible Change **</b></li>
<li>Add DefaultFlags_SQLiteConnection environment variable to enable customization of the default connection flags.</li>
<li>Prevent calls to sqlite3_step() and sqlite3_interrupt() from being interrupted via ThreadAbortException.</li>
<li>Make sure enabling UseUTF16Encoding sets the schema encoding to UTF-16. Fix for [7c151a2f0e].</li>
</ul>
<p>
<b>1.0.96.0 - March 5, 2015</b>
</p>
<ul>
<li>Prevent the IDataReader.GetOrdinal method from throwing "No current row" exceptions. Fix for [c28d7fe915].</li>
<li>When counting the number of tables in the GetSchemaTable method, do not include those that have a null or empty name. Fix for [92dbf1229a].</li>
</ul>
<p>
<b>1.0.95.0 - March 2, 2015</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_8_8_3.html">SQLite 3.8.8.3</a>.</li>
<li>Updated to <a href="https://www.nuget.org/packages/EntityFramework/6.1.2">Entity Framework 6.1.2</a>.</li>
<li>Modify configuration file transforms performed by the NuGet packages to allow Entity Framework 6 design-time integration to work automatically. Fix for [2be4298631], [abad7c577d], and [417d669435].</li>
<li>The "System.Data.SQLite.EF6*" and "System.Data.SQLite.Linq*" NuGet packages no longer depend on the "System.Data.SQLite.Core*" packages. <b>** Potentially Incompatible Change **</b></li>
<li>The "System.Data.SQLite.MSIL*" NuGet packages no longer directly include any files; they are now meta-packages. <b>** Potentially Incompatible Change **</b></li>
<li>The "System.Data.SQLite.x86*" and "System.Data.SQLite.x64*" NuGet packages now depend on the "System.Data.SQLite.Linq" and "System.Data.SQLite.EF6" NuGet packages. <b>** Potentially Incompatible Change **</b></li>
<li>Make sure SQL statements generated for DbUpdateCommandTree objects are properly delimited.</li>
<li>Make sure SQLiteIndexOutputs.ConstraintUsages instances are created prior to calling ISQLiteManagedModule.BestIndex. Fix for [56f511d268].</li>
<li>Correct marshalling of strings and blobs in the SQLiteValue class. Fix for [85b824b736].</li>
<li>Various minor performance enhancements to the SQLiteDataReader class. Pursuant to [e122d26e70].</li>
<li>Defer disposing of connections created by the static SQLiteCommand.Execute method when a data reader is returned. Fix for [daeaf3150a].</li>
<li>Wrap SELECT statements in parenthesis if they have an ORDER BY, LIMIT, or OFFSET clause and a compound operator is involved. Fix for [0a32885109].</li>
<li>In the SQLiteDataReader.VerifyType method, remove duplicate "if" statement for the DbType.SByte value and move the remaining "if" to the Int64 affinity. Fix for [c5cc2fb334]. <b>** Potentially Incompatible Change **</b></li>
<li>Handle Julian Day values that fall outside of the supported range for OLE Automation dates. Fix for [3e783eecbe]. <b>** Potentially Incompatible Change **</b></li>
<li>Make sure the interop files are copied when publishing a project that refers to a NuGet package containing them. Fix for [e796ac82c1]. <b>** Potentially Incompatible Change **</b></li>
<li>Make sure the interop files are copied before the PostBuildEvent. Fix for [f16c93a932]. <b>** Potentially Incompatible Change **</b></li>
<li>Modify GetSchemaTable method to avoid setting SchemaTableColumn.IsKey column to true when more than one table is referenced. Fix for [47c6fa04d3]. <b>** Potentially Incompatible Change **</b></li>
<li>Add AppendManifestToken_SQLiteProviderManifest environment variable to enable better integration between LINQ and the underlying store connection.</li>
<li>Add SQLite_ForceLogPrepare environment variable to force logging of all prepared SQL regardless of the flags for the associated connection.</li>
<li>Honor the DateTimeFormat, DateTimeKind, DateTimeFormatString, BinaryGUID connection string and/or provider manifest token properties from within the LINQ assembly. Fix for [8d928c3e88]. <b>** Potentially Incompatible Change **</b></li>
<li>Add PrepareRetries connection string property to allow the maximum number of retries when preparing a query to be overridden. Fix for [647d282d11].</li>
<li>Add BindDateTimeWithKind connection flag to force DateTime parameter values to match the DateTimeKind associated with the connection, if applicable. Fix for [a7d04fb111].</li>
</ul>
<p>
<b>1.0.94.0 - September 9, 2014</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_8_6.html">SQLite 3.8.6</a>.</li>
<li>Updated to <a href="https://www.nuget.org/packages/EntityFramework/6.1.1">Entity Framework 6.1.1</a>.</li>
<li>Refactor and simplify NuGet packages in order to support per-solution SQLite interop assembly files. <b>** Potentially Incompatible Change **</b></li>
<li>Add RefreshFlags method to the SQLiteDataReader class to forcibly refresh its connection flags.</li>
<li>Improve automatic detection and handling of the Entity Framework 6 assembly by the design-time components installer. Pursuant to [e634e330a6]. <b>** Potentially Incompatible Change **</b></li>
<li>Improve SQLiteDataReader performance slightly by caching the connection flags. <b>** Potentially Incompatible Change **</b></li>
<li>Add ClearCachedSettings method to the SQLiteConnection class.</li>
<li>Add NoConvertSettings connection flag to disable querying of runtime configuration settings from within the SQLiteConvert class. Pursuant to [58ed318f2f].</li>
<li>Minimize usage of the "Use_SQLiteConvert_DefaultDbType" and "Use_SQLiteConvert_DefaultTypeName" settings. Fix for [58ed318f2f]. <b>** Potentially Incompatible Change **</b></li>
</ul>
<p>
<b>1.0.93.0 - June 23, 2014</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_8_5.html">SQLite 3.8.5</a>.</li>
<li>Updated to <a href="https://www.nuget.org/packages/EntityFramework/6.1">Entity Framework 6.1</a>.</li>
<li>Add support for mapping transaction isolation levels to their legacy default values. Pursuant to [56b42d99c1].</li>
<li>Add support for setting the default DbType and type name used for mappings on a per-connection basis. Pursuant to [3c00ec5b52].</li>
<li>Add DetectTextAffinity and DetectStringType connection flags to enable automatic detection of column types, when necessary. Pursuant to [3c00ec5b52].</li>
<li>Add SetChunkSize method to the SQLiteConnection class. Pursuant to [d1c008fa0a].</li>
<li>Add SharedFlags static property to the SQLiteConnection class.</li>
<li>Make the ISQLiteSchemaExtensions interface public. <b>** Potentially Incompatible Change **</b></li>
<li>Have the SQLiteProviderFactory class (in the System.Data.SQLite.Linq assembly) implement the IServiceProvider interface.</li>
<li>Fix bug in documentation generator automation that prevented some internal documentation links from working.</li>
<li>Fix DateTime constant handling in the LINQ assembly. Fix for [da9f18d039]. <b>** Potentially Incompatible Change **</b></li>
</ul>
<p>
<b>1.0.92.0 - March 19, 2014</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_8_4_1.html">SQLite 3.8.4.1</a>.</li>
<li>Update the list of keywords returned by SQLiteConnection.GetSchema("ReservedWords"). <b>** Potentially Incompatible Change **</b></li>
<li>Raise the static SQLiteConnection.Changed event when any SQLiteCommand or SQLiteDataReader object is closed or disposed.</li>
<li>Add the SQLiteDataReader.StepCount property to return the number of rows seen so far.</li>
<li>Add StickyHasRows connection flag to cause the SQLiteDataReader.HasRows property to return non-zero if there were ever any rows in the associated result sets.</li>
<li>When the TraceWarning connection flag is set, issue warnings about possibly malformed UNC paths. Pursuant to [283344397b].</li>
<li>Convert the primary NuGet package, "System.Data.SQLite", into a meta-package.</li>
<li>Enhancements to the NuGet packages, including the new "modular" packages.</li>
</ul>
<p>
<b>1.0.91.0 - February 12, 2014</b>
</p>
<ul>
<li>Updated to <a href="https://www.sqlite.org/releaselog/3_8_3_1.html">SQLite 3.8.3.1</a>.</li>
<li>Refresh all included SQLite core library documentation (e.g. SQL syntax).</li>
<li>Add support for <a href="https://entityframework.codeplex.com/">Entity Framework 6</a>.</li>
<li>Add support for per-connection mappings between type names and DbType values. Pursuant to [e87af1d06a].</li>
<li>Modify the namespace used for all internal classes in the System.Data.SQLite.Linq assembly. <b>** Potentially Incompatible Change **</b></li>
<li>Add SQLiteCompileOptions and InteropCompileOptions properties to the SQLiteConnection class to return the compile-time options for the SQLite core library and interop assembly, respectively.</li>
<li>Add BindInvariantText and ConvertInvariantText connection flags to force the invariant culture to be used when converting parameter values to/from strings.</li>
<li>Add NoConnectionPool and UseConnectionPool connection flags to disable or enable connection pooling by default.</li>
<li>Modify handling of the design-time components installer to run Visual Studio <b>devenv.exe /setup</b> after installing the package. This appears to be necessary in some circumstances for Visual Studio 2013. Pursuant to [a47eff2c71].</li>
<li>Modify the native library pre-loader to support reading settings from an XML configuration file and to be capable of checking more than one directory. Persuant to [f0246d1817].</li>
<li>Support detecting when the native library pre-loader should use the CodeBase property instead of the Location property as the basis for locating the interop assembly.</li>
<li>Change the default behavior for the native library pre-loader so it first searches the executing (i.e. System.Data.SQLite) assembly directory and then the application domain directory. Pursuant to [f0246d1817]. <b>** Potentially Incompatible Change **</b></li>
<li>Include DbType.AnsiString in the list of types that need special ColumnSize handling. Fix for [0550f0326e].</li>
</ul>
<p>
<b>1.0.90.0 - December 23, 2013</b>
</p>
<ul>
<li>Updated to <a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://www.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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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="https://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>