ClickHouse/src/Storages/StorageLoop.cpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

66 lines
1.8 KiB
C++
Raw Normal View History

2024-04-24 08:11:14 +00:00
#include "StorageLoop.h"
#include <Common/Exception.h>
#include <Storages/StorageFactory.h>
#include <Storages/SelectQueryInfo.h>
2024-04-25 03:30:19 +00:00
#include <Processors/QueryPlan/QueryPlan.h>
2024-04-24 08:11:14 +00:00
namespace DB
{
namespace ErrorCodes
{
2024-04-24 09:29:56 +00:00
2024-04-24 08:11:14 +00:00
}
StorageLoop::StorageLoop(
const StorageID & table_id_,
StoragePtr inner_storage_)
: IStorage(table_id_)
, inner_storage(std::move(inner_storage_))
{
StorageInMemoryMetadata storage_metadata = inner_storage->getInMemoryMetadata();
setInMemoryMetadata(storage_metadata);
}
void StorageLoop::read(
QueryPlan & query_plan,
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)
{
query_info.optimize_trivial_count = false;
2024-04-25 03:30:19 +00:00
QueryPlan temp_query_plan(std::move(query_plan));
for (size_t i = 0; i < 10; ++i)
{
QueryPlan swapped_query_plan;
std::swap(temp_query_plan, swapped_query_plan);
inner_storage->read(temp_query_plan,
column_names,
storage_snapshot,
query_info,
context,
processed_stage,
max_block_size,
num_streams);
// std::cout << "Loop iteration: " << (i + 1) << std::endl;
2024-04-24 08:11:14 +00:00
2024-04-25 03:30:19 +00:00
}
query_plan = std::move(temp_query_plan);
2024-04-24 08:11:14 +00:00
}
void registerStorageLoop(StorageFactory & factory)
{
factory.registerStorage("Loop", [](const StorageFactory::Arguments & args)
{
StoragePtr inner_storage;
return std::make_shared<StorageLoop>(args.table_id, inner_storage);
});
}
}