mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 15:12:02 +00:00
Merge pull request #21550 from amosbird/shardpruningliteral
Shard pruning via literals
This commit is contained in:
commit
6ca8a66da2
@ -290,8 +290,6 @@ std::optional<Blocks> evaluateExpressionOverConstantCondition(const ASTPtr & nod
|
||||
{
|
||||
Blocks result;
|
||||
|
||||
// TODO: `node` may be always-false literal.
|
||||
|
||||
if (const auto * fn = node->as<ASTFunction>())
|
||||
{
|
||||
const auto dnf = analyzeFunction(fn, target_expr);
|
||||
@ -350,6 +348,14 @@ std::optional<Blocks> evaluateExpressionOverConstantCondition(const ASTPtr & nod
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (const auto * literal = node->as<ASTLiteral>())
|
||||
{
|
||||
// Check if it's always true or false.
|
||||
if (literal->value.getType() == Field::Types::UInt64 && literal->value.get<UInt64>() == 0)
|
||||
return {result};
|
||||
else
|
||||
return {};
|
||||
}
|
||||
|
||||
return {result};
|
||||
}
|
||||
|
@ -0,0 +1,2 @@
|
||||
1
|
||||
1
|
@ -0,0 +1,14 @@
|
||||
set optimize_skip_unused_shards=1;
|
||||
|
||||
drop table if exists data_01755;
|
||||
drop table if exists dist_01755;
|
||||
|
||||
create table data_01755 (i Int) Engine=Memory;
|
||||
create table dist_01755 as data_01755 Engine=Distributed(test_cluster_two_shards, currentDatabase(), data_01755, i);
|
||||
|
||||
insert into data_01755 values (1);
|
||||
|
||||
select * from dist_01755 where 1 settings enable_early_constant_folding = 0;
|
||||
|
||||
drop table if exists data_01755;
|
||||
drop table if exists dist_01755;
|
Loading…
Reference in New Issue
Block a user