diff options
author | vitalyisaev <vitalyisaev@ydb.tech> | 2023-11-14 09:58:56 +0300 |
---|---|---|
committer | vitalyisaev <vitalyisaev@ydb.tech> | 2023-11-14 10:20:20 +0300 |
commit | c2b2dfd9827a400a8495e172a56343462e3ceb82 (patch) | |
tree | cd4e4f597d01bede4c82dffeb2d780d0a9046bd0 /contrib/clickhouse/src/Storages/LiveView/StorageBlocks.h | |
parent | d4ae8f119e67808cb0cf776ba6e0cf95296f2df7 (diff) | |
download | ydb-c2b2dfd9827a400a8495e172a56343462e3ceb82.tar.gz |
YQ Connector: move tests from yql to ydb (OSS)
Перенос папки с тестами на Коннектор из папки yql в папку ydb (синхронизируется с github).
Diffstat (limited to 'contrib/clickhouse/src/Storages/LiveView/StorageBlocks.h')
-rw-r--r-- | contrib/clickhouse/src/Storages/LiveView/StorageBlocks.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/contrib/clickhouse/src/Storages/LiveView/StorageBlocks.h b/contrib/clickhouse/src/Storages/LiveView/StorageBlocks.h new file mode 100644 index 0000000000..a732ada1da --- /dev/null +++ b/contrib/clickhouse/src/Storages/LiveView/StorageBlocks.h @@ -0,0 +1,59 @@ +#pragma once + +#include <Storages/IStorage.h> +#include <QueryPipeline/Pipe.h> + + +namespace DB +{ + +class StorageBlocks : public IStorage +{ +/* Storage based on the prepared streams that already contain data blocks. + * Used by Live and Window Views to complete stored query based on the mergeable blocks. + */ +public: + StorageBlocks(const StorageID & table_id_, + const ColumnsDescription & columns_, Pipes pipes_, + QueryProcessingStage::Enum to_stage_) + : IStorage(table_id_), pipes(std::move(pipes_)), to_stage(to_stage_) + { + StorageInMemoryMetadata storage_metadata; + storage_metadata.setColumns(columns_); + setInMemoryMetadata(storage_metadata); + } + static StoragePtr createStorage(const StorageID & table_id, + const ColumnsDescription & columns, Pipes pipes, QueryProcessingStage::Enum to_stage) + { + return std::make_shared<StorageBlocks>(table_id, columns, std::move(pipes), to_stage); + } + std::string getName() const override { return "Blocks"; } + /// It is passed inside the query and solved at its level. + bool supportsPrewhere() const override { return true; } + bool supportsSampling() const override { return true; } + bool supportsFinal() const override { return true; } + + QueryProcessingStage::Enum + getQueryProcessingStage(ContextPtr, QueryProcessingStage::Enum, const StorageSnapshotPtr &, SelectQueryInfo &) const override + { + return to_stage; + } + + Pipe read( + const Names & /*column_names*/, + const StorageSnapshotPtr & /*storage_snapshot*/, + SelectQueryInfo & /*query_info*/, + ContextPtr /*context*/, + QueryProcessingStage::Enum /*processed_stage*/, + size_t /*max_block_size*/, + size_t /*num_streams*/) override + { + return Pipe::unitePipes(std::move(pipes)); + } + +private: + Pipes pipes; + QueryProcessingStage::Enum to_stage; +}; + +} |