ClickHouse/dbms/src/Storages/MergeTree/MergeTreeBaseBlockInputStream.h

79 lines
2.0 KiB
C++
Raw Normal View History

#pragma once
2017-12-01 13:32:37 +00:00
#include <DataStreams/IProfilingBlockInputStream.h>
#include <Storages/MergeTree/MergeTreeBlockReadUtils.h>
#include <Storages/MergeTree/MergeTreeData.h>
#include <Storages/SelectQueryInfo.h>
namespace DB
{
class MergeTreeReader;
class UncompressedCache;
class MarkCache;
/// Base class for MergeTreeThreadBlockInputStream and MergeTreeBlockInputStream
class MergeTreeBaseBlockInputStream : public IProfilingBlockInputStream
{
public:
MergeTreeBaseBlockInputStream(
2018-10-17 03:13:00 +00:00
const MergeTreeData & storage,
const PrewhereInfoPtr & prewhere_info,
UInt64 max_block_size_rows,
UInt64 preferred_block_size_bytes,
UInt64 preferred_max_column_in_block_size_bytes,
UInt64 min_bytes_to_use_direct_io,
UInt64 max_read_buffer_size,
bool use_uncompressed_cache,
bool save_marks_in_cache = true,
const Names & virt_column_names = {});
~MergeTreeBaseBlockInputStream() override;
2018-04-16 12:21:36 +00:00
static void executePrewhereActions(Block & block, const PrewhereInfoPtr & prewhere_info);
protected:
2018-04-16 12:21:36 +00:00
Block readImpl() final;
/// Creates new this->task, and initilizes readers
virtual bool getNewTask() = 0;
/// We will call progressImpl manually.
2017-12-01 21:40:58 +00:00
void progress(const Progress &) override {}
Block readFromPart();
void injectVirtualColumns(Block & block) const;
protected:
2018-10-17 03:13:00 +00:00
const MergeTreeData & storage;
PrewhereInfoPtr prewhere_info;
UInt64 max_block_size_rows;
UInt64 preferred_block_size_bytes;
UInt64 preferred_max_column_in_block_size_bytes;
UInt64 min_bytes_to_use_direct_io;
UInt64 max_read_buffer_size;
bool use_uncompressed_cache;
bool save_marks_in_cache;
Names virt_column_names;
std::unique_ptr<MergeTreeReadTask> task;
std::shared_ptr<UncompressedCache> owned_uncompressed_cache;
std::shared_ptr<MarkCache> owned_mark_cache;
using MergeTreeReaderPtr = std::unique_ptr<MergeTreeReader>;
MergeTreeReaderPtr reader;
MergeTreeReaderPtr pre_reader;
UInt64 max_block_size_marks;
};
}