Based on the binary read benchmark in #593 (comment) I tried the code below expecting the behaviour to be fast and found that it simply blocks indefinitely.
using var conn = new SqlConnection(ConnectionString);
using var cmd = new SqlCommand("SELECT foo FROM data", conn);
await conn.OpenAsync();
using var reader = await cmd.ExecuteReaderAsync(
System.Data.CommandBehavior.SequentialAccess
);
await reader.ReadAsync();
using var stream = reader.GetStream(0);
using var memory = new MemoryStream(16 * 1024);
await stream.CopyToAsync(memory);
return (int)memory.Length;
This should work but freezes in a task wait after a single read cycle, the second read never completed. If you change it to standard mode it'll work but it does so by fetching the entire field and giving you a reader over the byte[]. So no workaround, this needs fixing if the team agree that it's a bug.
Edit: for clarity the problem is when multiple packets are needed. The current tests read from a single packet and thus do not do a network read.
Based on the binary read benchmark in #593 (comment) I tried the code below expecting the behaviour to be fast and found that it simply blocks indefinitely.
This should work but freezes in a task wait after a single read cycle, the second read never completed. If you change it to standard mode it'll work but it does so by fetching the entire field and giving you a reader over the byte[]. So no workaround, this needs fixing if the team agree that it's a bug.
Edit: for clarity the problem is when multiple packets are needed. The current tests read from a single packet and thus do not do a network read.