Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Cherrypick of [92f1a8d6b95e5c0d], [2621aa6f2e116d71], [060be3824767ba41], and [4fdd8dee13b40da2], cache the assembly directory and XML configuration file name. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | branch-1.0.105 |
Files: | files | file ages | folders |
SHA1: |
defe7832c2016d89302ca1a728d8b856 |
User & Date: | mistachkin 2017-05-11 15:48:26.357 |
Context
2017-05-11
| ||
15:59 | Bump version to 1.0.105.1. check-in: f0e7bfcebd user: mistachkin tags: branch-1.0.105 | |
15:48 | Cherrypick of [92f1a8d6b95e5c0d], [2621aa6f2e116d71], [060be3824767ba41], and [4fdd8dee13b40da2], cache the assembly directory and XML configuration file name. check-in: defe7832c2 user: mistachkin tags: branch-1.0.105 | |
15:43 | Cherrypick of [cee7126f56f28d0e], fix caching of 'No_SQLiteConnectionNewParser' and 'DefaultFlags_SQLiteConnection'. check-in: 362b7933d5 user: mistachkin tags: branch-1.0.105 | |
15:21 | Update tests and suite helper library to account for caching of the XML configuration file name. check-in: 4fdd8dee13 user: mistachkin tags: trunk | |
04:06 | Cache the XML file name used by the configuration subsystem. check-in: 060be38247 user: mistachkin tags: trunk | |
01:45 | Add a missing '#if DEBUG' in the DebugData class. check-in: 2621aa6f2e user: mistachkin tags: trunk | |
01:30 | Cache the assembly directory used by the configuration subsystem. check-in: 92f1a8d6b9 user: mistachkin tags: trunk | |
Changes
Changes to Doc/Extra/Provider/version.html.
︙ | ︙ | |||
43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <div id="mainSection"> <div id="mainBody"> <h1 class="heading">Version History</h1> <p><b>1.0.105.1 - May 15, 2017</b></p> <ul> <li>Prevent culture settings from negatively impacting integer connection string defaults.</li> <li>Make sure the "No_SQLiteConnectionNewParser" and "DefaultFlags_SQLiteConnection" setting values end up being cached.</li> </ul> <p><b>1.0.105.0 - April 9, 2017</b></p> <ul> <li>Updated to <a href="https://www.sqlite.org/releaselog/3_18_0.html">SQLite 3.18.0</a>.</li> <li>Add experimental support for native sha1 extension.</li> </ul> <p><b>1.0.104.0 - December 16, 2016</b></p> | > | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | <div id="mainSection"> <div id="mainBody"> <h1 class="heading">Version History</h1> <p><b>1.0.105.1 - May 15, 2017</b></p> <ul> <li>Prevent culture settings from negatively impacting integer connection string defaults.</li> <li>Make sure the "No_SQLiteConnectionNewParser" and "DefaultFlags_SQLiteConnection" setting values end up being cached.</li> <li>Cache the XML file name and assembly directory used by the configuration subsystem.</li> </ul> <p><b>1.0.105.0 - April 9, 2017</b></p> <ul> <li>Updated to <a href="https://www.sqlite.org/releaselog/3_18_0.html">SQLite 3.18.0</a>.</li> <li>Add experimental support for native sha1 extension.</li> </ul> <p><b>1.0.104.0 - December 16, 2016</b></p> |
︙ | ︙ |
Changes to System.Data.SQLite/UnsafeNativeMethods.cs.
︙ | ︙ | |||
43 44 45 46 47 48 49 50 51 52 53 54 55 56 | /// <summary> /// This class encapsulates some tracking data that is used for debugging /// and testing purposes. /// </summary> internal static class DebugData { #region Private Data #region Critical Handle Counts (Debug Build Only) #if COUNT_HANDLE // // NOTE: These counts represent the total number of outstanding // (non-disposed) CriticalHandle derived object instances // created by this library and are primarily for use by // the test suite. These counts are incremented by the | > > > > > > > > > | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | /// <summary> /// This class encapsulates some tracking data that is used for debugging /// and testing purposes. /// </summary> internal static class DebugData { #region Private Data #if DEBUG /// <summary> /// This lock is used to protect several static fields. /// </summary> private static readonly object staticSyncRoot = new object(); #endif ///////////////////////////////////////////////////////////////////////// #region Critical Handle Counts (Debug Build Only) #if COUNT_HANDLE // // NOTE: These counts represent the total number of outstanding // (non-disposed) CriticalHandle derived object instances // created by this library and are primarily for use by // the test suite. These counts are incremented by the |
︙ | ︙ | |||
66 67 68 69 70 71 72 | #endregion ///////////////////////////////////////////////////////////////////////// #region Settings Read Counts (Debug Build Only) #if DEBUG /// <summary> | < < < < < < < > > > > > > > > > > > > > | > > > | 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 | #endregion ///////////////////////////////////////////////////////////////////////// #region Settings Read Counts (Debug Build Only) #if DEBUG /// <summary> /// This dictionary stores the read counts for the runtime configuration /// settings. This information is only recorded when compiled in the /// "Debug" build configuration. /// </summary> private static Dictionary<string, int> settingReadCounts; ///////////////////////////////////////////////////////////////////////// /// <summary> /// This dictionary stores the read counts for the runtime configuration /// settings via the XML configuration file. This information is only /// recorded when compiled in the "Debug" build configuration. /// </summary> private static Dictionary<string, int> settingFileReadCounts; #endif #endregion ///////////////////////////////////////////////////////////////////////// #region Other Counts (Debug Build Only) #if DEBUG /// <summary> /// This dictionary stores miscellaneous counts used for debugging /// purposes. This information is only recorded when compiled in the /// "Debug" build configuration. /// </summary> private static Dictionary<string, int> otherCounts; #endif #endregion #endregion ///////////////////////////////////////////////////////////////////////// #region Public Methods #if DEBUG /// <summary> /// Creates dictionaries used to store the read counts for each of /// the runtime configuration settings. These numbers are used for /// debugging and testing purposes only. /// </summary> public static void Initialize() { lock (staticSyncRoot) { // // NOTE: Create the dictionaries of statistics that will // contain the number of times each setting value // has been read. // if (settingReadCounts == null) settingReadCounts = new Dictionary<string, int>(); if (settingFileReadCounts == null) settingFileReadCounts = new Dictionary<string, int>(); if (otherCounts == null) otherCounts = new Dictionary<string, int>(); } } ///////////////////////////////////////////////////////////////////////// /// <summary> /// Increments the read count for the specified runtime configuration |
︙ | ︙ | |||
167 168 169 170 171 172 173 174 175 176 177 178 179 180 | settingReadCounts[name] = count + 1; else settingReadCounts.Add(name, 1); } } } } #endif #endregion } #endif #endregion ///////////////////////////////////////////////////////////////////////////// | > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | settingReadCounts[name] = count + 1; else settingReadCounts.Add(name, 1); } } } } ///////////////////////////////////////////////////////////////////////// /// <summary> /// Increments the specified counter. /// </summary> /// <param name="name"> /// The name of the counter being incremented. /// </param> public static void IncrementOtherCount( string name ) { lock (staticSyncRoot) { if (otherCounts != null) { int count; if (otherCounts.TryGetValue(name, out count)) otherCounts[name] = count + 1; else otherCounts.Add(name, 1); } } } #endif #endregion } #endif #endregion ///////////////////////////////////////////////////////////////////////////// |
︙ | ︙ | |||
634 635 636 637 638 639 640 641 642 643 644 645 646 647 | /// purposes. First, they are used to determine if the assembly code /// base should be used instead of the location, based upon whether one /// or more of the named sub-directories exist within the assembly code /// base. Second, they are used to assist in loading the appropriate /// SQLite interop assembly into the current process. /// </summary> private static Dictionary<string, string> processorArchitecturePlatforms; #endregion ///////////////////////////////////////////////////////////////////////// /// <summary> /// For now, this method simply calls the Initialize method. /// </summary> static UnsafeNativeMethods() | > > > > > > > > > > > > > > > > | 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 | /// purposes. First, they are used to determine if the assembly code /// base should be used instead of the location, based upon whether one /// or more of the named sub-directories exist within the assembly code /// base. Second, they are used to assist in loading the appropriate /// SQLite interop assembly into the current process. /// </summary> private static Dictionary<string, string> processorArchitecturePlatforms; ///////////////////////////////////////////////////////////////////////// /// <summary> /// This is the cached return value from the /// <see cref="GetAssemblyDirectory" /> method -OR- null if that method /// has never returned a valid value. /// </summary> private static string cachedAssemblyDirectory; ///////////////////////////////////////////////////////////////////////// /// <summary> /// This is the cached return value from the /// <see cref="GetXmlConfigFileName" /> method -OR- null if that method /// has never returned a valid value. /// </summary> private static string cachedXmlConfigFileName; #endregion ///////////////////////////////////////////////////////////////////////// /// <summary> /// For now, this method simply calls the Initialize method. /// </summary> static UnsafeNativeMethods() |
︙ | ︙ | |||
666 667 668 669 670 671 672 | return; #endif #endif #region Debug Build Only #if DEBUG // | | > | | 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 | return; #endif #endif #region Debug Build Only #if DEBUG // // NOTE: Create the lists of statistics that will contain // various counts used in debugging, including the // number of times each setting value has been read. // DebugData.Initialize(); #endif #endregion lock (staticSyncRoot) { // // TODO: Make sure this list is updated if the supported |
︙ | ︙ | |||
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 | else return null; } } ///////////////////////////////////////////////////////////////////////// /// <summary> /// Queries and returns the XML configuration file name for the assembly /// containing the managed System.Data.SQLite components. /// </summary> /// <returns> /// The XML configuration file name -OR- null if it cannot be determined /// or does not exist. /// </returns> private static string GetXmlConfigFileName() { string directory; string fileName; #if !PLATFORM_COMPACTFRAMEWORK directory = AppDomain.CurrentDomain.BaseDirectory; fileName = MaybeCombinePath(directory, XmlConfigFileName); if (File.Exists(fileName)) return fileName; #endif | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | > > > > > > > | 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 | else return null; } } ///////////////////////////////////////////////////////////////////////// /// <summary> /// Resets the cached XML configuration file name value, thus forcing the /// next call to <see cref="GetCachedXmlConfigFileName" /> method to rely /// upon the <see cref="GetXmlConfigFileName" /> method to fetch the /// XML configuration file name. /// </summary> private static void ResetCachedXmlConfigFileName() { #region Debug Build Only #if DEBUG DebugData.IncrementOtherCount("Method_ResetCachedXmlConfigFileName"); #endif #endregion lock (staticSyncRoot) { cachedXmlConfigFileName = null; } } ///////////////////////////////////////////////////////////////////////// /// <summary> /// Queries and returns the cached XML configuration file name for the /// assembly containing the managed System.Data.SQLite components, if /// available. If the cached XML configuration file name value is not /// available, the <see cref="GetXmlConfigFileName" /> method will /// be used to obtain the XML configuration file name. /// </summary> /// <returns> /// The XML configuration file name -OR- null if it cannot be determined /// or does not exist. /// </returns> private static string GetCachedXmlConfigFileName() { #region Debug Build Only #if DEBUG DebugData.IncrementOtherCount("Method_GetCachedXmlConfigFileName"); #endif #endregion lock (staticSyncRoot) { if (cachedXmlConfigFileName != null) return cachedXmlConfigFileName; } return GetXmlConfigFileName(); } ///////////////////////////////////////////////////////////////////////// /// <summary> /// Queries and returns the XML configuration file name for the assembly /// containing the managed System.Data.SQLite components. /// </summary> /// <returns> /// The XML configuration file name -OR- null if it cannot be determined /// or does not exist. /// </returns> private static string GetXmlConfigFileName() { #region Debug Build Only #if DEBUG DebugData.IncrementOtherCount("Method_GetXmlConfigFileName"); #endif #endregion string directory; string fileName; #if !PLATFORM_COMPACTFRAMEWORK directory = AppDomain.CurrentDomain.BaseDirectory; fileName = MaybeCombinePath(directory, XmlConfigFileName); if (File.Exists(fileName)) { lock (staticSyncRoot) { cachedXmlConfigFileName = fileName; } return fileName; } #endif directory = GetCachedAssemblyDirectory(); fileName = MaybeCombinePath(directory, XmlConfigFileName); if (File.Exists(fileName)) { lock (staticSyncRoot) { cachedXmlConfigFileName = fileName; } return fileName; } return null; } ///////////////////////////////////////////////////////////////////////// /// <summary> |
︙ | ︙ | |||
1059 1060 1061 1062 1063 1064 1065 | /// </returns> private static string ReplaceEnvironmentVariableTokens( string value ) { if (!String.IsNullOrEmpty(value)) { | | | 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 | /// </returns> private static string ReplaceEnvironmentVariableTokens( string value ) { if (!String.IsNullOrEmpty(value)) { string directory = GetCachedAssemblyDirectory(); if (!String.IsNullOrEmpty(directory)) { try { value = value.Replace( AssemblyDirectoryToken, directory); |
︙ | ︙ | |||
1273 1274 1275 1276 1277 1278 1279 | DebugData.IncrementSettingReadCount(name, true); #endif #endregion ///////////////////////////////////////////////////////////////////// return GetSettingValueViaXmlConfigFile( | | | 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 | DebugData.IncrementSettingReadCount(name, true); #endif #endregion ///////////////////////////////////////////////////////////////////// return GetSettingValueViaXmlConfigFile( GetCachedXmlConfigFileName(), name, @default, expand); } ///////////////////////////////////////////////////////////////////////// #if !PLATFORM_COMPACTFRAMEWORK private static string ListToString(IList<string> list) { |
︙ | ︙ | |||
1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 | return false; } #endif ///////////////////////////////////////////////////////////////////////// /// <summary> /// Queries and returns the directory for the assembly currently being /// executed. /// </summary> /// <returns> /// The directory for the assembly currently being executed -OR- null if /// it cannot be determined. /// </returns> private static string GetAssemblyDirectory() { try { Assembly assembly = Assembly.GetExecutingAssembly(); if (assembly == null) return null; | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 | return false; } #endif ///////////////////////////////////////////////////////////////////////// /// <summary> /// Resets the cached assembly directory value, thus forcing the next /// call to <see cref="GetCachedAssemblyDirectory" /> method to rely /// upon the <see cref="GetAssemblyDirectory" /> method to fetch the /// assembly directory. /// </summary> private static void ResetCachedAssemblyDirectory() { #region Debug Build Only #if DEBUG DebugData.IncrementOtherCount("Method_ResetCachedAssemblyDirectory"); #endif #endregion lock (staticSyncRoot) { cachedAssemblyDirectory = null; } } ///////////////////////////////////////////////////////////////////////// /// <summary> /// Queries and returns the cached directory for the assembly currently /// being executed, if available. If the cached assembly directory value /// is not available, the <see cref="GetAssemblyDirectory" /> method will /// be used to obtain the assembly directory. /// </summary> /// <returns> /// The directory for the assembly currently being executed -OR- null if /// it cannot be determined. /// </returns> private static string GetCachedAssemblyDirectory() { #region Debug Build Only #if DEBUG DebugData.IncrementOtherCount("Method_GetCachedAssemblyDirectory"); #endif #endregion lock (staticSyncRoot) { if (cachedAssemblyDirectory != null) return cachedAssemblyDirectory; } return GetAssemblyDirectory(); } ///////////////////////////////////////////////////////////////////////// /// <summary> /// Queries and returns the directory for the assembly currently being /// executed. /// </summary> /// <returns> /// The directory for the assembly currently being executed -OR- null if /// it cannot be determined. /// </returns> private static string GetAssemblyDirectory() { #region Debug Build Only #if DEBUG DebugData.IncrementOtherCount("Method_GetAssemblyDirectory"); #endif #endregion try { Assembly assembly = Assembly.GetExecutingAssembly(); if (assembly == null) return null; |
︙ | ︙ | |||
1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 | if (String.IsNullOrEmpty(fileName)) return null; string directory = Path.GetDirectoryName(fileName); if (String.IsNullOrEmpty(directory)) return null; return directory; } #if !NET_COMPACT_20 && TRACE_SHARED catch (Exception e) #else catch (Exception) | > > > > > | 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 | if (String.IsNullOrEmpty(fileName)) return null; string directory = Path.GetDirectoryName(fileName); if (String.IsNullOrEmpty(directory)) return null; lock (staticSyncRoot) { cachedAssemblyDirectory = directory; } return directory; } #if !NET_COMPACT_20 && TRACE_SHARED catch (Exception e) #else catch (Exception) |
︙ | ︙ |
Changes to Tests/basic.eagle.
︙ | ︙ | |||
4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 | object unimport -importpattern System.Threading object unimport -importpattern System.Globalization } -constraints {eagle command.object monoBug28 command.sql compile.DATA SQLite\ defineConstant.System.Data.SQLite.INTEROP_SHA1_EXTENSION System.Data.SQLite\ SQLiteInterop} -match regexp -result \ {^System#Data#SQLite#SQLiteConnection#\d+$}} ############################################################################### reportSQLiteResources $test_channel ############################################################################### | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 | object unimport -importpattern System.Threading object unimport -importpattern System.Globalization } -constraints {eagle command.object monoBug28 command.sql compile.DATA SQLite\ defineConstant.System.Data.SQLite.INTEROP_SHA1_EXTENSION System.Data.SQLite\ SQLiteInterop} -match regexp -result \ {^System#Data#SQLite#SQLiteConnection#\d+$}} ############################################################################### reportSQLiteResources $test_channel true ############################################################################### runTest {test data-1.87 {GetSettingValue cached directory/file name} -setup { moveSystemDataSQLiteDllConfig false } -body { object invoke -flags +NonPublic System.Data.SQLite.UnsafeNativeMethods \ GetSettingValue setting_for_data-1.87 null expr {[getOtherCount Method_ResetCachedAssemblyDirectory] == -1 && \ [getOtherCount Method_ResetCachedXmlConfigFileName] == -1 && \ [getOtherCount Method_GetAssemblyDirectory] == 1 && \ [getOtherCount Method_GetXmlConfigFileName] == 1 && \ [getOtherCount Method_GetCachedAssemblyDirectory] >= 1 && \ [getOtherCount Method_GetCachedXmlConfigFileName] >= 1} } -cleanup { moveSystemDataSQLiteDllConfig true } -constraints {eagle command.object monoBug28 System.Data.SQLite\ buildConfiguration.Debug} -result {True}} ############################################################################### reportSQLiteResources $test_channel true ############################################################################### runTest {test data-1.88 {GetSettingValue cached directory/file name} -setup { moveSystemDataSQLiteDllConfig false } -body { object invoke -flags +NonPublic System.Data.SQLite.UnsafeNativeMethods \ GetSettingValue setting_for_data-1.88 null object invoke -flags +NonPublic \ System.Data.SQLite.UnsafeNativeMethods ResetCachedAssemblyDirectory object invoke -flags +NonPublic \ System.Data.SQLite.UnsafeNativeMethods ResetCachedXmlConfigFileName object invoke -flags +NonPublic System.Data.SQLite.UnsafeNativeMethods \ GetSettingValue setting_for_data-1.88 null expr {[getOtherCount Method_ResetCachedAssemblyDirectory] == 1 && \ [getOtherCount Method_ResetCachedXmlConfigFileName] == 1 && \ [getOtherCount Method_GetAssemblyDirectory] == 2 && \ [getOtherCount Method_GetXmlConfigFileName] == 2 && \ [getOtherCount Method_GetCachedAssemblyDirectory] >= 2 && \ [getOtherCount Method_GetCachedXmlConfigFileName] >= 2} } -cleanup { moveSystemDataSQLiteDllConfig true } -constraints {eagle command.object monoBug28 System.Data.SQLite\ buildConfiguration.Debug} -result {True}} ############################################################################### reportSQLiteResources $test_channel ############################################################################### |
︙ | ︙ |
Changes to Tests/tkt-58ed318f2f.eagle.
︙ | ︙ | |||
16 17 18 19 20 21 22 | ############################################################################### package require System.Data.SQLite.Test runSQLiteTestPrologue ############################################################################### | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | ############################################################################### package require System.Data.SQLite.Test runSQLiteTestPrologue ############################################################################### reportSQLiteResources $test_channel true ############################################################################### runTest {test tkt-58ed318f2f-1.1 {standard GetDefaultDbType usage} -setup { setupDb [set fileName tkt-58ed318f2f-1.1.db] } -body { |
︙ | ︙ | |||
460 461 462 463 464 465 466 | cleanupDb $fileName restoreGetSettingValueEnvironment unset -nocomplain counts db fileName } -constraints {eagle command.object monoBug28 command.sql compile.DATA SQLite\ System.Data.SQLite buildConfiguration.Debug} -result {True}} | < < < < | 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 | cleanupDb $fileName restoreGetSettingValueEnvironment unset -nocomplain counts db fileName } -constraints {eagle command.object monoBug28 command.sql compile.DATA SQLite\ System.Data.SQLite buildConfiguration.Debug} -result {True}} ############################################################################### reportSQLiteResources $test_channel true ############################################################################### runSQLiteTestEpilogue runTestEpilogue |
Changes to lib/System.Data.SQLite/common.eagle.
︙ | ︙ | |||
3211 3212 3213 3214 3215 3216 3217 | } result] == 0} then { if {!$quiet} then { tputs $channel [appendArgs \ "---- memory in use by the CLR before collection... " \ $result " bytes\n"] } } else { | > | | | > | 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 | } result] == 0} then { if {!$quiet} then { tputs $channel [appendArgs \ "---- memory in use by the CLR before collection... " \ $result " bytes\n"] } } else { if {!$quiet} then { tputs $channel [appendArgs \ "==== WARNING: failed to get CLR memory usage, error: " \ \n\t $result \n] } } } ######################################################################### # # NOTE: Repeatedly attempt to collect garbage until the allotted number |
︙ | ︙ | |||
3236 3237 3238 3239 3240 3241 3242 | # # NOTE: Attempt to force a full garbage collection now. Report any # error that is encountered if we fail. # if {[catch { object invoke GC GetTotalMemory true } error]} then { | > | | | > > | | | > | 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 | # # NOTE: Attempt to force a full garbage collection now. Report any # error that is encountered if we fail. # if {[catch { object invoke GC GetTotalMemory true } error]} then { if {!$quiet} then { tputs $channel [appendArgs \ "==== WARNING: failed full garbage collection, error: " \ \n\t $error \n] } } set now [clock seconds] } while {$start <= $now && $now < $stop} } ######################################################################### if {[haveSQLiteObjectCommand]} then { if {[catch { object invoke GC GetTotalMemory false } result] == 0} then { if {!$quiet} then { tputs $channel [appendArgs \ "---- memory in use by the CLR after collection... " \ $result " bytes\n"] } } else { if {!$quiet} then { tputs $channel [appendArgs \ "==== WARNING: failed to get CLR memory usage, error: " \ \n\t $result \n] } } } } proc getSQLiteHandleCounts { channel {quiet false} } { set result [list] |
︙ | ︙ | |||
3285 3286 3287 3288 3289 3290 3291 | if {!$quiet} then { tputs $channel [appendArgs \ "---- critical handle count \"" $name "\" is " $value \n] } lappend result $value } else { | > | | | > | 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 | if {!$quiet} then { tputs $channel [appendArgs \ "---- critical handle count \"" $name "\" is " $value \n] } lappend result $value } else { if {!$quiet} then { tputs $channel [appendArgs \ "==== WARNING: failed to get critical handle count \"" \ $name "\", error: " \n\t $value \n] } } } } elseif {!$quiet} then { # # NOTE: The actual handle counts are not available; therefore, just # return an empty list. # |
︙ | ︙ | |||
3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 | if {!$quiet} then { tputs $channel [appendArgs \ "---- call sqlite3_shutdown()... error: " \n\t $result \n] } } } } proc reportSQLiteResources { channel {quiet false} {reset true} {collect true} } { # # NOTE: If available, report on (and possibly reset) the runtime # configuration statistics. # if {[haveSQLiteObjectCommand] && \ [haveConstraint buildConfiguration.Debug]} then { if {[catch { | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 | if {!$quiet} then { tputs $channel [appendArgs \ "---- call sqlite3_shutdown()... error: " \n\t $result \n] } } } } proc getSettingReadCount { name {viaFile false} } { if {[haveConstraint buildConfiguration.Debug] && [catch { object invoke -flags +NonPublic -alias \ System.Data.SQLite.DebugData [expr {$viaFile ? \ "settingFileReadCounts" : "settingReadCounts"}] } settingReadCounts] == 0} then { if {[string length $name] > 0} then { if {[$settingReadCounts TryGetValue $name value]} then { tputs $::test_channel [appendArgs \ "---- setting \"" $name "\" was read " $value " times" \ [expr {$viaFile ? " from the configuration file" : ""}] \n] return $value } } else { set nameCount [$settingReadCounts Count] set valueCount 0 object foreach -alias pair $settingReadCounts { incr valueCount [$pair Value] tputs $::test_channel [appendArgs \ "---- setting \"" [$pair Key] "\" was read " [$pair Value] \ " times" [expr {$viaFile ? " from the configuration file" : \ ""}] \n] } return [list $nameCount $valueCount] } } if {[string length $name] > 0} then { tputs $::test_channel [appendArgs \ "---- setting \"" $name "\" was not read" [expr {$viaFile ? \ " from the configuration file" : ""}] \n] } else { tputs $::test_channel [appendArgs \ "---- no settings were read" [expr {$viaFile ? \ " from the configuration file" : ""}] \n] } return -1 } proc getOtherCount { name } { if {[haveConstraint buildConfiguration.Debug] && [catch { object invoke -flags +NonPublic -alias \ System.Data.SQLite.DebugData otherCounts } otherCounts] == 0} then { if {[string length $name] > 0} then { if {[$otherCounts TryGetValue $name value]} then { tputs $::test_channel [appendArgs \ "---- other counter \"" $name "\" has value " $value \n] return $value } } else { set nameCount [$otherCounts Count] set valueCount 0 object foreach -alias pair $otherCounts { incr valueCount [$pair Value] tputs $::test_channel [appendArgs \ "---- other counter \"" [$pair Key] "\" has value " \ [$pair Value] \n] } return [list $nameCount $valueCount] } } if {[string length $name] > 0} then { tputs $::test_channel [appendArgs \ "---- other counter \"" $name "\" has no value\n"] } else { tputs $::test_channel "---- there are no other counters\n" } return -1 } proc reportSQLiteResources { channel {quiet false} {reset true} {collect true} } { # # NOTE: If possible, always reset the cached assembly directory # and the cached XML configuration file name. # if {[haveSQLiteObjectCommand]} then { if {[catch { object invoke -flags +NonPublic \ System.Data.SQLite.UnsafeNativeMethods \ ResetCachedAssemblyDirectory } error] == 0} then { if {!$quiet} then { tputs $channel "---- reset cached assembly directory\n" } } else { if {!$quiet} then { tputs $channel [appendArgs \ "==== WARNING: failed to reset cached assembly directory, " \ "error: " \n\t $error \n] } } if {[catch { object invoke -flags +NonPublic \ System.Data.SQLite.UnsafeNativeMethods \ ResetCachedXmlConfigFileName } error] == 0} then { if {!$quiet} then { tputs $channel "---- reset cached XML configuration file name\n" } } else { if {!$quiet} then { tputs $channel [appendArgs \ "==== WARNING: failed to reset cached XML configuration " \ "file name, error: " \n\t $error \n] } } } # # NOTE: If available, report on (and possibly reset) the runtime # configuration statistics. # if {[haveSQLiteObjectCommand] && \ [haveConstraint buildConfiguration.Debug]} then { if {[catch { |
︙ | ︙ | |||
3411 3412 3413 3414 3415 3416 3417 | if {[catch {$settingReadCounts Clear} error] == 0} then { if {!$quiet} then { tputs $channel [appendArgs \ "---- reset setting statistics for the previous " \ $nameCount " names and " $valueCount " values read\n"] } } else { | > | | | | > | 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 | if {[catch {$settingReadCounts Clear} error] == 0} then { if {!$quiet} then { tputs $channel [appendArgs \ "---- reset setting statistics for the previous " \ $nameCount " names and " $valueCount " values read\n"] } } else { if {!$quiet} then { tputs $channel [appendArgs \ "==== WARNING: failed to reset setting statistics for " \ "the previous " $nameCount " names and " $valueCount \ " values read, error: " \n\t $error \n] } } } } if {[catch { object invoke -flags +NonPublic -alias \ System.Data.SQLite.DebugData settingFileReadCounts |
︙ | ︙ | |||
3445 3446 3447 3448 3449 3450 3451 | if {!$quiet} then { tputs $channel [appendArgs \ "---- reset setting statistics for the previous " \ $nameCount " names and " $valueCount " values read " \ "from the configuration file\n"] } } else { | > | | | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 | if {!$quiet} then { tputs $channel [appendArgs \ "---- reset setting statistics for the previous " \ $nameCount " names and " $valueCount " values read " \ "from the configuration file\n"] } } else { if {!$quiet} then { tputs $channel [appendArgs \ "==== WARNING: failed to reset setting statistics for " \ "the previous " $nameCount " names and " $valueCount \ " values read from the configuration file, error: " \n\t \ $error \n] } } } } if {[catch { object invoke -flags +NonPublic -alias \ System.Data.SQLite.DebugData otherCounts } otherCounts] == 0} then { set nameCount [$otherCounts Count] set valueCount 0 object foreach -alias pair $otherCounts { incr valueCount [$pair Value] if {!$quiet} then { tputs $channel [appendArgs \ "---- other counter \"" [$pair Key] "\" has value " \ [$pair Value] \n] } } if {$reset} then { if {[catch {$otherCounts Clear} error] == 0} then { if {!$quiet} then { tputs $channel [appendArgs \ "---- reset other counters for the previous " \ $nameCount " names and " $valueCount " values\n"] } } else { if {!$quiet} then { tputs $channel [appendArgs \ "==== WARNING: failed to reset other counters for " \ "the previous " $nameCount " names and " $valueCount \ " values, error: " \n\t $error \n] } } } } } if {[haveSQLiteObjectCommand] && \ [haveSQLiteDefineConstant INTEROP_VIRTUAL_TABLE] && \ |
︙ | ︙ |
Changes to readme.htm.
︙ | ︙ | |||
209 210 211 212 213 214 215 216 217 218 219 220 221 222 | <p> <b>1.0.105.1 - May 15, 2017</b> </p> <ul> <li>Prevent culture settings from negatively impacting integer connection string defaults.</li> <li>Make sure the "No_SQLiteConnectionNewParser" and "DefaultFlags_SQLiteConnection" setting values end up being cached.</li> </ul> <p> <b>1.0.105.0 - April 9, 2017</b> </p> <ul> <li>Updated to <a href="https://www.sqlite.org/releaselog/3_18_0.html">SQLite 3.18.0</a>.</li> <li>Add experimental support for native sha1 extension.</li> | > | 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 | <p> <b>1.0.105.1 - May 15, 2017</b> </p> <ul> <li>Prevent culture settings from negatively impacting integer connection string defaults.</li> <li>Make sure the "No_SQLiteConnectionNewParser" and "DefaultFlags_SQLiteConnection" setting values end up being cached.</li> <li>Cache the XML file name and assembly directory used by the configuration subsystem.</li> </ul> <p> <b>1.0.105.0 - April 9, 2017</b> </p> <ul> <li>Updated to <a href="https://www.sqlite.org/releaselog/3_18_0.html">SQLite 3.18.0</a>.</li> <li>Add experimental support for native sha1 extension.</li> |
︙ | ︙ |
Changes to www/news.wiki.
︙ | ︙ | |||
46 47 48 49 50 51 52 53 54 55 56 57 58 59 | <p> <b>1.0.105.1 - May 15, 2017</b> </p> <ul> <li>Prevent culture settings from negatively impacting integer connection string defaults.</li> <li>Make sure the "No_SQLiteConnectionNewParser" and "DefaultFlags_SQLiteConnection" setting values end up being cached.</li> </ul> <p> <b>1.0.105.0 - April 9, 2017</b> </p> <ul> <li>Updated to [https://www.sqlite.org/releaselog/3_18_0.html|SQLite 3.18.0].</li> <li>Add experimental support for native sha1 extension.</li> | > | 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | <p> <b>1.0.105.1 - May 15, 2017</b> </p> <ul> <li>Prevent culture settings from negatively impacting integer connection string defaults.</li> <li>Make sure the "No_SQLiteConnectionNewParser" and "DefaultFlags_SQLiteConnection" setting values end up being cached.</li> <li>Cache the XML file name and assembly directory used by the configuration subsystem.</li> </ul> <p> <b>1.0.105.0 - April 9, 2017</b> </p> <ul> <li>Updated to [https://www.sqlite.org/releaselog/3_18_0.html|SQLite 3.18.0].</li> <li>Add experimental support for native sha1 extension.</li> |
︙ | ︙ |