Skip to content

Commit dcaf1c3

Browse files
authored
Allow flushing of NpgsqlReadBuffer.Stream (#4122)
Fixes #4123
1 parent b3a5345 commit dcaf1c3

2 files changed

Lines changed: 21 additions & 2 deletions

File tree

src/Npgsql/Internal/NpgsqlReadBuffer.Stream.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,14 @@ public override long Seek(long offset, SeekOrigin origin)
112112
}
113113

114114
public override void Flush()
115-
=> throw new NotSupportedException();
115+
=> CheckDisposed();
116116

117117
public override Task FlushAsync(CancellationToken cancellationToken)
118-
=> throw new NotSupportedException();
118+
{
119+
CheckDisposed();
120+
return cancellationToken.IsCancellationRequested
121+
? Task.FromCanceled(cancellationToken) : Task.CompletedTask;
122+
}
119123

120124
public override int Read(byte[] buffer, int offset, int count)
121125
{

test/Npgsql.Tests/BugTests.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1428,5 +1428,20 @@ await server
14281428
Assert.That(data, Is.EquivalentTo((byte[])(await firstQuery)!));
14291429
Assert.That(otherData, Is.EquivalentTo((byte[])(await secondQuery)!));
14301430
}
1431+
1432+
[Test]
1433+
[IssueLink("https://github.com/npgsql/npgsql/issues/4123")]
1434+
public async Task Bug4123()
1435+
{
1436+
using var conn = OpenConnection();
1437+
using var cmd = new NpgsqlCommand("SELECT 1", conn);
1438+
using var rdr = await cmd.ExecuteReaderAsync();
1439+
1440+
await rdr.ReadAsync();
1441+
using var stream = await rdr.GetStreamAsync(0);
1442+
1443+
Assert.DoesNotThrowAsync(stream.FlushAsync);
1444+
Assert.DoesNotThrow(stream.Flush);
1445+
}
14311446
}
14321447
}

0 commit comments

Comments
 (0)