#pragma once #include #include namespace DB { class OneValueBlockInputStream : public IProfilingBlockInputStream { public: OneValueBlockInputStream(); Block readImpl(); String getName() const { return "OneValueBlockInputStream"; } BlockInputStreamPtr clone() { return new OneValueBlockInputStream(); } private: bool has_been_read; }; /** Реализует хранилище для системной таблицы One. * Таблица содержит единственный столбец dummy UInt8 и единственную строку со значением 0. * Используется, если в запросе не указана таблица. * Аналог таблицы DUAL в Oracle и MySQL. */ class StorageSystemOne : public IStorage { public: StorageSystemOne(const std::string & name_); std::string getName() const { return "SystemOne"; } std::string getTableName() const { return "One"; } const NamesAndTypesList & getColumnsList() const { return columns; } BlockInputStreams read( const Names & column_names, ASTPtr query, size_t max_block_size = DEFAULT_BLOCK_SIZE, unsigned max_threads = 1); private: const std::string name; NamesAndTypesList columns; }; }