ClickHouse/dbms/include/DB/Storages/StorageSystemNumbers.h
2013-05-04 04:05:15 +00:00

59 lines
1.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include <Poco/SharedPtr.h>
#include <DB/Storages/IStorage.h>
#include <DB/DataStreams/IProfilingBlockInputStream.h>
namespace DB
{
using Poco::SharedPtr;
class NumbersBlockInputStream : public IProfilingBlockInputStream
{
public:
NumbersBlockInputStream(size_t block_size_);
String getName() const { return "NumbersBlockInputStream"; }
String getID() const { return "Numbers"; }
protected:
Block readImpl();
private:
size_t block_size;
UInt64 next;
};
/** Реализует хранилище для системной таблицы Numbers.
* Таблица содержит единственный столбец number UInt64.
* Из этой таблицы можно прочитать все натуральные числа, начиная с 0 (до 2^64 - 1, а потом заново).
*/
class StorageSystemNumbers : public IStorage
{
public:
static StoragePtr create(const std::string & name_);
std::string getName() const { return "SystemNumbers"; }
std::string getTableName() const { return name; }
const NamesAndTypesList & getColumnsList() const { return columns; }
BlockInputStreams read(
const Names & column_names,
ASTPtr query,
const Settings & settings,
QueryProcessingStage::Enum & processed_stage,
size_t max_block_size = DEFAULT_BLOCK_SIZE,
unsigned threads = 1);
private:
const std::string name;
NamesAndTypesList columns;
StorageSystemNumbers(const std::string & name_);
};
}