Skip to content

Commit 113aab3

Browse files
[6.1] Port #3912 to release/6.1 (#4133)
Co-authored-by: paulmedynski <31868385+paulmedynski@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
1 parent 10d2b2a commit 113aab3

4 files changed

Lines changed: 27 additions & 17 deletions

File tree

src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlCommand.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2915,8 +2915,15 @@ private Task<object> InternalExecuteScalarAsync(CancellationToken cancellationTo
29152915
}
29162916
catch (Exception e)
29172917
{
2918-
// exception thrown by Dispose...
2919-
source.SetException(e);
2918+
// exception thrown by Dispose or NextResultAsync cancellation...
2919+
if (e is OperationCanceledException && cancellationToken.IsCancellationRequested)
2920+
{
2921+
source.SetCanceled();
2922+
}
2923+
else
2924+
{
2925+
source.SetException(e);
2926+
}
29202927
}
29212928
},
29222929
TaskScheduler.Default

src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlCommand.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3130,8 +3130,15 @@ private Task<object> InternalExecuteScalarAsync(CancellationToken cancellationTo
31303130
}
31313131
catch (Exception e)
31323132
{
3133-
// exception thrown by Dispose...
3134-
source.SetException(e);
3133+
// exception thrown by Dispose or NextResultAsync cancellation...
3134+
if (e is OperationCanceledException && cancellationToken.IsCancellationRequested)
3135+
{
3136+
source.SetCanceled();
3137+
}
3138+
else
3139+
{
3140+
source.SetException(e);
3141+
}
31353142
}
31363143
},
31373144
TaskScheduler.Default

src/Microsoft.Data.SqlClient/tests/ManualTests/ProviderAgnostic/MultipleResultsTest/MultipleResultsTest.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,6 @@ public void ExecuteScalar()
7878
{
7979
using SqlConnection connection = new SqlConnection((new SqlConnectionStringBuilder(DataTestUtility.TCPConnectionString) { MultipleActiveResultSets = true }).ConnectionString);
8080
using SqlCommand command = connection.CreateCommand();
81-
ConcurrentQueue<string> messages = new ConcurrentQueue<string>();
82-
83-
connection.InfoMessage += (object sender, SqlInfoMessageEventArgs args) =>
84-
messages.Enqueue(args.Message);
8581

8682
connection.Open();
8783

src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/SqlCommand/SqlCommandExecuteScalarTest.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ public static void ExecuteScalar_ShouldThrowOnConversionError()
2727
try
2828
{
2929
// Arrange
30-
// Insert valid VARCHAR values - '42-43' is a valid string, not an invalid number
31-
DataTestUtility.CreateTable(connection, tableName, "(Id INT IDENTITY(1,1) NOT NULL, Val VARCHAR(10) NOT NULL)");
30+
// Insert valid VARCHAR values - '42-43' is a valid string but not a valid number
31+
DataTestUtility.CreateTable(connection, tableName, "(Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, Val VARCHAR(10) NOT NULL)");
3232
using (SqlCommand insertCmd = connection.CreateCommand())
3333
{
3434
insertCmd.CommandText =
@@ -68,9 +68,9 @@ public static void ExecuteScalar_TransactionShouldRollbackOnError()
6868
try
6969
{
7070
// Arrange
71-
// sourceTable.Val is VARCHAR - both '12345' and '42-43' are valid strings
72-
DataTestUtility.CreateTable(connection, sourceTable, "(Id INT IDENTITY(1,1) NOT NULL, Val VARCHAR(10) NOT NULL)");
73-
DataTestUtility.CreateTable(connection, targetTable, "(Id INT IDENTITY(1,1) NOT NULL, Val1 INT NOT NULL, Val2 INT NOT NULL)");
71+
// sourceTable.Val is VARCHAR - both '12345' and '42-43' are valid strings but not valid numbers
72+
DataTestUtility.CreateTable(connection, sourceTable, "(Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, Val VARCHAR(10) NOT NULL)");
73+
DataTestUtility.CreateTable(connection, targetTable, "(Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, Val1 INT NOT NULL, Val2 INT NOT NULL)");
7474
using (SqlCommand insertCmd = connection.CreateCommand())
7575
{
7676
insertCmd.CommandText =
@@ -165,7 +165,7 @@ public static async Task ExecuteScalarAsync_ShouldThrowOnConversionError()
165165
try
166166
{
167167
// Arrange
168-
DataTestUtility.CreateTable(connection, tableName, "(Id INT IDENTITY(1,1) NOT NULL, Val VARCHAR(10) NOT NULL)");
168+
DataTestUtility.CreateTable(connection, tableName, "(Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, Val VARCHAR(10) NOT NULL)");
169169
using (SqlCommand insertCmd = connection.CreateCommand())
170170
{
171171
insertCmd.CommandText =
@@ -203,9 +203,9 @@ public static async Task ExecuteScalarAsync_TransactionShouldRollbackOnError()
203203
try
204204
{
205205
// Arrange
206-
// sourceTable.Val is VARCHAR - both '12345' and '42-43' are valid strings
207-
DataTestUtility.CreateTable(connection, sourceTable, "(Id INT IDENTITY(1,1) NOT NULL, Val VARCHAR(10) NOT NULL)");
208-
DataTestUtility.CreateTable(connection, targetTable, "(Id INT IDENTITY(1,1) NOT NULL, Val1 INT NOT NULL, Val2 INT NOT NULL)");
206+
// sourceTable.Val is VARCHAR - both '12345' and '42-43' are valid strings but not valid numbers
207+
DataTestUtility.CreateTable(connection, sourceTable, "(Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, Val VARCHAR(10) NOT NULL)");
208+
DataTestUtility.CreateTable(connection, targetTable, "(Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, Val1 INT NOT NULL, Val2 INT NOT NULL)");
209209
using (SqlCommand insertCmd = connection.CreateCommand())
210210
{
211211
insertCmd.CommandText =

0 commit comments

Comments
 (0)