-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreadme.htm
More file actions
1790 lines (1758 loc) · 108 KB
/
readme.htm
File metadata and controls
1790 lines (1758 loc) · 108 KB
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.96.0 - March 5, 2015<br />
Using <a href="https://www.sqlite.org/releaselog/3_8_8_3.html">SQLite 3.8.8.3</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="http://sqlite.phxsoftware.com/">http://sqlite.phxsoftware.com/</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. 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.96.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.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="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="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>
<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="https://www.sqlite.org/contrib">
https://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>