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);
        }