#include #include #include #include #include #include namespace DB { using Poco::SharedPtr; NumbersBlockInputStream::NumbersBlockInputStream(size_t block_size_) : block_size(block_size_), next(0) { } Block NumbersBlockInputStream::readImpl() { Block res; ColumnWithNameAndType column_with_name_and_type; column_with_name_and_type.name = "number"; column_with_name_and_type.type = new DataTypeUInt64(); ColumnUInt64 * column = new ColumnUInt64(block_size); ColumnUInt64::Container_t & vec = column->getData(); column_with_name_and_type.column = column; for (size_t i = 0; i < block_size; ++i) vec[i] = next++; res.insert(column_with_name_and_type); return res; } StorageSystemNumbers::StorageSystemNumbers(const std::string & name_) : name(name_) { columns.push_back(NameAndTypePair("number", new DataTypeUInt64)); } BlockInputStreams StorageSystemNumbers::read( const Names & column_names, ASTPtr query, const Settings & settings, QueryProcessingStage::Enum & processed_stage, size_t max_block_size, unsigned threads) { check(column_names); processed_stage = QueryProcessingStage::FetchColumns; return BlockInputStreams(1, new NumbersBlockInputStream(max_block_size)); } }