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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
|
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
<html dir="LTR" xmlns="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:MSHelp="http://msdn.microsoft.com/mshelp" xmlns:tool="http://www.microsoft.com/tooltip" xmlns:ndoc="urn:ndoc-preprocess">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<title>Version History</title>
<link rel="stylesheet" type="text/css" href="ndoc.css" />
</head>
<body>
<div id="header">
<table width="100%" id="topTable">
<tr id="headerTableRow1">
<td align="left">
<span id="runningHeaderText">Version History</span>
</td>
</tr>
<tr id="headerTableRow2">
<td align="left">
<span id="nsrTitle">SQLite.NET Class Library Documentation</span>
</td>
</tr>
<tr id="headerTableRow3" style="display:none">
<td>
<a id="seeAlsoSectionLink" href="#seeAlsoToggle" onclick="OpenSection(seeAlsoToggle)">See Also</a>
<a id="exampleSectionLink" href="#codeExampleToggle" onclick="OpenSection(codeExampleToggle)">Example</a>
</td>
</tr>
</table>
<table width="100%" id="bottomTable" cellspacing="0" cellpadding="0" style="display:none">
<tr>
<td>
<span onclick="ExpandCollapseAll(toggleAllImage)" style="cursor:default;" onkeypress="ExpandCollapseAll_CheckKey(toggleAllImage)" tabindex="0">
<img ID="toggleAllImage" class="toggleAll" src="collall.gif" />
<label id="collapseAllLabel" for="toggleAllImage" style="display: none;">
Collapse All
</label>
<label id="expandAllLabel" for="toggleAllImage" style="display: none;">
Expand All
</label>
</span>
</td>
</tr>
</table>
</div>
<div id="mainSection">
<div id="mainBody">
<h1 class="heading">Version History</h1>
<p><b>1.0.77.0 - November 28, 2011</b></p>
<ul>
<li>Updated to SQLite 3.7.9 <a href="http://www.sqlite.org/src/info/a499ae3835">[a499ae3835]</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 <a href="http://system.data.sqlite.org/index.html/info/2ce0870fad">[2ce0870fad]</a>.</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 <a href="http://system.data.sqlite.org/index.html/info/566f1ad1e4">[566f1ad1e4]</a>.</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 <a href="http://system.data.sqlite.org/index.html/info/7e3fa93744">[7e3fa93744]</a>.</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 <a href="http://system.data.sqlite.org/index.html/info/343d392b51">[343d392b51]</a>.</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 <a href="http://system.data.sqlite.org/index.html/info/343d392b51">[343d392b51]</a>.</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 <a href="http://system.data.sqlite.org/index.html/info/737ca4ff74">[737ca4ff74]</a>.</li>
<li>Formally support the SQL type name BOOLEAN in addition to BOOL. Fix for <a href="http://system.data.sqlite.org/index.html/info/544dba0a2f">[544dba0a2f]</a>.</li>
<li>Make sure the SQLiteConvert.TypeNameToDbType method is thread-safe. Fix for <a href="http://system.data.sqlite.org/index.html/info/84718e79fa">[84718e79fa]</a>.</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 <a href="http://system.data.sqlite.org/index.html/info/0d5b1ef362">[0d5b1ef362]</a>.</li>
<li>Stop allowing non-default application domains to initialize the SQLiteLog class. Fix for <a href="http://system.data.sqlite.org/index.html/info/ac47dd230a">[ac47dd230a]</a>.</li>
</ul>
<p><b>1.0.75.0 - October 3, 2011</b></p>
<ul>
<li>Updated to SQLite 3.7.8 <a href="http://www.sqlite.org/src/info/3e0da808d2">[3e0da808d2]</a>.</li>
<li>More enhancements to the build system.</li>
<li>Add official <a href="http://www.nuget.org/">NuGet</a> packages for x86 and x64.</li>
<li>Add Changes and LastInsertRowId properties to the connection class.</li>
<li>Support more formats when converting data from/to the DateTime type.</li>
<li>Make all the assembly versioning attributes consistent.</li>
<li>Add unit testing infrastructure using <a href="http://eagle.to/">Eagle</a>.</li>
<li>Integrate all legacy unit tests, including the "testlinq" project, into the new test suite.</li>
<li>Add projects to build the interop assembly statically linked to the Visual C++ runtime. Fix for <a href="http://system.data.sqlite.org/index.html/info/53f0c5cbf6">[53f0c5cbf6]</a>.</li>
<li>Add SQLITE_ENABLE_STAT2 compile-time option to the interop assembly. Fix for <a href="http://system.data.sqlite.org/index.html/info/74807fbf27">[74807fbf27]</a>.</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 <a href="http://system.data.sqlite.org/index.html/info/ccfa69fc32">[ccfa69fc32]</a>.</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 <a href="http://system.data.sqlite.org/index.html/info/b4a7ddc83f">[b4a7ddc83f]</a>.</li>
<li>Support Skip operation for LINQ using OFFSET. Fix for <a href="http://system.data.sqlite.org/index.html/info/8b7d179c3c">[8b7d179c3c]</a>.</li>
<li>Support EndsWith operation for LINQ using SUBSTR. Fix for <a href="http://system.data.sqlite.org/index.html/info/59edc1018b">[59edc1018b]</a>.</li>
<li>Support all SQLite journal modes. Fix for <a href="http://system.data.sqlite.org/index.html/info/448d663d11">[448d663d11]</a>.</li>
<li>Do not throw exceptions when disposing SQLiteDataReader. Fix for <a href="http://system.data.sqlite.org/index.html/info/e1b2e0f769">[e1b2e0f769]</a>.</li>
<li>The REAL type should be mapped to System.Double. Fix for <a href="http://system.data.sqlite.org/index.html/info/2c630bffa7">[2c630bffa7]</a> and <a href="http://system.data.sqlite.org/index.html/info/b0a5990f48">[b0a5990f48]</a>.</li>
<li>Minor optimization to GetParamValueBytes(). Fix for <a href="http://system.data.sqlite.org/index.html/info/201128cc88">[201128cc88]</a>.</li>
<li>Support the ON UPDATE, ON DELETE, and MATCH clause information when generating schema metadata for foreign keys. Partial fix for <a href="http://system.data.sqlite.org/index.html/info/b226147b37">[b226147b37]</a>. 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 SQLite 3.7.7.1 <a href="http://www.sqlite.org/src/info/af0d91adf4">[af0d91adf4]</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 SQLite 3.7.6.3 <a href="http://www.sqlite.org/src/info/ed1da510a2">[ed1da510a2]</a>.</li>
<li>Minor optimization to GetBytes(). Fix for <a href="http://system.data.sqlite.org/index.html/info/8c1650482e">[8c1650482e]</a>.</li>
<li>Update various assembly information settings.</li>
<li>Correct System.Data.SQLite.Linq version and resource information. Fix for <a href="http://system.data.sqlite.org/index.html/info/6489c5a396">[6489c5a396]</a> and <a href="http://system.data.sqlite.org/index.html/info/133daf50d6">[133daf50d6]</a>.</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 <a href="http://system.data.sqlite.org/index.html/info/e058ce156e">[e058ce156e]</a>.</li>
</ul>
<p><b>1.0.72.0 - May 1, 2011</b></p>
<ul>
<li>Add the correct directory to the path. Fix for <a href="http://system.data.sqlite.org/index.html/info/50515a0c8e">[50515a0c8e]</a>.</li>
</ul>
<p><b>1.0.71.0 - April 27, 2011</b></p>
<ul>
<li>Updated to SQLite 3.7.6+ <a href="http://www.sqlite.org/src/info/1bd1484cd7">[1bd1484cd7]</a> to get additional Windows error logging.</li>
<li>Updated setup to optionally add install directory to PATH if GAC option selected.</li>
</ul>
<p><b>1.0.69.0 - April 12, 2011</b></p>
<ul>
<li>Code merge with SQLite 3.7.6</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 SQLite 3.7.5</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 SQLite 3.7.4</li>
<li>Continuing work on supporting Visual Studio 2010</li>
</ul>
<p><b>1.0.66.1 - August 1, 2010</b></p>
<ul>
<li>Code merge with SQLite 3.7.0.1</li>
<li>Re-enabled VS2005 designer support, broken in previous versions during the 2008 transition</li>
<li>Implemented new forms of Take/Skip in the EF framework courtesy jlsantiago</li>
<li>Added "Foreign Keys" to the connection string parameters</li>
<li>Added the Truncate option to the Journal Modes enumeration</li>
</ul>
<p><b>1.0.66.0 - April 18, 2010</b></p>
<ul>
<li>Code merge with SQLite 3.6.23.1</li>
<li>Fixed a bug in the installer that accidentally modified the machine.config on .NET versions prior to 2.0, invaliding the config file.</li>
<li>Fixed INTERSECT and EXCEPT union query generation in EF</li>
<li>Fixed an out of memory error in the trigger designer in cases where a WHEN clause is used in the trigger</li>
</ul>
<p><b>1.0.65.0 - July 26, 2009</b></p>
<ul>
<li>Fixed a bug in the encryption module to prevent a double free() when rekeying a database.</li>
<li>Fixed a bug in the encryption module when ATTACHing an encrypted database.</li>
<li>Incorporated the WinCE locking fix from ticket
<a href="http://www.sqlite.org/cvstrac/tktview?tn=3991">#3991</a></li>
<li>Added "bigint" to the dropdown in the table designer, plus other minor table
designer bugfixes.</li>
</ul>
<p><b>1.0.64.0 - July 9, 2009</b></p>
<ul>
<li>Fixed the missing resources problem from the 63 release.</li>
<li>Added preliminary support for the Visual Studio 2010 beta.</li>
<li>Fixed a bug in SQLiteCommand that threw a null reference exception when
setting the Transaction object to null.</li>
<li>If SQLiteConnection.EnlistTransaction is called multiple times for the same
transaction scope, just return without throwing an error.</li>
</ul>
<p><b>1.0.63.0 - June 29, 2009</b></p>
<ul>
<li>Code merge with SQLite 3.6.16</li>
<li>Check the autocommit mode of the connection to which a transaction is bound
during the disposal of the transaction. If autocommit is enabled, then the
database has already rolled back the transaction and we don't need to do it
during dispose, and can quietly ignore the step without throwing an error.</li>
<li>Eliminated the mergebin step altogether. It was developed primarily to
merge the Compact Framework binaries together, but since we're not doing that
anymore, its use is limited. Its non-standard method of merging a binary
on the desktop framework is redundant as well. The desktop binary now
hard-links to MSCOREE, but as of Windows XP, this was redundant as well since XP
and beyond automatically attempt to load MSCOREE on startup when a DLL has a
.NET header.</li>
<li>More improvements to the test.exe program for running the tests against Sql
Server for comparison purposes.</li>
</ul>
<p><b>1.0.62.0 - June 20, 2009</b></p>
<ul>
<li>Code merge with SQLite 3.6.15</li>
<li>Fixed the decimal reading bug in the SQLiteDataReader</li>
<li>Changed Join()'s to Sleep()'s in the statement retry code to prevent message
pumping</li>
<li>Fixed a bad pointer conversion when retrieving blobs using GetBytes() in
64-bit land</li>
<li>Several changes to the Test program that comes with the provider. Tests
can now be individually disabled, and the test program can run against several
provider back-ends</li>
</ul>
<p><b>1.0.61.0 - April 28, 2009</b></p>
<ul>
<li>Code merge with SQLite 3.6.13. The new backup features are as yet unimplemented in the provider, but will be forthcoming in a subsequent release</li>
<li>Fixed the default-value lookups in SQLiteConnectionStringBuilder when accessing properties</li>
<li>Lock the SQLiteTransaction object during dispose to avoid potential race condition during cleanup</li>
<li>Fixed SQLiteDataReader.GetDecimal() processing and parsing of decimal values for cases when SQLite returns things like "1.0e-05" instead of "0.0001"</li>
</ul>
<p><b>1.0.60.0 - October 3, 2008</b></p>
<ul>
<li>Throw a NotSupported exception in the EF Sql Gen code instead of parsing
illegal SQL during an update/insert/delete where no primary key is defined.</li>
<li>Fixed the Compact Framework interop library. Since the linker flag
/subsystem had no version specified, it was causing a problem for many CE-based
platforms.</li>
<li>Incorporated SQLite patch for ticket
<a href="http://www.sqlite.org/cvstrac/tktview?tn=3387">#3387</a> and reverted
out the vfs override code I added in build 59 to work around this problem.</li>
<li>Fixed a designer issue when creating a new table from the Server Explorer.
After initially saving it, if you then continued to edit it and tried to save it
again, it would generate the change SQL using the old temporary table name
rather than the new name.</li>
</ul>
<p><b>1.0.59.0 - September 22, 2008</b></p>
<ul>
<li>Code merge with SQLite 3.6.3. Solves
a couple different EF issues that were either giving inconsistent results or
crashing the engine.</li>
<li>Fixed the parsing of literal binaries in the EF SqlGen code. SQLite now
passes nearly all the testcases in
<a href="http://sqlite.phxsoftware.com/forums/p/1377/5921.aspx#5921">Microsoft's EF Query Samples</a> application --
the exception being the <i>datetimeoffset </i>and<i> time</i> constants tests, and tests
that use the <i>APPLY </i>keyword which are unsupported for now.</li>
<li>Revamped the Compact Framework mixed-mode assembly. Tired of playing cat
and mouse with the Compact Framework's support for mixed-mode assemblies.
The CF build now requires that you distribute both the System.Data.SQLite
library and the paired SQLite.Interop.XXX library. The XXX denotes
the build number of the library.</li>
<li>Implemented a workaround for Vista's overzealous caching by turning off
FILE_FLAG_RANDOM_ACCESS for OS versions above XP. This is implemented
as a custom (default override) VFS in the interop.c file, so no changes are made
to the SQLite source code.</li>
<li>Fixed some registry issues in the designer install.exe, which prevented some
design-time stuff from working on the Compact Framework when .NET 3.5 was
installed.</li>
</ul>
<p><b>1.0.58.0 - August 30, 2008</b></p>
<ul>
<li>Code merge with SQLite 3.6.2. If only I'd waited one more day to release
57! Several LINQ issues have been resolved with this engine release
relating to deeply-nested subqueries that the EF SqlGen creates.</li>
<li>Fixed the Rollback SQLiteConnection event to not require a connection be
opened first.</li>
</ul>
<p><b>1.0.57.0 - August 29, 2008</b></p>
<ul>
<li>Compiled against 3.6.1 with checkin
<a href="http://www.sqlite.org/cvstrac/tktview?tn=3300">#3300</a> resolved,
which fixes an Entity Framework bug I was seeing. I currently have 3 other
tickets out on the engine, which are not yet resolved and relate to EF.</li>
<li>Fixed decimal types to store and fetch using InvariantCulture. If you're
using decimal datatypes in your database and were affected by the 56 release,
please issue an UPDATE <table> SET <column> = REPLACE(<column>, ',', '.');
to fix the decimal separators. Apologies for not testing that more
thoroughly before releasing 56.</li>
<li>Too many LINQ fixes to list. Fixed views so they generate,
fixed the LIMIT clause, implemented additional functionality and removed unnecessary code.</li>
<li>Fixed foreign key names in the designer so viewing the SQL script on a new
unsaved table after renaming it in the properties toolwindow will reflect in the
script properly.</li>
<li>Fixed the Update and Commit events on SQLiteConnection so they don't require
the connection to be opened first.</li>
<li>Fixed userdef aggregate functions so they play nice with each other when
appearing multiple times in the same statement.</li>
<li>Fixed the editing and saving of default values in the table designer.</li>
<li>Fixed ForeignKeys schema to support multi-column foreign keys. Also
hacked support for them in the table designer, provided two foreign keys in the
designer have the same name and reference the same foreign table and different
columns. Will implement first-class support for this in the next release.</li>
</ul>
<p><b>1.0.56.0 - August 11, 2008</b></p>
<ul>
<li>Fixed a bug in the table designer when designing new tables, wherein you had to
save the table first before being able to create indexes and foreign keys.</li>
<li>Tweaks to decimal type handling. The 'decimal' type can't be represented
by Int64 or Double (without loss of precision) in SQLite, so we have to fudge it
by treating it like a string and converting it back and forth in the provider.
Unfortunately backing it to the db as a string causes sorting problems.
See <a href="http://sqlite.phxsoftware.com/forums/p/1296/5595.aspx#5595">this
post</a>
for details on using a custom collation sequence to overcome the sorting issue arising from this patch.</li>
<li>Minor tweaks and bugfixes to the test program and the provider.</li>
<li>More adjustments to make the managed-only version of the provider run and pass
all tests on Mono.</li>
<li>LINQ to Entities bits heavily updated and compiled against VS2008 SP1 RTM. SQLite
LINQ support is still considered beta.</li>
</ul>
<p><b>1.0.55.0 - August 6, 2008</b></p>
<ul>
<li>Code merge with SQLite 3.6.1</li>
<li>Added support for the user-contributed extension-functions at
<a href="http://www.sqlite.org/contrib">http://www.sqlite.org/contrib</a>.
Feel free to override any of them with your own implementation. The new
functions are: <i>acos, asin, atan, atn2, atan2, acosh, asinh, atanh,
difference, degrees, radians, cos, sin, tan, cot, cosh, sinh, tanh, coth, exp,
log, log10, power, sign, sqrt, square, ceil, floor, pi, replicate, charindex,
leftstr, rightstr, reverse, proper, padl, padr, padc, strfilter,</i> and
aggregates <i>stdev, variance, mode, median, lower_quartile, upper_quartile.</i></li>
<li>Moved the last_rows_affected() function to the C extension library.</li>
<li>Added a new class, SQLiteFunctionEx which extends SQLiteFunction and adds the
ability for a user-defined function to get the collating sequence during the
Invoke/Step methods. User-defined functions can use the collating sequence
as a helper to compare values.</li>
<li>When registering user-defined collation sequences and functions, the provider
will now register both a UTF8 and a UTF16 version instead of just UTF8.</li>
<li>Revamped connection pooling and added static ClearPool() and ClearAllPools()
functions to SQLiteConnection. Behavior of the pool and its clearing
mechanics match SqlClient.</li>
<li>Fixed connections going to the pool so that any unfinalized lingering commands
from un-collected datareaders are automatically reset and any lurking
transactions made on the connection are rolled back.</li>
<li>Transaction isolation levels are now partially supported. Serializable
is the default, which obtains read/write locks immediately -- this is compatible
with previous releases of the provider. Unspecified will default to
whatever the default isolation mode is set to, and ReadCommitted will cause a
deferred lock to be obtained. No other values are legal.</li>
<li>Revamped the test.exe program. It's now an interactive GUI application.
Easier for me to add tests now.</li>
<li>Tweaks to the VS designer package and installer.</li>
<li>More adjustments to the internal SQLite3.Prepare() method to account for both
kinds of lock errors when retrying.</li>
<li>Stripped a lot of unnecessary interop() calls and replaced with base sqlite calls.
Revamped most of UnsafeNativeMethods to make it easier to port the code.</li>
<li>Rerigged internal callbacks for userdef functions and other native to managed
callbacks. More portable this way.</li>
<li>Source can now can be compiled with the SQLITE_STANDARD preprocessor symbol to
force the wrapper to use the stock sqlite3 library. Some functionality is
missing, but its minimal. None of the precompiled binaries are compiled
using this setting, but its useful for testing portability.</li>
<li>Added "boolean" and a couple other missing datatypes to the "DataTypes" schema
xml file. Used by the VS designer when displaying tables and querying.</li>
<li>Added a new connection string option "Read Only". When set to True, the
database will be opened in read-only mode.</li>
<li>Added a new connection string option "Max Pool Size" to set the maximum size
of the connection pool for a given db file connection.</li>
<li>Added a new connection string option "Default IsolationLevel" to set the
default isolation level of transactions. Possible values are Serializable and
ReadCommitted.</li>
<li>Added a new connection string option "URI" as an optional parameter for
compatibility with other ports of the provider.</li>
</ul>
<p><b>1.0.54.0 - July 25, 2008</b></p>
<ul>
<li>Fixed the setup project, which somehow "forgot" to include all the binaries in
the 53 release.</li>
<li>Fixed a crash in the table designer when creating a new table and tabbing past
the "Allow Nulls" cell in the grid while creating a new column.</li>
<li>Fixed a mostly-benign bug in SQLiteDataReader's GetEnumerator, which failed to
pass along a flag to the underyling DbEnumerator it creates. This one's
been around since day 1 and nobody's noticed it in all these years.</li>
<li>Added a new connection string parameter "Journal Mode" that allows you to set
the SQLite journal mode to Delete, Persist or Off.</li>
</ul>
<p><b>1.0.53.0 - July 24, 2008</b></p>
<ul>
<li>Enabled sqlite_load_extension</li>
<li>Added retry/timeout code to SQLite3.Prepare() when preparing statements for
execution and a SQLITE_BUSY error occurs.</li>
<li>Added a new schema to SQLiteConnection.GetSchema() called <i>Triggers</i>.
Used to retrieve the trigger(s) associated with a database and/or table/view.</li>
<li>Extensive updates to table/view editing capabilities inside Visual Studio's
Server Explorer. The program now parses and lets you edit CHECK constraints and
triggers on a table, as well as define triggers on views. Experimental
still, so e-mail me if you have issues.</li>
<li>Minor bugfix to the ViewColumns schema to return the proper base column name
for a view that aliases a column.</li>
<li>Fixed the insert/update/delete DML support in the Linq module.</li>
<li>Changed the behavior of SQLiteCommand to allow a transaction to be set even if
the command hasn't been associated with a connection yet.</li>
</ul>
<p><b>1.0.52.0 - July 16, 2008</b></p>
<ul>
<li>Code merge with SQLite 3.6.0</li>
<li>Added a lot of previously-missing exports to the DEF file for the
native library.</li>
<li>Fixed SQLiteDataReader to check for an invalid connection before operating on
an open cursor.</li>
<li>Implemented the Cancel() function of SQLiteCommand to cancel an active reader.</li>
<li>Added beta table and view designers to the Visual Studio Server Explorer. You can now
edit/create tables and views, manage indexes and foreign keys from Visual Studio.
This feature is still undergoing testing so use at your own risk!</li>
<li>Fixed the Server Explorer so VS2005 users can once again right-click tables
and views and open the table data.</li>
<li>Added some new interop code to assist in returning more metadata not normally
available through the SQLite API. Specifically, index column sort modes
and collating sequences. Also added code to detect (but not parse) CHECK
constraints, so the table designer can pop up a warning when editing a table
with these constraints. Since I can't currently parse them.</li>
<li>Lots of LINQ SQL generation improvements and fixes.</li>
<li>Made some progress cleaning up and fixing up the schema definitions and
manifests for EdmGen.</li>
<li>Added a built-in SQLiteFunction called last_rows_affected() which can be
called from SQL to get the number of rows affected by the last update/insert
operation on the connection. This is roughly equivalent to Sql Server's
@@ROWCOUNT variable.</li>
</ul>
<p><b>1.0.51.0 - July 1, 2008</b></p>
<ul>
<li><b>VS2008 SP1 Beta1 LINQ Support</b></li>
<li>Added experimental Entity Framework support in a new library,
System.Data.SQLite.Linq. Some things work, some don't. I haven't
finished rigging everything up yet. The core library remains stable.
All LINQ-specific code is completely separate from the core.</li>
<li> Added some columns to several existing schemas to support some of the
EDM framework stuff.</li>
<li>Minor tweaks to the factory to better support dynamic loading of the Linq
extension library for SQLite.</li>
<li>SQLite's busy handler was interfering with the provider's busy handling
mechanism, so its been disabled.</li>
</ul>
<p><b>1.0.50.0 - June 27, 2008</b></p>
<ul>
<li>Fixed some lingering dispose issues and race conditions when some objects were finalized.</li>
<li>Fixed the SQLiteConvert.Split() routine to be a little smarter when splitting
strings, which solves the quoted data source filename problem.</li>
<li>Enhanced the mergebin utility to work around the strong name validation bug on
the Compact Framework. The old workaround kludged the DLL and caused WM6.1
to fail to load it. This new solution is permanent and no longer kludges
the DLL.</li>
</ul>
<p><b>1.0.49.0 - May 28, 2008</b></p>
<ul>
<li>Code merge with SQLite 3.5.9</li>
<li>Fixed schema problems when querying the TEMP catalog.</li>
<li>Changed BLOB datatype schema to return IsLong = False instead of True. This
was preventing DbCommandBuilder from using GUID's and BLOB's as primary keys.</li>
<li>Fix rollover issue with SQLite3.Reset() using TickCount.</li>
<li>Fixed SQLiteDataReader to dispose of its command (if called for) before
closing the connection (when flagged to do so) instead of the other way around.</li>
<li>Fixed a DbNull error when retrieving items not backed by a table schema.</li>
<li>Fixed foreign key constraint parsing bug.</li>
<li>Added FailIfMissing property to the SQLiteConnectionStringBuilder.</li>
<li>Converted the source projects to Visual Studio 2008.</li>
</ul>
<p><b>1.0.48.0 - December 28, 2007</b></p>
<ul>
<li>Code merge with SQLite 3.5.4</li>
<li>Calling SQLiteDataReader.GetFieldType() on a column with no schema information
and whos first row is initially NULL now returns type Object instead of type DbNull.</li>
<li>Added support for a new DateTime type, JulianDay. SQLite uses Julian dates
internally.</li>
<li>Added a new connection string parameter "Default Timeout" and a corresponding
method on the SQLiteConnection object to change the default command timeout.
This is especially useful for changing the timeout on transactions, which use SQLiteCommand
objects internally and have no ADO.NET-friendly way to adjust the command timeout
on those commands.</li>
<li>FTS1 and FTS2 modules were removed from the codebase. Please upgrade all
full-text indexes to use the FTS3 module. </li>
</ul>
<p><b>1.0.47.2 - December 10, 2007</b></p>
<ul>
<li>Fixed yet one more bug when closing a database with unfinalized command objects</li>
<li>Fixed the DataReader's GetFieldType function when dealing with untyped SQLite affinities</li>
</ul>
<p><b>1.0.47.1 - December 5, 2007</b></p>
<ul>
<li>Fixed a leftover bug from the codemerge with SQLite 3.5.3 that failed to close a database.</li>
<li>Fixed the broken Compact Framework distribution binary.</li>
<li>SQLite 3.5.x changed some internal infrastructure pieces in the encryption interface
which I didn't catch initially. Fixed. </li>
</ul>
<p><b>1.0.47.0 - December 4, 2007</b></p>
<ul>
<li>Code merge with SQLite 3.5.3</li>
<li>Added installer support for Visual Studio 2008. Code is still using the
VS2005 SDK so one or two bells and whistles are missing, but nothing significant.</li>
<li>This is the last version that the FTS1 and FTS2 extensions will appear.
Everyone should rebuild their fulltext indexes using the new FTS3 module.
FTS1 and FTS2 suffer from a design flaw that could cause database corruption with
certain vacuum operations.</li>
<li>Fixed pooled connections so they rollback any outstanding transactions before
going to the pool. </li>
<li>Fixed the unintended breaking of the TYPES keyword, and mis-typing of untyped
or indeterminate column types. </li>
<li>Assert a FileIOPermission() requirement in the static SQLiteFunction constructor.
</li>
<li>The CE-only SQLiteFunction.RegisterFunction() is now available on the desktop
platform for dynamic registration of functions. You must still close and re-open
a connection in order for the new function to be seen by a connection.</li>
<li>Fixed the "database is locked" errors by implementing behavioral changes in the
interop.c file for SQLite. Closing a database force-finalizes any prepared
statements on the database to ensure the connection is fully closed. This
was rather tricky because the GC thread could still be finalizing statements itself.
</li>
<li>Modifed the mergebin utility to help circumvent a long-standing strong name verification
bug in the Compact Framework.</li>
</ul>
<p><b>1.0.46.0 - September 30, 2007</b></p>
<ul>
<li>Fixed faulty logic in type discovery code when using SQLiteDataReader.GetValue().</li>
<li>Fixed Connection.Open() bug when dealing with :memory: databases.</li>
<li>Fixed SQLiteCommand.ExecuteScalar() to return a properly-typed value.</li>
<li>Added support for SQLiteParameter.ResetDbType().</li>
<li>Added test cases for rigid and flexible type testing.</li>
</ul>
<p><b>1.0.45.0 - September 25, 2007</b></p>
<ul>
<li><strong>Breaking change in GetSchema("Indexes") </strong>-- MetaDataCollections
restrictions and identifier parts counts were wrong for this schema and I was using
the wrong final parameter as the final restriction. Meaning, if you use the
Indexes schema and are querying for a specific index the array should now be {catalog,
null, table, index } instead of {catalog, null, table, null, index}</li>
<li>Fixed some errors in the encryption module, most notably when a non-default page
size is specified in the connection string.</li>
<li>Fixed SQLiteDataReader to better handle type-less usage scenarios, which also
fixes problems with null values and datetimes.</li>
<li>Fixed the leftover temp files problem on WinCE </li>
<li>Added connection pooling. The default is disabled for now, but may change
in the future. Set "Pooling=True" in the connection string to enable it. </li>
<li>Sped up SQLiteConnection.Open() considerably.</li>
<li>Added some more robust cleanup code regarding SQLiteFunctions.</li>
<li>Minor additions to the code to allow for future LINQ integration into the main
codebase.</li>
<li>Fixed a long-standing bug in the Open() command of SQLiteConnection which failed
to honor the documented default behavior of the SQLite.NET provider to open the
database in "Synchronous=Normal" mode. The default was "Full". </li>
<li>If Open() fails, it no longer sets the connection state to Broken. It instead
reverts back to Closed, and cleans up after itself.</li>
<li>Added several new parameters to the ConnectionString for setting max page count,
legacy file format, and another called FailIfMissing to raise an error rather than
create the database file automatically if it does not already exist.</li>
<li>Fixed some designer toolbox references to the wrong version of the SQLite.Designer</li>
<li>Fixed a bug in the mergebin utility with regards to COR20 metadata rowsize computations.
</li>
<li>Minor documentation corrections </li>
</ul>
<p><b>1.0.44.0 - July 21, 2007</b></p>
<ul>
<li>Code merge with SQLite 3.4.1</li>
<li>Fixed a bug in SQLiteConnection.Open() which threw the wrong kind of error in
the wrong kind of way when a database file could not be opened or created. </li>
<li>Small enhancements to the TYPES keyword, and added documentation for it in the
help file.</li>
<li>Hopefully fixed the occasional SQLITE_BUSY errors that cropped up when starting
a transaction. Usually occurred in high-contention scenarios, and the underlying
SQLite engine bypasses the busy handler in this scenario to return immediately.</li>
</ul>
<p><b>1.0.43.0 - June 21, 2007</b></p>
<ul>
<li>Code merge with SQLite 3.4.0</li>
<li>Fixed a reuse bug in the SQLiteDataAdapter in conjunction with the SQLiteCommandBuilder.
It's been there unnoticed for more than a year, so it looks like most folks never
encountered it. </li>
<li>Fixed an event handler bug in SQLiteCommandBuilder in which it could fail to unlatch
from the DataAdapter when reused. Relates to the previous bugfix.</li>
<li>Fixed a double-dispose bug in SQLiteStatement that triggered a SQLiteException. </li>
</ul>
<p><b>1.0.42.0 - June 1, 2007</b></p>
<ul>
<li>Code merge with SQLite 3.3.17</li>
<li>Changed the SQLiteFunction static constructor so it only enumerates loaded modules
that have referenced the SQLite assembly, which hopefully should cut down dramatically
the time it takes for that function to execute. </li>
<li>Added the FTS2 full-text search extension to the project. Look for FTS1
to disappear within the next couple of revisions. </li>
<li>Fixed a bug introduced with the finalizers that triggered an error when statements
ended with a semi-colon or had other non-parsable comments at the end of a statement </li>
<li>Fixed an intermittent multi-threaded race condition between the garbage collector
thread and the main application thread which lead to an occasional SQLITE_MISUSE
error.</li>
<li>Fixed another issue relating to SQLite's inherent typelessness when dealing with
aggregate functions which could return Int64 or Double or even String for a given
row depending on what was aggregated.</li>
<li>Remembered to recompile the DDEX portion of the engine this time, so Compact Framework
users can once again use the design-time functionality</li>
</ul>
<p><b>1.0.41.0 - April 23, 2007</b></p>
<ul>
<li>Code merge with SQLite 3.3.16</li>
<li>Second go at implementing proper finalizers to cleanup after folks who've forgotten to Dispose() of the SQLite objects</li>
<li>Enhanced GetSchema(IndexColumns) to provide numeric scale and precision values</li>
<li>Fixed the column ordinals in GetSchema(IndexColumns) to report the ordinal of the column in the index, not the table</li>
<li>Fixed a bug whereby parameters named with an empty string (such as String.Empty) were treated like a named parameter instead of an unnamed parameter</li>
</ul>
<p><b>1.0.40.0 - January 31, 2007</b></p>
<ul>
<li>Code merge with SQLite 3.3.12</li>
<li>Lots of new code to handle misuse of the library. Implemented finalizers
where it made sense, fixed numerous garbage collector issues when objects are not
disposed properly, fixed some object lifetime issues, etc.</li>
<li>A failed Commit() on a transaction no longer leaves the transaction in an unusable
state.</li>
</ul>
<p><b>1.0.39.1 - January 11, 2007</b></p>
<ul>
<li>Fixed a really dumb mistake that for some reason didn't trigger any errors in
the testcases, whereby commands when associated with a connection were not adding
or removing themselves from an internal list of commands for that connection --
causing a "database is locked" error when trying to close the connection.</li>
</ul>
<p><b>1.0.39.0 - January 10, 2007</b></p>
<ul>
<li>Code merge with SQLite 3.3.10</li>
<li>Fixed a multi-threaded race condition bug in the garbage collector when commands
and/or connections are not properly disposed by the user.</li>
<li>Switched the encryption's internal deallocation code to use sqlite's built-in
aux functions instead of modifying the pager.c source to free the crypt block.
This eliminates the last of the code changes the provider makes to the original
sqlite engine sources. Props to Ralf Junker for pointing that out.</li>
</ul>
<p><b>1.0.38.0 - November 22, 2006</b></p>
<ul>
<li>Fixed a bug when using CommandBehavior.KeyInfo whereby integer primary key columns may be duplicated in the results. </li>
<li>Enhanced the CommandBuilder so that update/delete statements are optimized when the affected table contains unique constraints and
a primary key is present.</li>
<li>Fixed a bug in the DataReader when used in conjunction with CommandBehavior.CloseConnection.</li></ul>
<p><b>1.0.37.0 - November 19, 2006</b></p>
<ul>
<li>Added support for CommandBehavior.KeyInfo.
When specified in a query, additional column(s) will be returned describing the
key(s) defined for the table(s) selected in the query. This is optimized when
INTEGER PRIMARY KEY is set for the given tables, but does additional work for other
kinds of primary keys.</li>
<li>Removed the default values from SQLiteDataReader.GetTableSchema(), to better follow
Sql Server's pattern and suppress schema errors when loading the records into a
dataset/datatable.</li>
<li>Allow integers to implicitly convert to double/decimal/single.</li></ul>
<p><b>1.0.36.1 - October 25, 2006</b></p>
<ul>
<li>Added support for LONGVARCHAR, SMALLDATE and SMALLDATETIME. These were actually added in 1.0.36.0 but were undocumented.</li>
<li>Fixed the embedded helpfile which was accidentally built from old sources. </li>
<li>Fixed an unfortunate re-entry of a bug in the .36 codebase that caused the provider to "forget" about commands on a connection under certain circumstances.</li>
</ul>
<p><b>1.0.36.0 - October 23, 2006</b></p>
<ul>
<li>Code merge with SQLite 3.3.8, including support for full-text search via the FTS1
extension. </li><li>Fixed a bug retrieving data types when UseUtf16Encoding is true. Side-effect of further merging the common code between the two base classes.</li>
<li>Fixed a bug with System.Transactions whereby a connection closed/disposed within
a transaction scope is rolled back and cannot be committed.</li>
<li>Added more error checking and reporting to transactions to help user's isolate
the source of transaction failures.</li>
<li>Implemented a workaround for a Compact Framework issue regarding strong-named
assemblies containing a PE section with a raw size less than the virtual size. </li>
</ul>
<p><b>1.0.35.1 - September 12, 2006</b></p>
<ul>
<li>Fixed the TYPES keyword to work when UseUTF16Encoding is true.</li>
<li>Fix another bug revealed in 1.0.35.0 regarding infinite loops when the 2nd or subsequent statements of a semi-colon separated command cannot be parsed.</li>
<li>Updated the help documentation. </li>
</ul>
<p><b>1.0.35.0 - September 10, 2006</b></p>
<ul>
<li>Fixed an infinite loop bug in SQLiteCommand caused when multiple semi-colon separated
statements in a single command are executed via datareader and one of the statements
contains a syntax error preventing it from being prepared. </li><li>Added the TYPES preparser keyword to be placed before a SELECT statement to
aid the wrapper in converting expressions in a subsequent select clause into more
robust types. Documentation yet to be integrated, but available on the forums.</li>
<li>Added a new connectionstring parameter "BinaryGUID=true/false" (default is "true").
When true, guid types are stored in the database as binary blobs to save space.
Binary has been the default format since 1.0.32.0 but this parameter eases backward
compatibility.</li>
</ul>
<p><b>1.0.34.0 - September 4, 2006</b></p>
<ul>
<li>Fixed a bug in SQLiteParameterCollection.RemoveAt(namedparam)</li>
<li>Fixed a bug in SQLiteDataReader introduced in 1.0.30 that broke DateTimes using the Ticks option in the connection string.</li>
<li>Fixed a bug in the recent changes to guid behavior wherein using a datareader's
indexer to fetch a guid from a column containing both binary and text guids would
sometimes return a byte array instead of a guid.</li>
<li>Enacted a workaround involving typed datasets in Compact Framework projects in
which it took an excessive amount of time to open a form and generated a lot of
temporary files in the user's Local Settings\Application Data\Microsoft\VisualStudio\8.0\Assembly
References folder.</li>
</ul>
<p><b>1.0.33.0 - August 21, 2006</b></p>
<ul>
<li>Code merge with SQLite 3.3.7</li>
<li>Fixed a bug in SQLiteConnection that caused it to "forget" about commands bound
to it and occasionally throw an error when a database is closed and opened repeatedly.
</li>
</ul>
<p><b>1.0.32.0 - August 6, 2006</b></p>
<ul>
<li>Added AllowPartiallyTrustedCallers attribute to the assembly</li><li>Added the missing "nchar" type</li>
<li>Added support for binary Guid's. Guids are now stored as binary by default
when using parameterized queries. Text guids are still fully supported.</li>
<li>Fixed a TransactionScope() error that caused the transaction not to be completed.</li>
<li>Enhanced parameter names so that if they are added to the Parameters collection
without their prefix character (@ : or $) they are still properly mapped. </li>
</ul>
<p><b>1.0.31.0 - July 16, 2006</b></p>
<ul>
<li>Re-applied the view parsing bugfix in 1.0.29.0 that was accidentally reverted
out of the 30 build.</li><li>Fixed SQLiteCommand.ExecuteScalar() to return null instead of DbNull.Value
when no rows were returned.</li>
<li>Design-time installer now installs the package-based designer on full Visual Studio
versions. Express editions continue to use the packageless designer.</li>
<li>In Visual Studio (not Express), you can now right-click a SQLite connection in
the Server Explorer and vacuum the database and change the encryption password.</li>
</ul>
<p><b>1.0.30.1 - July 2, 2006</b></p>
<ul>
<li>Code merge with SQLite 3.3.6</li>
<li>Added support for the |DataDirectory| keyword in the Data Source filename string.
</li>
<li>Added hook notification support to SQLiteConnection. Specifically, there
are three new events on the SQLiteConnection object which are raised when an update/insert/delete
occurs and when transactions are committed and rolled back.</li><li>Changed SQLiteTransaction to default to BEGIN IMMEDIATE instead of just BEGIN,
which solves a multithreaded race condition. </li>
<li>Changed SQLiteDataReader to better support SQLite's typelessness. The data
reader no longer caches column affinity, but re-evaluates it for each column/row.</li>
<li>Fixed a bug in Prepare() which caused an intermittant fault due to the code accessing
the memory of an unpinned variable. </li>
<li>Fixed a multithreaded lock-retry bug in in SQLiteConnection.Open() and in
SQLiteTransaction, which failed to use a command timeout before giving up.</li>
</ul>
<p><b>1.0.29.0 - May 16, 2006</b></p>
<ul>
<li>Fixed a bug in the Views schema information which caused multi-line view definition statements not to be parsed</li>
<li>Fixed a parsing bug in SQLiteDataReader.GetSchemaTable() to account for numeric(x,y) datatypes with specified precision and scale</li>
<li>Fixed a bug in SQLiteConnection.Open() which tried to automatically enlist in an ambient transaction but had not yet set the state of the database to Opened, thereby causing a transaction fault</li>
<li>Changed SQLiteException to inherit from DbException on the full framework</li>
</ul>
<p><b>1.0.28.0 - April 14, 2006</b></p>
<ul>
<li>Code merge with SQLite 3.3.5</li>
<li>You can now specify a relative path in the Compact Framework's "Data Source" by
prefixing the file with ".\". i.e. "Data Source=.\\mydb.db3"</li>
<li>Several more changes and enhancements to schemas for better compatibility.</li>
<li>Fixed several bugs with the 64-bit builds of the provider. The x64 binary
is now optimized.</li>
<li>Design-time installer now tries to install the 64-bit builds into the GAC along
with the 32-bit build.</li>
<li>Fixed a bug in the SQLiteDataReader.GetSchemaTable() function when used with tables
containing apostrophes.</li>
<li>Fixed an XSD-related bug whereby the XSD utility was unable to locate the provider
and could not generate typed datasets.</li>
<li>Added NTEXT and STRING datatypes to the list of recognized keywords (used for
schema retrieval).</li>
<li>Due to the XSD bug and other potential problems related to external build utilities,
changes to the installation of the designer have had to be made. The installer
used to write the DbProviderFactories XML into the devenv.exe.config file and its
express cousins, but now has to write instead to the machine.config.</li>
<li>Installer writes to both the 32-bit machine.config and the 64-bit machine.config
if it exists. </li>
</ul>
<p><b>1.0.27.1 - February 28, 2006</b></p>
<ul>
<li>Fixed a bug when doing data binding in Compact Framework projects that prevented
you from assigning a typed dataset to a bindingsource. It turns out, the CF
version of the SQLite provider needs to be flagged as retargetable so it'll work
in the design-time desktop environment. No changes were made to the desktop
build, but the revision was bumped on all libraries anyway in order to keep them
sync'd. </li></ul>
<p><b>1.0.27.0 - February 27, 2006</b></p>
<ul>
<li>Many optimizations and a few more minor adjustments to schemas and schema retrieval
performance.</li>
<li>Lots of design-time attributes added to the code. The DbDataAdapter, DbCommand,
and DbConnection objects now have greatly enhanced design-time capabilities when
added to the toolbox and dropped on a form.</li>
<li>Lots of Server Explorer enhancements.</li>
<li>Binaries are now distributed in a setup program for easier administration and
configuration of the provider.</li>
</ul>
<p><b>1.0.26.2 - February 15, 2006</b></p>
<ul>
<li>Yet another bugfix to index schemas, which was incorrectly marking most indexes
as primary key indexes.</li><li>Fixed GetSchema() to accept a null string array.</li><li>Fixed a misspelled export in the core C library that prevented databases opened
with UTF16Encoding from getting schema information and would likely cause an error
if attempted.</li></ul>
<p><b>1.0.26.1 - February 14, 2006</b></p>
<ul>
<li>Fixed even more minor schema bugs having to do with indexes.</li><li>Added two missing pieces in the SQLite designer which were preventing it from
being used from within VS Express editions. </li><li>Several bugfixes to the design-time installer program, including supporting
64-bit environments.</li></ul>
<p><b>1.0.26.0 - February 11, 2006</b></p>
<ul>
<li>Code merge with SQLite 3.3.4</li><li>Fixed an encryption bug when changing the password of databases over 1gb in
size. </li><li>Fixed various designer issues related to construction of named parameters. </li><li>Retooled the GetSchema() method of SQLiteDataReader to use the new 3.3.4 API functions,
and made several enhancements and fixes to schemas. </li>
<li>Implemented the SourceColumnNullMapping property of SQLiteParameter to fix
a DbCommandBuilder code generation bug. </li>
<li>Removed the runtime dependency on MSVCR80.DLL. File size is somewhat
larger for the varying desktop versions, but the Compact Framework version remains
the same.</li><li>Created an install program to manage installation and uninstallation of the
SQLite design-time support.</li>
<li>Designer support now works for all Visual Studio editions, including all Express
Editions.</li>
<li>Design-time installer will now remove (if present) the machine.config SQLite entries
in favor of installing the xml code into the devenv.exe.config file (or any of the
variations for express editions). The officially-accepted behavior of using
DbProviderFactories is to add the code to your app.config file, and the machine.config
file should not be touched.</li>
</ul>
<p><b>1.0.25.0 - January 31, 2006</b></p>
<ul>
<li>Code merge with SQLite 3.3.3</li><li>Added automatic distributed transaction enlistment and implemented the DbConnection.EnlistTransaction
method for manual enlistment.</li>
<li>Nested transactions are now supported.</li>
<li>Rearranged the timing of SetPassword(), which now must be called before the database
is opened instead of afterwards. Optionally, the password can be supplied
in the ConnectionString.</li>
<li>Fixed a bug in SQLiteFunction that caused a failure when an empty resultset was
returned and a custom user aggregate function was used in the query.</li>
<li>The designer has had another round of cleanup applied, in preparation for moving
to a VS package.</li>
<li>Added SQLiteMetaDataCollectionNames class.</li>
</ul>
<p><b>1.0.24.6 beta - January 23, 2006</b></p>
<ul>
<li>This beta is built from sqlite.org's 3.3.2 beta.</li><li>Eliminated the static linking of mscoree from all binaries. Native projects
can now use the library without any dependencies on the .NET framework, while managed
projects continue to be able to use the library normally.</li></ul>
<p><b>1.0.24.5 beta - January 20, 2006</b></p>
<ul>
<li>This beta is built from sqlite.org's 3.3.1 alpha and contains development-in-progress code. Therefore no guarantees
can be made regarding its suitability for production use.</li>
<li><strong>You no longer need to distribute 2 files on the CompactFramework.
You can delete SQLite.Interop.DLL entirely. </strong>I wrote a custom tool
called "mergebin" (available in the source zip file) which combines the two libraries
and gets around a glaring defect in the VS2005 linker for ARM processors which doesn't
allow you to link netmodules.</li>
<li><strong>x64 and ia64 builds now use the same strong name as the x86 build.</strong>
This means breaking backward compatibility, but it was necessary in order to allow
you to drop any of those 3 builds onto a PC and have your .NET program run properly.
Prior to this, you'd get an error if you built your program using the x86 build,
and then installed the x64 version on a target machine and tried to run your program
against it.</li>
<li>The entire source project has been gone over top to bottom. A debug build
no longer combines the binaries into a single module, which was preventing proper
debugging.</li></ul>
<p><b>1.0.24.4 beta - January 16, 2006</b></p>
<ul>
<li>This beta is built from sqlite.org's 3.3.1 alpha and contains development-in-progress code. Therefore no guarantees
can be made regarding its suitability for production use.</li>
<li>Fixed a bug in the UTF-16 handling code for preparing statements due to a behavioral
change in SQLite 3.3.0.</li>
<li>Added pager.c code necessary to cleanup after an encrypted file is closed.</li>
<li>Fixed an encryption bug that caused a fault when an encrypted file was rolled
back.</li>
<li>Modified the testcase code to take advantage of optimizations regarding the use
of a DbCommandBuilder. DataAdapter insert speed increased dramatically as
a result.</li>
</ul>
<p><b>1.0.24.3 beta - January 10, 2006</b></p>
<ul>
<li>This beta is built from sqlite.org's CVS HEAD (as it appeared at of the date of
this beta) and contains development-in-progress code. Therefore no guarantees
can be made regarding its suitability for production use.</li><li>Added support for database encryption at the pager level. Databases
are encrypted using a 128-bit RC4 stream algorithm. To open an existing encrypted
database, you may now specify a "Password={password}" text in the ConnectionString,
or you may call the SQLiteConnection.SetPassword() function to set the password
on an open connection. To encrypt existing non-encrypted databases or to change
the password on an encrypted database, you must use the SQLiteConnection.ChangePassword()
function. If you use SetPassword() instead of specifying a password in the
connection string, or call ChangePassword() you may use a binary byte array or a
text string as the password.</li>
<li>Rewrote the locking implementation for the Compact Framework. It is now
more robust and incorporates into the SQLite codebase more efficiently than the
previous CE adaptation.</li>
<li>Moved some of the embedded schema XML data into a resource file to ease code readability.</li>
<li>Automated the fixup of the original sqlite codebase's source prior to compiling,
to ease merging with sqlite.org's source. </li>
</ul>
<p><b>1.0.24.2 - December 30, 2005</b></p>
<ul>
<li>Fixed the SQLiteDataReader.HasRows property to return the proper value.</li>
<li>Implemented the inadvertently neglected RecordsAffected property on SQLiteDataReader.
</li>
<li>SQLiteFunction static constructor was changed to pre-filter classes with only the
SQLiteFunctionAttribute. The code was throwing an exception when certain
assemblies were referenced in a project. </li>
<li>Fixed the SQLiteDataAdapter OnRowUpdated event, which was using the wrong variable
to find the attached event handler and subsequently not raising the event.</li>
<li>Small optimizations and fixes to SQLiteDataReader.NextResult(). </li>
</ul>
<p><b>1.0.24.1 - December 19, 2005</b></p>
<ul>
<li>Update core SQLite engine to 3.2.8 </li></ul>
<p><b>1.0.24 - December 9, 2005</b></p>
<ul>
<li>Fixed the<em> Catalogs</em> schema bug that caused attached databases not to be re-attached to a cloned connection
</li>
<li>Enhanced transactions to allow for a deferred or immediate writelock. SQLiteConnection.BeginTransaction()
now has an additional overload to support it </li>
<li>Commands are now prepared as they are executed instead of beforehand. This
fixes a bug whereby a multi-statement command that alters the database and subsequently
references the altered data would fail during Prepare().</li><li>Tightened up the SQLiteDataReader to prevent reading columns before calling
the first Read() and to prevent reading columns after the last Read().</li>
<li>A more descriptive error is thrown if there aren't enough parameters in the command
to satisfy the parameters required by the statement(s). </li>
</ul>
<p><b>1.0.23 - November 21, 2005</b></p>
<ul>
<li>Named parameters may now begin with <strong>@</strong> to ease portability of
the provider. SQLite's named parameters are ordinarily prefixed with a <strong>: </strong>
or<strong> $</strong>. The designer will still use the <strong>$</strong>
prefix however, since its more compatible with the default SQLite engine.</li><li>Added several alternate ISO8601 date/time formats to SQLiteConvert.cs to increase
compatibility.</li>
<li>Relaxed coersion restrictions to work better with SQLite's inherent typelessenss. </li>
</ul>
<p><b>1.0.22 - November 11, 2005</b></p>
<UL>
<li>Fixed some globalization issues which resulted in incorrect case-insensitive comparisons</li>
<li>Fixed a bug in the routine that finds all user-defined functions in a loaded assembly.
It would throw an exception if any of the types in the assembly could not be loaded.
The exception is now caught and handled appropriately.</li>
</UL>
<p><b>1.0.21 - November 4, 2005</b></p>
<UL>
<li>Fixed a designer bug when creating typed datasets with parameterized queries.
</li><li>The above fix then exposed another bug in the datareader's ability to query
schema information on parameterized commands, which was also fixed. </li>
<li>Compiled against the RTM version of VS2005. </li>
<li>Rewrote the design-time install script to use the XML DOM objects when writing
to the machine.config and to automatically register the DLL in the GAC.</li>
<LI>Made changes to the app.config descriptions and help file to improve version-independent
factory support. </li>
</UL>
<P><STRONG>1.0.20 - October 19, 2005</STRONG></P>
<UL>
<LI>
Fixed a shortcut in SQLiteBase.GetValue which was insufficient for international environments. The shortcut was removed and the "proper" procedure put in.
</UL>
<P><STRONG>1.0.19 - October 5, 2005</STRONG></P>
<UL>
<LI>
Code merge with SQLite 3.2.7
<LI>
Fixed bugs in the CE port code (os_wince.c) which were brought to
light by recent changes in the SQLite engine.
<LI>
Recompiled and modified to be compatible with the September VS2005 Release
Candidate.<BR>
Beta 2 users should continue to use 1.0.18.1</LI></UL>
<P><STRONG>1.0.18.1 - September 19, 2005</STRONG></P>
<UL>
<LI>
Code merge with SQLite 3.2.6</LI></UL>
<P><STRONG>1.0.18 - September 1, 2005</STRONG></P>
<UL>
<li>
Added type-specific method calls when using the various SQLite classes that
would've normally returned a a generic Db base class, which aligns the code
better with the Microsoft-supplied data providers.</li></UL>
<p><b>1.0.17 - August 26, 2005</b></p>
<ul>
<li>
Code merge with SQLite 3.2.5
<li>
Added Itanium and x64 build settings to the project (needs testing)
<li>
Bugfixes and enhancements to several schema types
<li>
Additional design-time support to include index and foreign key
enumerations. Requires re-registering the designer using
INSTALL.CMD. The new designer code now allows the VS query designer and
typed datasets to automatically link up foreign keys, use indexes, and
automatically generate relationships from the schema.<li>
Additional static methods on SQLiteConnection to create a database file,
encrypt a file using the Encrypted File System (EFS) on NTFS (requires NT 2K or
above) and NTFS file compression</li>
</ul>
<p><b>1.0.16 - August 24, 2005</b></p>
<ul>
<li>
Code merge with SQLite 3.2.4 with the large delete bugfix in CVS (which will
become 3.2.5 soon)
<li>
Added new GetSchema() types: IndexColumns, ViewColumns, ForeignKeys</li>
</ul>
<p><b>1.0.15 - August 22, 2005</b><br>
</p>
<ul>
<li>
Code merge with SQLite 3.2.3
<LI>
Minor updates for better design-time experience. More design-time code to
follow in subsequent releases.</LI>
</ul>
<p><b>1.0.14 - August 16, 2005</b><br>
</p>
<ul>
<li>
Fixed a bug in the SQLiteDataAdapter due to insufficient implementation of the
class. The RowUpdating and RowUpdated events are now properly
implemented, but unfortunately inserting and updating data in a DataTable or
DataSet is now much slower. This is the proper design however, so the
changes are here to stay.
<LI>
Lots of schema changes to support Visual Studio's Data Designer architecture.<li>Added
Designer support for the provider. It's not 100%, but you can design
queries, add typed datasets and perform quite a number of tasks all within
Visual Studio now.</li></ul>
<P><B>1.0.13 - August 8, 2005</B><BR>
</P>
<DIV>
<UL>
<LI>
Fixed a named parameter bug in the base SQLite_UTF16 class, which of course
only showed up when a database connection was opened using the
UseUTF16Encoding=True parameter.
<LI>
Fixed a performance issue in SQLite_UTF16 involving string marshaling.</LI></UL>
</DIV>
<P><B>1.0.12 - August 5, 2005</B><BR>
</P>
<DIV>
<UL>
<LI>
Full support for the Compact Framework. Each build (Debug/Release) now
has a platform, either Win32 or Compact Framework. The correct
projects are built accordingly. See the <A href="#redist">Distributing
SQLite</A>
section for information on what files need to be distributed for each
platform.
<LI>
Modified SQLite3.Reset() and Step() functions to transparently handle timeouts
while waiting on the database to become available (typically when a writer is
waiting on a reader to finish, or a reader is waiting on a writer to finish).
<LI>
Lots of code cleanup as suggested by the Code Analyzer (FxCop).
<LI>
Lots of updates to the helpfile (as you can see).
<LI>
Statements were already prepared lazily in a SQLiteCommand, but now
its even more lazy. Statements are now only prepared if the statements
haven't been previously prepared and a Prepare() function is called (and the
command is associated with a connection) or just prior to the command being
executed. </LI></UL>
</DIV>
<P><B>1.0.11 - August 1, 2005</B><BR>
</P>
<UL>
<LI>
<STRONG>For everything except the Compact Framework, System.Data.SQLite.DLL is
now the <EM>only</EM> DLL required to use this provider!</STRONG> The
assembly is now a multi-module assembly, containing both the native SQLite3
codebase and the C# classes built on top of it. The Compact Framework
version (when completed) will not be able to support this feature, so backwards
compatibility with the Compact Framework has been preserved for the future.
<LI>
Fixed a bug in SQLiteCommand.ExecuteScalar() that caused it to stop executing
commands once it obtained the first column of the first row-returning
resultset. Any remaining statements after the row-returning statement was
ignored.
</LI>
</UL>
<P><B>1.0.10 - June 10, 2005</B><BR>
</P>
<UL>
<LI>
Fixed a bug in the SQLite3.cs Prepare() function that created a statement even
when the SQLite engine returned a NULL pointer. Typically this occurs when
multiple statements are processed and there are trailing comments at the end of
the statement.
<LI>
Fixed a bug in SQLiteStatement.cs that retrieved parameter names for a
parameterized query. SQLite's parameters are 1-based, and the function
was starting at 0. This was fine when all parameters were unnamed, but
for named parameters it caused the parameters to be out of whack.
</LI>
</UL>
<P><B>1.0.09a - May 25, 2005</B><BR>
</P>
<UL>
<LI>
Fixed a broken helpfile and corrected some obsolete help remarks in
SQLiteFunction.cs
<LI>
Added a version resource to the SQLite.Interop.DLL. </LI></UL>
<P><B>1.0.09 - May 24, 2005</B><BR>
</P>
<UL>
<LI>
Code merge with the latest 3.21 version of SQLite.
<LI>
Removed obsolete methods and properties for Whidbey Beta 2</LI></UL>
<P><B>1.0.08 Refresh - Mar 24, 2005<BR>
</B>
</P>
<UL>
<LI>
Code merge with the latest 3.20 version of SQLite.
<LI>
Recompiled the help file to fix a build error in it.
</LI>
</UL>
<P><B>1.0.08 - Mar 11, 2005<BR>
</B>
</P>
<UL>
<LI>
Added additional #if statements to support the old beta 1 edition of VS2005.
<LI>
Code merged the SQLite 3.14 source.
</LI>
</UL>
<P><B>1.0.07 - Mar 5, 2005</B><BR>
</P>
<UL>
<LI>
Made more optimizations to frequently-called functions, resulting in
significant performance gains in all tests.
<LI>
Recompiled the binaries using the latest VS2005 February CTP, resulting in yet
more significant speed gains. The 100k insert test used to take 3.5
seconds and the insertwithidentity took almost 8 seconds. With the above
two changes, those tests are now executing in 1.9 and 4.9 seconds respectively.</LI></UL>
<P><B>1.0.06 - Mar 1, 2005<BR>
</B>
</P>
<UL>
<LI>
Speed-ups to SQLiteDataReader. It was interop'ing unnecessarily every
time it tried to fetch a field due to a logic error.
<LI>
Changed/Added some code to SQLiteConvert's internal DbType, Type and
TypeAffinity functions.
<LI>
Fixed the SQLiteDataReader to obey the flags set in the optional
CommandBehavior flag from SQLiteCommand.ExecuteReader().
<LI>
Changed the default page size to 1024 to reflect the defaults of SQLite.
Ignores the "Page Size" connection string option for memory databases, as tests
revealed that changing it resulted in memory corruption errors.
<LI>
Performance enhancements to the SQLiteCommand and SQLiteStatement classes which
reduced the 100,000 row insert execution time as well as the various Function
execution times significantly.
</LI>
</UL>
<P><B>1.0.05 - Feb 25, 2005</B>
</P>
<UL>
<LI>
Fixed the SQLite3 C# class step/reset functions to accomodate schema changes
that invalidate a prepared statement. Statements are recompiled
transparently.
<LI>
Moved all native DLL declarations to an UnsafeNativeMethods class.
<LI>
Split several classes into their own modules for readability.
<LI>
Renamed many internal variables, reviewed access to variables marked as
internal and altered their protection levels accordingly.
<LI>
Due to the presence of the altered sqlite3 codebase and so many added interop
functions, I decided to rename the sqlite3 C project and the DLL to
SQLite.Interop.DLL. This is the same core sqlite3 codebase but designed
specifically for this ADO.NET provider. This eliminates any possibility
of someone dropping another build of sqlite3.dll into the system and rendering
the provider inoperable. In the future if the folks at sqlite.org finally
introduce a method of retrieving column usage for an arbitrary prepared
statement, I'll retool this library to be a lightweight function call wrapper
around the core binary distribution.
<LI>
Added [SuppressUnmanagedCodeSecurity] attribute to the UnsafeNativeMethods
class which brings VS2005 November CTP execution speeds inline with the
December CTP.
<LI>
Added a <B>bin</B>
directory to the project root where pre-compiled binaries can be found.
<LI>
Added a <B>doc</B>
directory where preliminary documentation on the class library can be found.
<LI>
Documented a lot more of the classes internally.
</LI>
</UL>
<P><B>1.0.04 - Feb 24, 2005</B>
</P>
<UL>
<LI>
Removed the SQLiteContext class and revamped the way UserFunctions work to
simplify the imlementation.
<LI>
Fixed a counting bug in the TestCases class, specifically in the function tests
where I wasn't resetting the counter and it was consequently reporting
intrinsic and raw select calls as being much much faster than they actually
were. The numbers are now much closer to what I expected for performance,
with .NET user-functions still being the slowest, but only by a small margin.
<LI>
Small performance tweaks to SQLiteDataReader.
<LI>
Added PageSize to the SQLiteConnectionStringBuilder and subsequently to the
SQLiteConnection
<LI>
Added a PRAGMA encoding=XXX execution statement to the SQLiteConnection after
opening a connection.
</LI>
</UL>
<P><B>1.0.03 - Feb 23, 2005</B>
</P>
<UL>
<LI>
Fixed up SQLiteCommandBuilder to correct implementation errors, which resulted
in an enormous performance boost in the InsertMany test. 10,000 row
insert that executed in 1500ms now executes in 500ms.
<LI>
Fixed several errors in the SQLite3_UTF16 class. ToString() was working
incorrectly and the Open() method failed to register user defined functions and
collations.
<LI>
Fixed a bug in SQLiteCommand.ClearCommands() whereby only the first statement
was being properly cleaned up.
<LI>
Fixed a bug in SQLiteDataReader whereby calling NextResult() would not properly
reset the previously-executed command in the sequence.
<LI>
Added an InsertManyWithIdentityFetch test, which appends a select clause to
populate the ID of the last inserted row into the InsertCommand, demonstrating
ADO.NET's ability to auto-fetch identity columns on insert.
</LI>
</UL>
<P><B>1.0.02 - Feb 21, 2005</B></P>
<UL>
<LI>
Tweaks to the xxx_interop functions that return char *'s, so they also return
the length. Saves an interop call to get the UTF-8 string length during
conversion to a .NET string.
<LI>
Reworked the whole interop.c thing into interop.h and reduced the code required
to merge the main sqlite3 codebase.
<LI>
Added support for user-defined collations.
</LI>
</UL>
<hr />
<div id="footer">
<p>
<a href="mailto:sqlite-users@sqlite.org?subject=SQLite.NET%20Class%20Library%20Documentation%20Feedback:%20Version%20History">
Send comments on this topic.</a>
</p>
<p>
</p>
</div>
</div>
</div>
</body>
</html>
|