public ClickHouseInputStream newInputStream(int bufferSize, Runnable postCloseAction) {
        return input != null
                ? ClickHouseInputStream.wrap(this, input, bufferSize, ClickHouseCompression.NONE, compressionLevel,
                        postCloseAction)
                : ClickHouseInputStream.empty();
    }
Creates a wrapped input stream for reading. Calling this method multiple
times will generate multiple {@link ClickHouseInputStream} instances pointing
to the same input stream, so it does not make sense to call this more than
once. Unlike {@link #getInputStream()}, the returned input stream is
associated with this pass-thru stream, so
{@code newInputStream(...).getUnderlyingStream()} simply returns the current
pass-thru stream.

@param bufferSize      buffer size which is always greater than zero(usually
                       4096 or larger)
@param postCloseAction custom action will be performed right after closing
                       the input stream
@return non-null wrapped input stream
clickhouse-data/src/main/java/com/clickhouse/data/ClickHousePassThruStream.java