Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch newJulianDay Excluding Merge-Ins
This is equivalent to a diff from 5074b140f0 to 55359b6e3c
2014-11-14
| ||
00:19 | Handle Julian Day values that fall outside of the supported range for OLE Automation dates. Fix for [3e783eecbe]. check-in: 3bd76a0c9d user: mistachkin tags: trunk | |
2014-11-07
| ||
22:00 | Change support email address in the design-time components. Pursuant to [17405b6e06]. check-in: 9c43b0b95c user: mistachkin tags: trunk | |
2014-11-01
| ||
22:58 | Add more tests. Closed-Leaf check-in: 55359b6e3c user: mistachkin tags: newJulianDay | |
21:10 | Improve coding style. check-in: 4a5306964c user: mistachkin tags: newJulianDay | |
2014-10-31
| ||
21:36 | Add experimental port of the Julian Day handling functions from the SQLite core library. Still needs tests. Pursuant to [3e783eecbe]. check-in: fe17cded54 user: mistachkin tags: newJulianDay | |
2014-10-30
| ||
01:12 | Update SQLite core library to the 3.8.7.1 release. check-in: 5074b140f0 user: mistachkin tags: trunk | |
2014-10-17
| ||
15:13 | Update SQLite core library to the 3.8.7 release. check-in: 4efb665c41 user: mistachkin tags: trunk | |
Changes to Doc/Extra/Provider/version.html.
︙ | ︙ | |||
45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <h1 class="heading">Version History</h1> <p><b>1.0.95.0 - November XX, 2014 <font color="red">(release scheduled)</font></b></p> <ul> <li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_7_1.html">SQLite 3.8.7.1</a>.</li> <li>Make sure SQL statements generated for DbUpdateCommandTree objects are properly delimited.</li> <li>Various minor performance enhancements to the SQLiteDataReader class. Pursuant to <a href="http://system.data.sqlite.org/index.html/info/e122d26e70">[e122d26e70]</a>.</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 <a href="http://system.data.sqlite.org/index.html/info/c5cc2fb334">[c5cc2fb334]</a>. <b>** Potentially Incompatible Change **</b></li> </ul> <p><b>1.0.94.0 - September 9, 2014</b></p> <ul> <li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_6.html">SQLite 3.8.6</a>.</li> <li>Updated to <a href="http://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> | > | 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | <h1 class="heading">Version History</h1> <p><b>1.0.95.0 - November XX, 2014 <font color="red">(release scheduled)</font></b></p> <ul> <li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_7_1.html">SQLite 3.8.7.1</a>.</li> <li>Make sure SQL statements generated for DbUpdateCommandTree objects are properly delimited.</li> <li>Various minor performance enhancements to the SQLiteDataReader class. Pursuant to <a href="http://system.data.sqlite.org/index.html/info/e122d26e70">[e122d26e70]</a>.</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 <a href="http://system.data.sqlite.org/index.html/info/c5cc2fb334">[c5cc2fb334]</a>. <b>** Potentially Incompatible Change **</b></li> <li>Handle Julian Day values that fall outside of the supported range for OLE Automation dates. Fix for <a href="http://system.data.sqlite.org/index.html/info/3e783eecbe">[3e783eecbe]</a>. <b>** Potentially Incompatible Change **</b></li> </ul> <p><b>1.0.94.0 - September 9, 2014</b></p> <ul> <li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_6.html">SQLite 3.8.6</a>.</li> <li>Updated to <a href="http://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> |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteConvert.cs.
︙ | ︙ | |||
37 38 39 40 41 42 43 44 | /// <summary> /// The value for the Unix epoch (e.g. January 1, 1970 at midnight, in UTC). /// </summary> protected static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); /// <summary> | > | > > > > > > > > > > > > > > | 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 | /// <summary> /// The value for the Unix epoch (e.g. January 1, 1970 at midnight, in UTC). /// </summary> protected static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); #pragma warning disable 414 /// <summary> /// The value of the OLE Automation epoch represented as a Julian day. This /// field cannot be removed as the test suite relies upon it. /// </summary> private static readonly double OleAutomationEpochAsJulianDay = 2415018.5; #pragma warning restore 414 /// <summary> /// The format string for DateTime values when using the InvariantCulture or CurrentCulture formats. /// </summary> private const string FullFormat = "yyyy-MM-ddTHH:mm:ss.fffffffK"; /// <summary> /// This is the minimum Julian Day value supported by this library /// (148731163200000). /// </summary> private static readonly long MinimumJd = computeJD(DateTime.MinValue); /// <summary> /// This is the maximum Julian Day value supported by this library /// (464269060799000). /// </summary> private static readonly long MaximumJd = computeJD(DateTime.MaxValue); /// <summary> /// An array of ISO-8601 DateTime formats that we support parsing. /// </summary> private static string[] _datetimeFormats = new string[] { "THHmmssK", "THHmmK", "HH:mm:ss.FFFFFFFK", |
︙ | ︙ | |||
197 198 199 200 201 202 203 | byte[] byteArray = new byte[nativestringlen]; Marshal.Copy(nativestring, byteArray, 0, nativestringlen); return _utf8.GetString(byteArray, 0, nativestringlen); } | | < > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | byte[] byteArray = new byte[nativestringlen]; Marshal.Copy(nativestring, byteArray, 0, nativestringlen); return _utf8.GetString(byteArray, 0, nativestringlen); } #endregion /////////////////////////////////////////////////////////////////////////// #region DateTime Conversion Functions #region New Julian Day Conversion Methods /// <summary> /// Checks if the specified <see cref="Int64" /> is within the /// supported range for a Julian Day value. /// </summary> /// <param name="jd"> /// The Julian Day value to check. /// </param> /// <returns> /// Non-zero if the specified Julian Day value is in the supported /// range; otherwise, zero. /// </returns> private static bool isValidJd( long jd ) { return ((jd >= MinimumJd) && (jd <= MaximumJd)); } /////////////////////////////////////////////////////////////////////////// /// <summary> /// Converts a Julian Day value from a <see cref="Double" /> to an /// <see cref="Int64" />. /// </summary> /// <param name="julianDay"> /// The Julian Day <see cref="Double" /> value to convert. /// </param> /// <returns> /// The resulting Julian Day <see cref="Int64" /> value. /// </returns> private static long DoubleToJd( double julianDay ) { return (long)(julianDay * 86400000.0); } /////////////////////////////////////////////////////////////////////////// /// <summary> /// Converts a Julian Day value from an <see cref="Int64" /> to a /// <see cref="Double" />. /// </summary> /// <param name="jd"> /// The Julian Day <see cref="Int64" /> value to convert. /// </param> /// <returns> /// The resulting Julian Day <see cref="Double" /> value. /// </returns> private static double JdToDouble( long jd ) { return (double)(jd / 86400000.0); } /////////////////////////////////////////////////////////////////////////// /// <summary> /// Converts a Julian Day value to a <see cref="DateTime" />. /// This method was translated from the "computeYMD" function in the /// "date.c" file belonging to the SQLite core library. /// </summary> /// <param name="jd"> /// The Julian Day value to convert. /// </param> /// <param name="badValue"> /// The <see cref="DateTime" /> value to return in the event that the /// Julian Day is out of the supported range. If this value is null, /// an exception will be thrown instead. /// </param> /// <returns> /// A <see cref="DateTime" /> value that contains the year, month, and /// day values that are closest to the specified Julian Day value. /// </returns> private static DateTime computeYMD( long jd, DateTime? badValue ) { if (!isValidJd(jd)) { if (badValue == null) { throw new ArgumentException( "Not a supported Julian Day value."); } return (DateTime)badValue; } int Z, A, B, C, D, E, X1; Z = (int)((jd + 43200000) / 86400000); A = (int)((Z - 1867216.25) / 36524.25); A = Z + 1 + A - (A / 4); B = A + 1524; C = (int)((B - 122.1) / 365.25); D = (36525 * C) / 100; E = (int)((B - D) / 30.6001); X1 = (int)(30.6001 * E); int day, month, year; day = B - D - X1; month = E < 14 ? E - 1 : E - 13; year = month > 2 ? C - 4716 : C - 4715; try { return new DateTime(year, month, day); } catch { if (badValue == null) throw; return (DateTime)badValue; } } /////////////////////////////////////////////////////////////////////////// /// <summary> /// Converts a Julian Day value to a <see cref="DateTime" />. /// This method was translated from the "computeHMS" function in the /// "date.c" file belonging to the SQLite core library. /// </summary> /// <param name="jd"> /// The Julian Day value to convert. /// </param> /// <param name="badValue"> /// The <see cref="DateTime" /> value to return in the event that the /// Julian Day value is out of the supported range. If this value is /// null, an exception will be thrown instead. /// </param> /// <returns> /// A <see cref="DateTime" /> value that contains the hour, minute, and /// second, and millisecond values that are closest to the specified /// Julian Day value. /// </returns> private static DateTime computeHMS( long jd, DateTime? badValue ) { if (!isValidJd(jd)) { if (badValue == null) { throw new ArgumentException( "Not a supported Julian Day value."); } return (DateTime)badValue; } int si; si = (int)((jd + 43200000) % 86400000); decimal sd; sd = si / 1000.0M; si = (int)sd; int millisecond = (int)((sd - si) * 1000.0M); sd -= si; int hour; hour = si / 3600; si -= hour * 3600; int minute; minute = si / 60; sd += si - minute * 60; int second = (int)sd; try { DateTime minValue = DateTime.MinValue; return new DateTime( minValue.Year, minValue.Month, minValue.Day, hour, minute, second, millisecond); } catch { if (badValue == null) throw; return (DateTime)badValue; } } /////////////////////////////////////////////////////////////////////////// /// <summary> /// Converts a <see cref="DateTime" /> to a Julian Day value. /// This method was translated from the "computeJD" function in /// the "date.c" file belonging to the SQLite core library. /// Since the range of Julian Day values supported by this method /// includes all possible (valid) values of a <see cref="DateTime" /> /// value, it should be extremely difficult for this method to /// raise an exception or return an undefined result. /// </summary> /// <param name="dateTime"> /// The <see cref="DateTime" /> value to convert. This value /// will be within the range of <see cref="DateTime.MinValue" /> /// (00:00:00.0000000, January 1, 0001) to /// <see cref="DateTime.MaxValue" /> (23:59:59.9999999, December /// 31, 9999). /// </param> /// <returns> /// The nearest Julian Day value corresponding to the specified /// <see cref="DateTime" /> value. /// </returns> private static long computeJD( DateTime dateTime ) { int Y, M, D; Y = dateTime.Year; M = dateTime.Month; D = dateTime.Day; if (M <= 2) { Y--; M += 12; } int A, B, X1, X2; A = Y / 100; B = 2 - A + (A / 4); X1 = 36525 * (Y + 4716) / 100; X2 = 306001 * (M + 1) / 10000; long jd; jd = (long)((X1 + X2 + D + B - 1524.5) * 86400000); jd += (dateTime.Hour * 3600000) + (dateTime.Minute * 60000) + (dateTime.Second * 1000) + dateTime.Millisecond; return jd; } #endregion /////////////////////////////////////////////////////////////////////////// /// <summary> /// Converts a string into a DateTime, using the DateTimeFormat, DateTimeKind, /// and DateTimeFormatString specified for the connection when it was opened. /// </summary> /// <remarks> /// Acceptable ISO8601 DateTime formats are: /// <list type="bullet"> |
︙ | ︙ | |||
404 405 406 407 408 409 410 | /// <summary> /// Converts a julianday value into a DateTime /// </summary> /// <param name="julianDay">The value to convert</param> /// <param name="kind">The DateTimeKind to use.</param> /// <returns>A .NET DateTime</returns> | | > > > > | > | > > > > | 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 | /// <summary> /// Converts a julianday value into a DateTime /// </summary> /// <param name="julianDay">The value to convert</param> /// <param name="kind">The DateTimeKind to use.</param> /// <returns>A .NET DateTime</returns> public static DateTime ToDateTime( double julianDay, DateTimeKind kind ) { long jd = DoubleToJd(julianDay); DateTime dateTimeYMD = computeYMD(jd, null); DateTime dateTimeHMS = computeHMS(jd, null); return new DateTime( dateTimeYMD.Year, dateTimeYMD.Month, dateTimeYMD.Day, dateTimeHMS.Hour, dateTimeHMS.Minute, dateTimeHMS.Second, dateTimeHMS.Millisecond, kind); } /// <summary> /// Converts the specified number of seconds from the Unix epoch into a /// <see cref="DateTime" /> value. /// </summary> /// <param name="seconds"> |
︙ | ︙ | |||
453 454 455 456 457 458 459 | /// <summary> /// Converts a DateTime struct to a JulianDay double /// </summary> /// <param name="value">The DateTime to convert</param> /// <returns>The JulianDay value the Datetime represents</returns> public static double ToJulianDay(DateTime value) { | | | 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 | /// <summary> /// Converts a DateTime struct to a JulianDay double /// </summary> /// <param name="value">The DateTime to convert</param> /// <returns>The JulianDay value the Datetime represents</returns> public static double ToJulianDay(DateTime value) { return JdToDouble(computeJD(value)); } /// <summary> /// Converts a DateTime struct to the whole number of seconds since the /// Unix epoch. /// </summary> /// <param name="value">The DateTime to convert</param> |
︙ | ︙ |
Added Tests/tkt-3e783eecbe.eagle.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | ############################################################################### # # tkt-3e783eecbe.eagle -- # # Written by Joe Mistachkin. # Released to the public domain, use at your own risk! # ############################################################################### package require Eagle package require Eagle.Library package require Eagle.Test runTestPrologue ############################################################################### package require System.Data.SQLite.Test runSQLiteTestPrologue ############################################################################### runTest {test tkt-3e783eecbe-1.1 {To Julian Day w/o OLE Automation} -setup { set minDateTime [object invoke -create -alias DateTime MinValue] set maxDateTime [object invoke -create -alias DateTime MaxValue] set dateTimeValues [list $minDateTime "0099-12-31 00:00:00" \ "0100-01-01 00:00:00" $maxDateTime] } -body { set results [list] foreach dateTimeValue $dateTimeValues { if {$dateTimeValue ni [info objects]} then { set dateTimeValue [object invoke \ -create DateTime ParseExact $dateTimeValue \ [getDateTimeFormat] null] set dateTimeValue [object invoke -create -alias \ DateTime SpecifyKind $dateTimeValue Utc] } set code [catch { object invoke System.Data.SQLite.SQLiteConvert ToJulianDay \ $dateTimeValue } result] if {$code != 0} then { regexp -- {---> (.*?):} $result result result regexp -- {(System\..*?):} $result result result } lappend results [list [$dateTimeValue ToString [getDateTimeFormat]] \ $code $result] } set results } -cleanup { unset -nocomplain code result results dateTimeValue dateTimeValues \ maxDateTime minDateTime } -constraints {eagle System.Data.SQLite} -result {{{0001-01-01 00:00:00} 0\ 1721425.5} {{0099-12-31 00:00:00Z} 0 1757583.5} {{0100-01-01 00:00:00Z} 0\ 1757584.5} {{9999-12-31 23:59:59.9999999} 0 5373484.49999999}}} ############################################################################### runTest {test tkt-3e783eecbe-1.2 {From Julian Day w/o OLE Automation} -setup { set minDoubleValue [object invoke -create -alias Double MinValue] set maxDoubleValue [object invoke -create -alias Double MaxValue] set doubleValues [list \ $minDoubleValue -1.0 0.0 1.0 1721425.5 1757583.5 2451910.5 \ 2456962.0 5373484.49999998 5373484.49999999 $maxDoubleValue] } -body { set results [list] foreach doubleValue $doubleValues { if {$doubleValue ni [info objects]} then { set doubleValue [object invoke \ -create -alias Double Parse $doubleValue] } set code [catch { set dateTimeValue [object invoke -create -alias \ System.Data.SQLite.SQLiteConvert ToDateTime $doubleValue Utc] $dateTimeValue ToString [getDateTimeFormat] } result] if {$code != 0} then { regexp -- {---> (.*?):} $result result result regexp -- {(System\..*?):} $result result result } lappend results [list [$doubleValue ToString] $code $result] } set results } -cleanup { unset -nocomplain code result results dateTimeValue doubleValue \ doubleValues maxDoubleValue minDoubleValue } -constraints {eagle System.Data.SQLite} -result {{-1.79769313486232E+308 1\ System.ArgumentException} {-1 1 System.ArgumentException} {0 1\ System.ArgumentException} {1 1 System.ArgumentException} {1721425.5 0\ {0001-01-01 00:00:00Z}} {1757583.5 0 {0099-12-31 00:00:00Z}} {2451910.5 0\ {2001-01-01 00:00:00Z}} {2456962 0 {2014-10-31 12:00:00Z}} {5373484.49999998 0\ {9999-12-31 23:59:59.998Z}} {5373484.49999999 0 {9999-12-31 23:59:59.999Z}}\ {1.79769313486232E+308 1 System.ArgumentException}}} ############################################################################### runTest {test tkt-3e783eecbe-1.3 {Julian Day storage} -setup { set doubleValues [list \ -1.0 0.0 1.0 1721425.5 1757583.5 2451910.5 2456962.0 \ 5373484.49999998 5373484.49999999] setupDb [set fileName tkt-3e783eecbe-1.3.db] "" JulianDay } -body { sql execute $db "CREATE TABLE t1(x INTEGER, y DATETIME);" set i 1 set results [list] foreach doubleValue $doubleValues { if {$doubleValue ni [info objects]} then { set doubleValue [object invoke \ -create -alias Double Parse $doubleValue] } set code [catch { sql execute $db "INSERT INTO t1 (x, y) VALUES(?, ?);" \ [list param1 Int32 $i] [list param2 Double $doubleValue] sql execute -execute reader -format list -datetimeformat \ [getDateTimeFormat] $db "SELECT y FROM t1 WHERE x = ?;" \ [list param1 Int32 $i] } result] if {$code != 0} then { regexp -- {---> (.*?):} $result result result regexp -- {(System\..*?):} $result result result } lappend results [list [$doubleValue ToString] $code $result] incr i } set results } -cleanup { unset -nocomplain code result results i dateTimeValue doubleValue \ doubleValues maxDoubleValue minDoubleValue cleanupDb $fileName unset -nocomplain db fileName } -constraints \ {eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite} -result \ {{-1 1 System.ArgumentException} {0 1 System.ArgumentException} {1 1\ System.ArgumentException} {1721425.5 0 {{0001-01-01 00:00:00}}} {1757583.5 0\ {{0099-12-31 00:00:00}}} {2451910.5 0 {{2001-01-01 00:00:00}}} {2456962 0\ {{2014-10-31 12:00:00}}} {5373484.49999998 0 {{9999-12-31 23:59:59.998}}}\ {5373484.49999999 0 {{9999-12-31 23:59:59.999}}}}} ############################################################################### runSQLiteTestEpilogue runTestEpilogue |
Changes to readme.htm.
︙ | ︙ | |||
212 213 214 215 216 217 218 219 220 221 222 223 224 225 | <b>1.0.95.0 - November XX, 2014 <font color="red">(release scheduled)</font></b> </p> <ul> <li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_7.html">SQLite 3.8.7</a>.</li> <li>Make sure SQL statements generated for DbUpdateCommandTree objects are properly delimited.</li> <li>Various minor performance enhancements to the SQLiteDataReader class. Pursuant to [e122d26e70].</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> </ul> <p> <b>1.0.94.0 - September 9, 2014</b> </p> <ul> <li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_6.html">SQLite 3.8.6</a>.</li> <li>Updated to <a href="http://www.nuget.org/packages/EntityFramework/6.1.1">Entity Framework 6.1.1</a>.</li> | > | 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 | <b>1.0.95.0 - November XX, 2014 <font color="red">(release scheduled)</font></b> </p> <ul> <li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_7.html">SQLite 3.8.7</a>.</li> <li>Make sure SQL statements generated for DbUpdateCommandTree objects are properly delimited.</li> <li>Various minor performance enhancements to the SQLiteDataReader class. Pursuant to [e122d26e70].</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> </ul> <p> <b>1.0.94.0 - September 9, 2014</b> </p> <ul> <li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_6.html">SQLite 3.8.6</a>.</li> <li>Updated to <a href="http://www.nuget.org/packages/EntityFramework/6.1.1">Entity Framework 6.1.1</a>.</li> |
︙ | ︙ |
Changes to www/news.wiki.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <title>News</title> <b>Version History</b> <p> <b>1.0.95.0 - November XX, 2014 <font color="red">(release scheduled)</font></b> </p> <ul> <li>Updated to [http://www.sqlite.org/releaselog/3_8_7_1.html|SQLite 3.8.7.1].</li> <li>Make sure SQL statements generated for DbUpdateCommandTree objects are properly delimited.</li> <li>Various minor performance enhancements to the SQLiteDataReader class. Pursuant to [e122d26e70].</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> </ul> <p> <b>1.0.94.0 - September 9, 2014</b> </p> <ul> <li>Updated to [http://www.sqlite.org/releaselog/3_8_6.html|SQLite 3.8.6].</li> <li>Updated to [http://www.nuget.org/packages/EntityFramework/6.1.1|Entity Framework 6.1.1].</li> | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <title>News</title> <b>Version History</b> <p> <b>1.0.95.0 - November XX, 2014 <font color="red">(release scheduled)</font></b> </p> <ul> <li>Updated to [http://www.sqlite.org/releaselog/3_8_7_1.html|SQLite 3.8.7.1].</li> <li>Make sure SQL statements generated for DbUpdateCommandTree objects are properly delimited.</li> <li>Various minor performance enhancements to the SQLiteDataReader class. Pursuant to [e122d26e70].</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> </ul> <p> <b>1.0.94.0 - September 9, 2014</b> </p> <ul> <li>Updated to [http://www.sqlite.org/releaselog/3_8_6.html|SQLite 3.8.6].</li> <li>Updated to [http://www.nuget.org/packages/EntityFramework/6.1.1|Entity Framework 6.1.1].</li> |
︙ | ︙ |