mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-11 11:00:48 +00:00
37 lines
713 B
C++
37 lines
713 B
C++
|
#include <Processors/Sources/SourceFromInputStream.h>
|
||
|
|
||
|
namespace DB
|
||
|
{
|
||
|
|
||
|
SourceFromInputStream::SourceFromInputStream(Block header, BlockInputStreamPtr stream)
|
||
|
: ISource(std::move(header)), stream(std::move(stream))
|
||
|
{
|
||
|
}
|
||
|
|
||
|
Chunk SourceFromInputStream::generate()
|
||
|
{
|
||
|
if (finished)
|
||
|
return {};
|
||
|
|
||
|
if (!initialized)
|
||
|
{
|
||
|
stream->readPrefix();
|
||
|
initialized = true;
|
||
|
}
|
||
|
|
||
|
auto block = stream->read();
|
||
|
if (!block)
|
||
|
{
|
||
|
stream->readSuffix();
|
||
|
finished = true;
|
||
|
return {};
|
||
|
}
|
||
|
|
||
|
assertBlocksHaveEqualStructure(getPort().getHeader(), block, "SourceFromInputStream");
|
||
|
|
||
|
UInt64 num_rows = block.rows();
|
||
|
return Chunk(block.getColumns(), num_rows);
|
||
|
}
|
||
|
|
||
|
}
|