internal static async Task <int> StreamMany(this NpgsqlDataReader reader, Stream stream, CancellationToken token) { var count = 0; var ordinal = reader.FieldCount == 1 ? 0 : reader.GetOrdinal("data"); await stream.WriteBytes(LeftBracket, token).ConfigureAwait(false); if (await reader.ReadAsync(token).ConfigureAwait(false)) { count++; var source = await reader.GetStreamAsync(ordinal, token).ConfigureAwait(false); await source.CopyStreamSkippingSOHAsync(stream, token).ConfigureAwait(false); } while (await reader.ReadAsync(token).ConfigureAwait(false)) { count++; await stream.WriteBytes(Comma, token).ConfigureAwait(false); var source = await reader.GetStreamAsync(ordinal, token).ConfigureAwait(false); await source.CopyStreamSkippingSOHAsync(stream, token).ConfigureAwait(false); } await stream.WriteBytes(RightBracket, token).ConfigureAwait(false); return(count); }
internal static async Task <int> StreamOne(this NpgsqlDataReader reader, Stream stream, CancellationToken token) { if (!await reader.ReadAsync(token).ConfigureAwait(false)) { return(0); } var ordinal = reader.FieldCount == 1 ? 0 : reader.GetOrdinal("data"); var source = await reader.GetStreamAsync(ordinal, token).ConfigureAwait(false); await source.CopyStreamSkippingSOHAsync(stream, token).ConfigureAwait(false); return(1); }