Skip to content

Commit 7a5c449

Browse files
committed
Fix executing connectionless command on NpgsqlDataSource with multiplexing (#4841)
Fixes #4840 (cherry picked from commit ad7dee8)
1 parent babc9c7 commit 7a5c449

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/Npgsql/MultiplexingDataSource.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ async Task MultiplexingWriteLoop()
9898
}
9999

100100
connector = await OpenNewConnector(
101-
command.Connection!,
101+
command.InternalConnection!,
102102
new NpgsqlTimeout(TimeSpan.FromSeconds(Settings.Timeout)),
103103
async: true,
104104
CancellationToken.None);

test/Npgsql.Tests/DataSourceTests.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,4 +260,24 @@ public async Task As_DbDataSource([Values] bool async)
260260
? await command.ExecuteScalarAsync()
261261
: command.ExecuteScalar(), Is.EqualTo(1));
262262
}
263+
264+
[Test, IssueLink("https://github.com/npgsql/npgsql/issues/4840")]
265+
public async Task Multiplexing_connectionless_command_open_connection()
266+
{
267+
var csb = new NpgsqlConnectionStringBuilder(ConnectionString)
268+
{
269+
Multiplexing = true
270+
};
271+
await using var dataSource = NpgsqlDataSource.Create(csb.ConnectionString);
272+
273+
await using var conn = await dataSource.OpenConnectionAsync();
274+
await using var _ = await conn.BeginTransactionAsync();
275+
276+
await using var command = dataSource.CreateCommand();
277+
command.CommandText = "SELECT 1";
278+
279+
await using var reader = await command.ExecuteReaderAsync();
280+
Assert.True(reader.Read());
281+
Assert.That(reader.GetInt32(0), Is.EqualTo(1));
282+
}
263283
}

0 commit comments

Comments
 (0)