2.2-servicing
bubibubi 8 years ago
parent a024b51c50
commit fe7c9caea0

@ -37,6 +37,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EFCore.Jet.Tests", "test\EF
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EFCore.Jet.Design.FunctionalTests", "test\EFCore.Jet.Design.FunctionalTest\EFCore.Jet.Design.FunctionalTests.csproj", "{543477FB-CF81-446D-AB02-1E41382DED5B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Jet.PerformanceTest", "test\System.Data.Jet.PerformanceTest\System.Data.Jet.PerformanceTest.csproj", "{8A3F688D-AA42-4070-9813-293D19E7F023}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -101,6 +103,14 @@ Global
{543477FB-CF81-446D-AB02-1E41382DED5B}.Release|Any CPU.Build.0 = Release|Any CPU
{543477FB-CF81-446D-AB02-1E41382DED5B}.Release|x86.ActiveCfg = Release|Any CPU
{543477FB-CF81-446D-AB02-1E41382DED5B}.Release|x86.Build.0 = Release|Any CPU
{8A3F688D-AA42-4070-9813-293D19E7F023}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8A3F688D-AA42-4070-9813-293D19E7F023}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8A3F688D-AA42-4070-9813-293D19E7F023}.Debug|x86.ActiveCfg = Debug|x86
{8A3F688D-AA42-4070-9813-293D19E7F023}.Debug|x86.Build.0 = Debug|x86
{8A3F688D-AA42-4070-9813-293D19E7F023}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8A3F688D-AA42-4070-9813-293D19E7F023}.Release|Any CPU.Build.0 = Release|Any CPU
{8A3F688D-AA42-4070-9813-293D19E7F023}.Release|x86.ActiveCfg = Release|Any CPU
{8A3F688D-AA42-4070-9813-293D19E7F023}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -113,6 +123,7 @@ Global
{3C88D49A-7EF2-42BA-A8D7-9DF7D358FD24} = {6A8DE399-1804-4113-A408-F23B7F5C9CAC}
{C38B58D7-F346-40A2-9849-D12CB9EC5C69} = {6A8DE399-1804-4113-A408-F23B7F5C9CAC}
{543477FB-CF81-446D-AB02-1E41382DED5B} = {6A8DE399-1804-4113-A408-F23B7F5C9CAC}
{8A3F688D-AA42-4070-9813-293D19E7F023} = {6A8DE399-1804-4113-A408-F23B7F5C9CAC}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9359773D-6399-447E-9814-6CB41C2FB664}

@ -1040,12 +1040,10 @@ namespace System.Data.Jet.JetStoreSchemaDefinition
// This is the standard read column for DBMS
string sql = string.Empty;
sql += "Select ";
sql += "Select Top 1 ";
sql += " * ";
sql += "From ";
sql += string.Format(" {0} ", JetSyntaxHelper.QuoteIdentifier(_lastTableName));
sql += "Where ";
sql += " 1 = 2 ";
IDbCommand command = null;
IDataReader dataReader = null;

File diff suppressed because one or more lines are too long

@ -0,0 +1,20 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("System.Data.Jet.PerformanceTest")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("System.Data.Jet.PerformanceTest")]
[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("8a3f688d-aa42-4070-9813-293d19e7f023")]
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{8A3F688D-AA42-4070-9813-293D19E7F023}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>System.Data.Jet.PerformanceTest</RootNamespace>
<AssemblyName>System.Data.Jet.PerformanceTest</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
<IsCodedUITest>False</IsCodedUITest>
<TestProjectType>UnitTest</TestProjectType>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\..\packages\MSTest.TestFramework.1.1.18\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\..\packages\MSTest.TestFramework.1.1.18\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="JetDatabaseFixture.cs" />
<Compile Include="TestInitialization.cs" />
<Compile Include="Timer.cs" />
<Compile Include="Where_False.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\System.Data.Jet\System.Data.Jet.csproj">
<Project>{88be8b4f-8da9-42b9-9a1f-839451ba5f8c}</Project>
<Name>System.Data.Jet</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props'))" />
<Error Condition="!Exists('..\..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.targets'))" />
</Target>
<Import Project="..\..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.targets')" />
</Project>

@ -0,0 +1,2 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeEditing/Localization/Localizable/@EntryValue">No</s:String></wpf:ResourceDictionary>

@ -0,0 +1,18 @@
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace System.Data.Jet.PerformanceTest
{
[TestClass]
class TestInitialization
{
[AssemblyInitialize]
static public void AssemblyInitialize(TestContext testContext)
{
JetDatabaseFixture.CreateAndSeedIfNotExists();
// Enabling show sql statements can change performances
//JetConfiguration.ShowSqlStatements = true;
}
}
}

@ -0,0 +1,31 @@
using System;
namespace System.Data.Jet.PerformanceTest
{
class Timer : IDisposable
{
private readonly string _actionName;
private DateTime _startTime;
public Timer(string actionName, bool showStartTime = false)
{
if (actionName == null) throw new ArgumentNullException(nameof(actionName));
_actionName = actionName;
_startTime = DateTime.Now;
if (showStartTime)
Console.WriteLine($"{_actionName} starting at {_startTime}");
}
public void Dispose()
{
if (_startTime == DateTime.MinValue)
throw new InvalidOperationException($"Timer for action '{_actionName}' already disposed");
DateTime endTime = DateTime.Now;
Console.WriteLine($"{_actionName} started at {_startTime} is finishing at {endTime} after {(endTime-_startTime).TotalSeconds}");
_startTime = DateTime.MinValue;
}
}
}

@ -0,0 +1,149 @@
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace System.Data.Jet.PerformanceTest
{
[TestClass]
public class Where_False
{
[TestMethod]
public void Where_False_Test()
{
const int cycles = 5000;
using (new Timer($"Select {cycles} Where 1=2 get data reader"))
{
using (var connection = JetDatabaseFixture.GetConnection())
{
connection.Open();
for (int i = 0; i < cycles; i++)
{
var reader = connection.CreateCommand("Select * from employees where 1=2").ExecuteReader();
reader.Dispose();
}
}
}
using (new Timer($"Select {cycles} Where 1=2 get table structure"))
{
using (var connection = JetDatabaseFixture.GetConnection())
{
connection.Open();
for (int i = 0; i < cycles; i++)
{
var reader = connection.CreateCommand("Select * from employees where 1=2").ExecuteReader(CommandBehavior.KeyInfo);
var schemaTable = reader.GetSchemaTable();
reader.Dispose();
// ReSharper disable once PossibleNullReferenceException
schemaTable.Dispose();
}
}
}
using (new Timer($"Select {cycles} Top 1 get data reader"))
{
using (var connection = JetDatabaseFixture.GetConnection())
{
connection.Open();
for (int i = 0; i < cycles; i++)
{
var reader = connection.CreateCommand("Select top 1 * from employees").ExecuteReader();
reader.Dispose();
}
}
}
using (new Timer($"Select {cycles} Top 1 get table structure"))
{
using (var connection = JetDatabaseFixture.GetConnection())
{
connection.Open();
for (int i = 0; i < cycles; i++)
{
var reader = connection.CreateCommand("Select top 1 * from employees").ExecuteReader(CommandBehavior.KeyInfo);
var schemaTable = reader.GetSchemaTable();
reader.Dispose();
// ReSharper disable once PossibleNullReferenceException
schemaTable.Dispose();
}
}
}
using (new Timer($"Select {cycles} Top 1 Where 1=2 get data reader"))
{
using (var connection = JetDatabaseFixture.GetConnection())
{
connection.Open();
for (int i = 0; i < cycles; i++)
{
var reader = connection.CreateCommand("Select top 1 * from employees where 1=2").ExecuteReader();
reader.Dispose();
}
}
}
using (new Timer($"Select {cycles} Top 1 Where 1=2 get table structure"))
{
using (var connection = JetDatabaseFixture.GetConnection())
{
connection.Open();
for (int i = 0; i < cycles; i++)
{
var reader = connection.CreateCommand("Select top 1 * from employees where 1=2").ExecuteReader(CommandBehavior.KeyInfo);
var schemaTable = reader.GetSchemaTable();
reader.Dispose();
// ReSharper disable once PossibleNullReferenceException
schemaTable.Dispose();
}
}
}
}
[TestMethod]
public void Where_False_Test_DisposeConnection()
{
const int cycles = 60;
using (new Timer($"Select {cycles} Where 1=2 get table structure (Dispose connection)"))
{
for (int i = 0; i < cycles; i++)
{
using (var connection = JetDatabaseFixture.GetConnection())
{
connection.Open();
var reader = connection.CreateCommand("Select * from employees where 1=2").ExecuteReader(CommandBehavior.KeyInfo);
var schemaTable = reader.GetSchemaTable();
reader.Dispose();
// ReSharper disable once PossibleNullReferenceException
schemaTable.Dispose();
}
}
}
using (new Timer($"Select {cycles} Top 1 get table structure (Dispose connection)"))
{
for (int i = 0; i < cycles; i++)
{
using (var connection = JetDatabaseFixture.GetConnection())
{
connection.Open();
var reader = connection.CreateCommand("Select top 1 * from employees").ExecuteReader(CommandBehavior.KeyInfo);
var schemaTable = reader.GetSchemaTable();
reader.Dispose();
// ReSharper disable once PossibleNullReferenceException
schemaTable.Dispose();
}
}
}
}
}
}

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MSTest.TestAdapter" version="1.1.18" targetFramework="net461" />
<package id="MSTest.TestFramework" version="1.1.18" targetFramework="net461" />
</packages>
Loading…
Cancel
Save