From 76982d6cc69fb7c1229f3e32bc9a239057a3a719 Mon Sep 17 00:00:00 2001 From: Wraith2 Date: Thu, 16 Nov 2023 21:38:07 +0000 Subject: [PATCH 1/2] add missing overrides and tests --- .../Microsoft/Data/SqlClient/SqlConnection.cs | 8 ++++ .../tests/ManualTests/SQL/Batch/BatchTests.cs | 43 +++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnection.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnection.cs index e314171b23..0a342add69 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnection.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnection.cs @@ -1775,6 +1775,14 @@ public override DataTable GetSchema(string collectionName, string[] restrictionV return InnerConnection.GetSchema(ConnectionFactory, PoolGroup, this, collectionName, restrictionValues); } +#if NET6_0_OR_GREATER + /// + public override bool CanCreateBatch => true; + + /// + protected override DbBatch CreateDbBatch() => new SqlBatch(this); +#endif + private class OpenAsyncRetry { private SqlConnection _parent; diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/Batch/BatchTests.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/Batch/BatchTests.cs index 342244ed9c..4f22e5cbc1 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/Batch/BatchTests.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/Batch/BatchTests.cs @@ -12,6 +12,7 @@ namespace Microsoft.Data.SqlClient.ManualTesting.Tests { public static class BatchTests { + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void MissingCommandTextThrows() { @@ -33,6 +34,48 @@ public static void MissingConnectionThrows() } } + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] + [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + public static void ConnectionCanCreateBatch() + { + using (var connection = new SqlConnection(DataTestUtility.TCPConnectionString)) + { + Assert.True(connection.CanCreateBatch); + using (var batch = connection.CreateBatch()) + { + Assert.NotNull(batch); + Assert.Equal(connection, batch.Connection); + + batch.BatchCommands.Add(new SqlBatchCommand("SELECT @@SPID")); + connection.Open(); + batch.ExecuteNonQuery(); + } + } + } + +#if NET8_0_OR_GREATER + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] + [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + public static void SqlBatchCanCreateParameter() + { + using (var connection = new SqlConnection(DataTestUtility.TCPConnectionString)) + using (var batch = connection.CreateBatch()) + { + SqlBatchCommand batchCommand = new SqlBatchCommand("SELECT @p"); + + Assert.True(batchCommand.CanCreateParameter); + SqlParameter parameter = batchCommand.CreateParameter(); + Assert.NotNull(parameter); + parameter.ParameterName = "@p"; + parameter.Value = 1; + batchCommand.Parameters.Add(parameter); + + batch.ExecuteNonQuery(); + + } + } +#endif + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void StoredProcedureBatchSupported() From 6de6b912b8db56af293536280390bd7400cca9f4 Mon Sep 17 00:00:00 2001 From: Wraith2 Date: Tue, 21 Nov 2023 00:24:19 +0000 Subject: [PATCH 2/2] remove netfx skip attribute --- .../tests/ManualTests/SQL/Batch/BatchTests.cs | 21 +------------------ 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/Batch/BatchTests.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/Batch/BatchTests.cs index 4f22e5cbc1..009755946c 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/Batch/BatchTests.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/Batch/BatchTests.cs @@ -12,7 +12,7 @@ namespace Microsoft.Data.SqlClient.ManualTesting.Tests { public static class BatchTests { - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] + [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void MissingCommandTextThrows() { @@ -24,7 +24,6 @@ public static void MissingCommandTextThrows() } } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void MissingConnectionThrows() { @@ -34,7 +33,6 @@ public static void MissingConnectionThrows() } } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void ConnectionCanCreateBatch() { @@ -54,7 +52,6 @@ public static void ConnectionCanCreateBatch() } #if NET8_0_OR_GREATER - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void SqlBatchCanCreateParameter() { @@ -76,7 +73,6 @@ public static void SqlBatchCanCreateParameter() } #endif - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void StoredProcedureBatchSupported() { @@ -88,7 +84,6 @@ public static void StoredProcedureBatchSupported() } } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void CommandTextBatchSupported() { @@ -100,14 +95,12 @@ public static void CommandTextBatchSupported() } } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void TableDirectBatchNotSupported() { Assert.Throws(() => new SqlBatchCommand("Categories", CommandType.TableDirect)); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void MixedBatchSupported() { @@ -127,7 +120,6 @@ public static void MixedBatchSupported() } } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void DisposedThrows() { @@ -136,7 +128,6 @@ public static void DisposedThrows() Assert.Throws(() => batch.ExecuteNonQuery()); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void ProviderApi() { @@ -209,7 +200,6 @@ public static void ProviderApi() } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void DirectApi() { @@ -281,7 +271,6 @@ public static void DirectApi() Assert.NotNull(exception.BatchCommand); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void ExceptionInBatchContainsBatch() { @@ -319,7 +308,6 @@ public static void ExceptionInBatchContainsBatch() Assert.NotNull(exception.BatchCommand); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void ExceptionWithoutBatchContainsNoBatch() { @@ -349,7 +337,6 @@ public static void ExceptionWithoutBatchContainsNoBatch() Assert.Null(exception.BatchCommand); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void ParameterInOutAndReturn() { @@ -402,7 +389,6 @@ RETURN @Input Assert.Equal(2, Convert.ToInt32(returned.Value)); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void ExecuteNonQuery() { @@ -465,7 +451,6 @@ public static void ExecuteNonQuery() Assert.Equal(1, batch.Commands[2].RecordsAffected); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static async Task ExecuteNonQueryAsync() { @@ -528,7 +513,6 @@ public static async Task ExecuteNonQueryAsync() Assert.Equal(1, batch.Commands[2].RecordsAffected); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void ExecuteScalarMultiple() { @@ -548,7 +532,6 @@ public static void ExecuteScalarMultiple() Assert.Equal(9, value); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static async Task ExecuteScalarAsyncMultiple() { @@ -568,7 +551,6 @@ public static async Task ExecuteScalarAsyncMultiple() Assert.Equal(9, value); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static void ExecuteReaderMultiple() { @@ -600,7 +582,6 @@ public static void ExecuteReaderMultiple() Assert.Equal(10, resultRowCount); } - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] public static async Task ExecuteReaderAsyncMultiple() {