#pragma once #include #include #include namespace DB { /** Преобразует поток для чтения данных по строкам в поток для чтения данных по блокам. * Наример, для чтения текстового дампа. */ class BlockInputStreamFromRowInputStream : public IProfilingBlockInputStream { public: /** sample_ - пустой блок, который описывает, как интерпретировать значения */ BlockInputStreamFromRowInputStream( RowInputStreamPtr row_input_, const Block & sample_, size_t max_block_size_ = DEFAULT_BLOCK_SIZE); Block readImpl(); void readPrefix() { row_input->readPrefix(); } void readSuffix() { row_input->readSuffix(); } String getName() const { return "BlockInputStreamFromRowInputStream"; } BlockInputStreamPtr clone() { return new BlockInputStreamFromRowInputStream(row_input, sample, max_block_size); } private: RowInputStreamPtr row_input; const Block sample; size_t max_block_size; bool first_row; }; }