mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-19 16:20:50 +00:00
Fix: fallback to local plan w/o PR in case of empty table
This commit is contained in:
parent
a3d4fd9246
commit
baf3408b16
@ -528,7 +528,7 @@ void executeQueryWithParallelReplicas(
|
|||||||
/// do not build local plan for distributed queries for now (address it later)
|
/// do not build local plan for distributed queries for now (address it later)
|
||||||
if (settings.allow_experimental_analyzer && settings.parallel_replicas_local_plan && !shard_num)
|
if (settings.allow_experimental_analyzer && settings.parallel_replicas_local_plan && !shard_num)
|
||||||
{
|
{
|
||||||
auto local_plan = createLocalPlanForParallelReplicas(
|
auto [local_plan, with_parallel_replicas] = createLocalPlanForParallelReplicas(
|
||||||
query_ast,
|
query_ast,
|
||||||
header,
|
header,
|
||||||
new_context,
|
new_context,
|
||||||
@ -536,6 +536,12 @@ void executeQueryWithParallelReplicas(
|
|||||||
coordinator,
|
coordinator,
|
||||||
std::move(analyzed_read_from_merge_tree));
|
std::move(analyzed_read_from_merge_tree));
|
||||||
|
|
||||||
|
if (!with_parallel_replicas)
|
||||||
|
{
|
||||||
|
query_plan = std::move(*local_plan);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
auto read_from_remote = std::make_unique<ReadFromParallelRemoteReplicasStep>(
|
auto read_from_remote = std::make_unique<ReadFromParallelRemoteReplicasStep>(
|
||||||
query_ast,
|
query_ast,
|
||||||
new_cluster,
|
new_cluster,
|
||||||
|
@ -21,9 +21,7 @@
|
|||||||
namespace DB
|
namespace DB
|
||||||
{
|
{
|
||||||
|
|
||||||
void addConvertingActions(QueryPlan & plan, const Block & header, bool has_missing_objects);
|
std::pair<std::unique_ptr<QueryPlan>, bool> createLocalPlanForParallelReplicas(
|
||||||
|
|
||||||
std::unique_ptr<QueryPlan> createLocalPlanForParallelReplicas(
|
|
||||||
const ASTPtr & query_ast,
|
const ASTPtr & query_ast,
|
||||||
const Block & header,
|
const Block & header,
|
||||||
ContextPtr context,
|
ContextPtr context,
|
||||||
@ -68,7 +66,9 @@ std::unique_ptr<QueryPlan> createLocalPlanForParallelReplicas(
|
|||||||
node = nullptr;
|
node = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
chassert(reading);
|
if (!reading)
|
||||||
|
/// it can happened if merge tree table is empty, - it'll be replaced with ReadFromPreparedSource
|
||||||
|
return {std::move(query_plan), false};
|
||||||
|
|
||||||
ReadFromMergeTree::AnalysisResultPtr analyzed_result_ptr;
|
ReadFromMergeTree::AnalysisResultPtr analyzed_result_ptr;
|
||||||
if (analyzed_read_from_merge_tree.get())
|
if (analyzed_read_from_merge_tree.get())
|
||||||
@ -89,7 +89,8 @@ std::unique_ptr<QueryPlan> createLocalPlanForParallelReplicas(
|
|||||||
node->step = std::move(read_from_merge_tree_parallel_replicas);
|
node->step = std::move(read_from_merge_tree_parallel_replicas);
|
||||||
|
|
||||||
addConvertingActions(*query_plan, header, /*has_missing_objects=*/false);
|
addConvertingActions(*query_plan, header, /*has_missing_objects=*/false);
|
||||||
return query_plan;
|
|
||||||
|
return {std::move(query_plan), true};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
namespace DB
|
namespace DB
|
||||||
{
|
{
|
||||||
|
|
||||||
std::unique_ptr<QueryPlan> createLocalPlanForParallelReplicas(
|
std::pair<std::unique_ptr<QueryPlan>, bool> createLocalPlanForParallelReplicas(
|
||||||
const ASTPtr & query_ast,
|
const ASTPtr & query_ast,
|
||||||
const Block & header,
|
const Block & header,
|
||||||
ContextPtr context,
|
ContextPtr context,
|
||||||
|
Loading…
Reference in New Issue
Block a user