Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Merge updates from trunk. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | nugetChanges |
Files: | files | file ages | folders |
SHA1: |
513718f26c808102a2604a71b00094f4 |
User & Date: | mistachkin 2014-08-20 19:41:09.842 |
Context
2014-09-03
| ||
22:49 | More refactoring of shared files. Add MSBuild targets for later use. check-in: 857c4992b2 user: mistachkin tags: nugetChanges | |
2014-08-20
| ||
19:54 | Incorporate the NuGet changes into this branch as well. check-in: 6d139eeec7 user: mistachkin tags: featureWork | |
19:41 | Merge updates from trunk. check-in: 513718f26c user: mistachkin tags: nugetChanges | |
2014-08-19
| ||
17:58 | Add per-connection caching of the 'Use_SQLiteConvert_DefaultDbType' and 'Use_SQLiteConvert_DefaultTypeName' settings. Pursuant to [58ed318f2f]. check-in: 948fd5b3a3 user: mistachkin tags: trunk | |
05:08 | Add some comments. check-in: 5e0ecd4053 user: mistachkin tags: nugetChanges | |
Changes
Changes to Doc/Extra/Provider/version.html.
︙ | ︙ | |||
39 40 41 42 43 44 45 | </td> </tr> </table> </div> <div id="mainSection"> <div id="mainBody"> <h1 class="heading">Version History</h1> | | > | 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | </td> </tr> </table> </div> <div id="mainSection"> <div id="mainBody"> <h1 class="heading">Version History</h1> <p><b>1.0.94.0 - September XX, 2014 <font color="red">(release scheduled)</font></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>Add RefreshFlags method to the SQLiteDataReader class to forcibly refresh its connection flags.</li> <li>Improve automatic detection and handling of the Entity Framework 6 assembly by the design-time components installer. Pursuant to <a href="http://system.data.sqlite.org/index.html/info/e634e330a6">[e634e330a6]</a>. <b>** Potentially Incompatible Change **</b></li> <li>Improve SQLiteDataReader performance slightly by caching the connection flags. <b>** Potentially Incompatible Change **</b></li> <li>Add ClearCachedSettings method to the SQLiteConnection class.</li> <li>Add NoConvertSettings connection flag to disable querying of runtime configuration settings from within the SQLiteConvert class. Pursuant to <a href="http://system.data.sqlite.org/index.html/info/58ed318f2f">[58ed318f2f]</a>.</li> <li>Minimize usage of the "Use_SQLiteConvert_DefaultDbType" and "Use_SQLiteConvert_DefaultTypeName" settings. Fix for <a href="http://system.data.sqlite.org/index.html/info/58ed318f2f">[58ed318f2f]</a>. <b>** Potentially Incompatible Change **</b></li> </ul> <p><b>1.0.93.0 - June 23, 2014</b></p> <ul> <li>Updated to <a href="http://www.sqlite.org/releaselog/3_8_5.html">SQLite 3.8.5</a>.</li> <li>Updated to <a href="http://www.nuget.org/packages/EntityFramework/6.1">Entity Framework 6.1</a>.</li> |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteConnection.cs.
︙ | ︙ | |||
482 483 484 485 486 487 488 489 490 491 492 493 494 495 | /// <summary> /// The extra behavioral flags for this connection, if any. See the /// <see cref="SQLiteConnectionFlags" /> enumeration for a list of /// possible values. /// </summary> private SQLiteConnectionFlags _flags; /// <summary> /// The default databse type for this connection. This value will only /// be used if the <see cref="SQLiteConnectionFlags.UseConnectionTypes" /> /// flag is set. /// </summary> private DbType? _defaultDbType; | > > > > > > > | 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 | /// <summary> /// The extra behavioral flags for this connection, if any. See the /// <see cref="SQLiteConnectionFlags" /> enumeration for a list of /// possible values. /// </summary> private SQLiteConnectionFlags _flags; /// <summary> /// The cached values for all settings that have been fetched on behalf /// of this connection. This cache may be cleared by calling the /// <see cref="ClearCachedSettings" /> method. /// </summary> private Dictionary<string, object> _cachedSettings; /// <summary> /// The default databse type for this connection. This value will only /// be used if the <see cref="SQLiteConnectionFlags.UseConnectionTypes" /> /// flag is set. /// </summary> private DbType? _defaultDbType; |
︙ | ︙ | |||
633 634 635 636 637 638 639 640 641 642 643 644 645 646 | #if INTEROP_LOG if (UnsafeNativeMethods.sqlite3_config_log_interop() == SQLiteErrorCode.Ok) { UnsafeNativeMethods.sqlite3_log( SQLiteErrorCode.Ok, SQLiteConvert.ToUTF8("logging initialized.")); } #endif _typeNames = new SQLiteDbTypeMap(); _parseViaFramework = parseViaFramework; _flags = SQLiteConnectionFlags.Default; _defaultDbType = null; _defaultTypeName = null; _connectionState = ConnectionState.Closed; | > > > | 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 | #if INTEROP_LOG if (UnsafeNativeMethods.sqlite3_config_log_interop() == SQLiteErrorCode.Ok) { UnsafeNativeMethods.sqlite3_log( SQLiteErrorCode.Ok, SQLiteConvert.ToUTF8("logging initialized.")); } #endif _cachedSettings = new Dictionary<string, object>( new TypeNameStringComparer()); _typeNames = new SQLiteDbTypeMap(); _parseViaFramework = parseViaFramework; _flags = SQLiteConnectionFlags.Default; _defaultDbType = null; _defaultTypeName = null; _connectionState = ConnectionState.Closed; |
︙ | ︙ | |||
916 917 918 919 920 921 922 923 924 925 926 927 928 929 | finally { if (backup != null) sqliteBase.FinishBackup(backup); /* throw */ } } #endregion /////////////////////////////////////////////////////////////////////////////////////////////// #region Per-Connection Type Mappings /// <summary> /// Clears the per-connection type mappings. /// </summary> | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | finally { if (backup != null) sqliteBase.FinishBackup(backup); /* throw */ } } #endregion /////////////////////////////////////////////////////////////////////////////////////////////// #region Per-Connection Settings /// <summary> /// Clears the per-connection cached settings. /// </summary> /// <returns> /// The total number of per-connection settings cleared. /// </returns> public int ClearCachedSettings() { CheckDisposed(); int result = -1; /* NO SETTINGS */ if (_cachedSettings != null) { result = _cachedSettings.Count; _cachedSettings.Clear(); } return result; } /////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> /// Queries and returns the value of the specified setting, using the /// cached setting names and values for this connection, when available. /// </summary> /// <param name="name"> /// The name of the setting. /// </param> /// <param name="default"> /// The value to be returned if the setting has not been set explicitly /// or cannot be determined. /// </param> /// <param name="value"> /// The value of the cached setting is stored here if found; otherwise, /// the value of <paramref name="default" /> is stored here. /// </param> /// <returns> /// Non-zero if the cached setting was found; otherwise, zero. /// </returns> internal bool TryGetCachedSetting( string name, /* in */ string @default, /* in */ out object value /* out */ ) { if ((name == null) || (_cachedSettings == null)) { value = @default; return false; } return _cachedSettings.TryGetValue(name, out value); } /////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> /// Adds or sets the cached setting specified by <paramref name="name" /> /// to the value specified by <paramref name="value" />. /// </summary> /// <param name="name"> /// The name of the cached setting to add or replace. /// </param> /// <param name="value"> /// The new value of the cached setting. /// </param> internal void SetCachedSetting( string name, /* in */ object value /* in */ ) { if ((name == null) || (_cachedSettings == null)) return; _cachedSettings[name] = value; } #endregion /////////////////////////////////////////////////////////////////////////////////////////////// #region Per-Connection Type Mappings /// <summary> /// Clears the per-connection type mappings. /// </summary> |
︙ | ︙ |
Changes to System.Data.SQLite/SQLiteConvert.cs.
︙ | ︙ | |||
1110 1111 1112 1113 1114 1115 1116 | if ((flags & SQLiteConnectionFlags.NoConvertSettings) == SQLiteConnectionFlags.NoConvertSettings) { return FallbackDefaultTypeName; } | > > > > > > > > > | < | | | > > > > > > > | | 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 | if ((flags & SQLiteConnectionFlags.NoConvertSettings) == SQLiteConnectionFlags.NoConvertSettings) { return FallbackDefaultTypeName; } string name = "Use_SQLiteConvert_DefaultTypeName"; object value = null; string @default = null; if ((connection == null) || !connection.TryGetCachedSetting(name, @default, out value)) { try { value = UnsafeNativeMethods.GetSettingValue(name, @default); if (value == null) value = FallbackDefaultTypeName; } finally { if (connection != null) connection.SetCachedSetting(name, value); } } return SettingValueToString(value); } #if !NET_COMPACT_20 && TRACE_WARNING /// <summary> /// If applicable, issues a trace log message warning about falling back to /// the default database type name. /// </summary> |
︙ | ︙ | |||
1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 | case DbType.AnsiStringFixedLength: case DbType.StringFixedLength: return true; default: return false; } } /// <summary> /// Determines the default <see cref="DbType" /> value to be used when a /// per-connection value is not available. /// </summary> /// <param name="connection"> /// The connection context for type mappings, if any. | > > > > > > > > > > > > > > > > > > > > > > > > | 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 | case DbType.AnsiStringFixedLength: case DbType.StringFixedLength: return true; default: return false; } } /// <summary> /// Determines and returns the runtime configuration setting string that /// should be used in place of the specified object value. /// </summary> /// <param name="value"> /// The object value to convert to a string. /// </param> /// <returns> /// Either the string to use in place of the object value -OR- null if it /// cannot be determined. /// </returns> private static string SettingValueToString( object value ) { if (value is string) return (string)value; if (value != null) return value.ToString(); return null; } /// <summary> /// Determines the default <see cref="DbType" /> value to be used when a /// per-connection value is not available. /// </summary> /// <param name="connection"> /// The connection context for type mappings, if any. |
︙ | ︙ | |||
1467 1468 1469 1470 1471 1472 1473 | if ((flags & SQLiteConnectionFlags.NoConvertSettings) == SQLiteConnectionFlags.NoConvertSettings) { return FallbackDefaultDbType; } | | | > > > > > > > | | | > > > > > > > > > | | | | | > | > > > > > > | 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 | if ((flags & SQLiteConnectionFlags.NoConvertSettings) == SQLiteConnectionFlags.NoConvertSettings) { return FallbackDefaultDbType; } bool found = false; string name = "Use_SQLiteConvert_DefaultDbType"; object value = null; string @default = null; if ((connection == null) || !connection.TryGetCachedSetting(name, @default, out value)) { value = UnsafeNativeMethods.GetSettingValue(name, @default); if (value == null) value = FallbackDefaultDbType; } else { found = true; } try { if (!(value is DbType)) { value = SQLiteConnection.TryParseEnum( typeof(DbType), SettingValueToString(value), true); if (!(value is DbType)) value = FallbackDefaultDbType; } return (DbType)value; } finally { if (!found && (connection != null)) connection.SetCachedSetting(name, value); } } /// <summary> /// Determines if the specified textual value appears to be a /// <see cref="DBNull" /> value. /// </summary> /// <param name="text"> |
︙ | ︙ |
Changes to Tests/tkt-58ed318f2f.eagle.
︙ | ︙ | |||
52 53 54 55 56 57 58 | CREATE TABLE t1(x, y); INSERT INTO t1 (x, y) VALUES(0, 1); INSERT INTO t1 (x, y) VALUES('0', '1'); } sql execute -execute reader -format list $db "SELECT x, y FROM t1;" | | | 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | CREATE TABLE t1(x, y); INSERT INTO t1 (x, y) VALUES(0, 1); INSERT INTO t1 (x, y) VALUES('0', '1'); } sql execute -execute reader -format list $db "SELECT x, y FROM t1;" expr {[getSettingReadCount Use_SQLiteConvert_DefaultDbType] == 1} } -cleanup { cleanupDb $fileName unset -nocomplain db fileName } -constraints \ {eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite\ buildConfiguration.Debug} -result {True}} |
︙ | ︙ | |||
78 79 80 81 82 83 84 | CREATE TABLE t1(x, y); INSERT INTO t1 (x, y) VALUES(0, 1); INSERT INTO t1 (x, y) VALUES('0', '1'); } sql execute -execute reader -format list $db "SELECT x, y FROM t1;" | | | 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | CREATE TABLE t1(x, y); INSERT INTO t1 (x, y) VALUES(0, 1); INSERT INTO t1 (x, y) VALUES('0', '1'); } sql execute -execute reader -format list $db "SELECT x, y FROM t1;" expr {[getSettingReadCount Use_SQLiteConvert_DefaultDbType] == 1} } -cleanup { cleanupDb $fileName unset -nocomplain db fileName } -constraints \ {eagle monoBug28 command.sql compile.DATA SQLite System.Data.SQLite\ buildConfiguration.Debug} -result {True}} |
︙ | ︙ | |||
160 161 162 163 164 165 166 | CREATE TABLE t1(x, y); INSERT INTO t1 (x, y) VALUES(0, 1); INSERT INTO t1 (x, y) VALUES('0', '1'); } set columns [$connection GetSchema COLUMNS] | | | 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | CREATE TABLE t1(x, y); INSERT INTO t1 (x, y) VALUES(0, 1); INSERT INTO t1 (x, y) VALUES('0', '1'); } set columns [$connection GetSchema COLUMNS] expr {[getSettingReadCount Use_SQLiteConvert_DefaultTypeName] == 1} } -cleanup { cleanupDb $fileName freeDbConnection unset -nocomplain columns connection db fileName } -constraints \ |
︙ | ︙ | |||
190 191 192 193 194 195 196 | CREATE TABLE t1(x, y); INSERT INTO t1 (x, y) VALUES(0, 1); INSERT INTO t1 (x, y) VALUES('0', '1'); } set columns [$connection GetSchema COLUMNS] | | | 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 | CREATE TABLE t1(x, y); INSERT INTO t1 (x, y) VALUES(0, 1); INSERT INTO t1 (x, y) VALUES('0', '1'); } set columns [$connection GetSchema COLUMNS] expr {[getSettingReadCount Use_SQLiteConvert_DefaultTypeName] == 1} } -cleanup { cleanupDb $fileName freeDbConnection unset -nocomplain columns connection db fileName } -constraints \ |
︙ | ︙ | |||
342 343 344 345 346 347 348 | sql execute -execute reader -format list $db "SELECT x, y FROM t1;" set columns [$connection GetSchema COLUMNS] # # TODO: These counts may need to be updated in future versions. # | | | | 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 | sql execute -execute reader -format list $db "SELECT x, y FROM t1;" set columns [$connection GetSchema COLUMNS] # # TODO: These counts may need to be updated in future versions. # expr {[getSettingReadCount Use_SQLiteConvert_DefaultDbType] == 1 && \ [getSettingReadCount Use_SQLiteConvert_DefaultTypeName] == 1} } -cleanup { cleanupDb $fileName freeDbConnection unset -nocomplain columns connection db fileName } -constraints \ |
︙ | ︙ |
Changes to readme.htm.
1 2 3 4 5 6 7 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> </head> <body> ADO.NET SQLite Data Provider<br /> | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> </head> <body> ADO.NET SQLite Data Provider<br /> Version 1.0.94.0 September XX, 2014 <font color="red">(release scheduled)</font><br /> Using <a href="http://www.sqlite.org/releaselog/3_8_6.html">SQLite 3.8.6</a><br /> Originally written by Robert Simpson<br /> Released to the public domain, use at your own risk!<br /> Official provider website: <a href="http://system.data.sqlite.org/">http://system.data.sqlite.org/</a><br /> Legacy versions: <a href="http://sqlite.phxsoftware.com/">http://sqlite.phxsoftware.com/</a><br /> <br /> The current development version can be downloaded from <a href="http://system.data.sqlite.org/index.html/timeline?y=ci"> |
︙ | ︙ | |||
205 206 207 208 209 210 211 | designed for robustness and maximum backward compatibility with previously released versions of System.Data.SQLite. </p> <h2><b>Version History</b></h2> <p> | | > | 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 | designed for robustness and maximum backward compatibility with previously released versions of System.Data.SQLite. </p> <h2><b>Version History</b></h2> <p> <b>1.0.94.0 - September XX, 2014 <font color="red">(release scheduled)</font></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>Add RefreshFlags method to the SQLiteDataReader class to forcibly refresh its connection flags.</li> <li>Improve automatic detection and handling of the Entity Framework 6 assembly by the design-time components installer. Pursuant to [e634e330a6]. <b>** Potentially Incompatible Change **</b></li> <li>Improve SQLiteDataReader performance slightly by caching the connection flags. <b>** Potentially Incompatible Change **</b></li> <li>Add ClearCachedSettings method to the SQLiteConnection class.</li> <li>Add NoConvertSettings connection flag to disable querying of runtime configuration settings from within the SQLiteConvert class. Pursuant to [58ed318f2f].</li> <li>Minimize usage of the "Use_SQLiteConvert_DefaultDbType" and "Use_SQLiteConvert_DefaultTypeName" settings. Fix for [58ed318f2f]. <b>** Potentially Incompatible Change **</b></li> </ul> <p> <b>1.0.93.0 - June 23, 2014</b> </p> <ul> |
︙ | ︙ |
Changes to www/news.wiki.
1 2 3 4 5 | <title>News</title> <b>Version History</b> <p> | | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <title>News</title> <b>Version History</b> <p> <b>1.0.94.0 - September XX, 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> <li>Add RefreshFlags method to the SQLiteDataReader class to forcibly refresh its connection flags.</li> <li>Improve automatic detection and handling of the Entity Framework 6 assembly by the design-time components installer. Pursuant to [e634e330a6]. <b>** Potentially Incompatible Change **</b></li> <li>Improve SQLiteDataReader performance slightly by caching the connection flags. <b>** Potentially Incompatible Change **</b></li> <li>Add ClearCachedSettings method to the SQLiteConnection class.</li> <li>Add NoConvertSettings connection flag to disable querying of runtime configuration settings from within the SQLiteConvert class. Pursuant to [58ed318f2f].</li> <li>Minimize usage of the "Use_SQLiteConvert_DefaultDbType" and "Use_SQLiteConvert_DefaultTypeName" settings. Fix for [58ed318f2f]. <b>** Potentially Incompatible Change **</b></li> </ul> <p> <b>1.0.93.0 - June 23, 2014</b> </p> <ul> |
︙ | ︙ |