Cover constant expression evaluation for optimize_skip_unused_shards

v2: remove key=xxHash64() that is covered by #9804
This commit is contained in:
Azat Khuzhin 2020-01-26 23:31:51 +03:00
parent 6550aa5e6c
commit 622131fc85
2 changed files with 49 additions and 0 deletions

View File

@ -0,0 +1,49 @@
drop table if exists data_01072;
drop table if exists dist_01072;
set optimize_skip_unused_shards=1;
set force_optimize_skip_unused_shards=1;
create table data_01072 (key Int, value Int, str String) Engine=Null();
create table dist_01072 (key Int, value Int, str String) Engine=Distributed(test_cluster_two_shards, currentDatabase(), data_01072, key%2);
select * from dist_01072 where key=0 and length(str)=0;
select * from dist_01072 where key=0 and str='';
select * from dist_01072 where xxHash64(0)==xxHash64(0) and key=0;
select * from dist_01072 where key=toInt32OrZero(toString(xxHash64(0)));
select * from dist_01072 where key=toInt32(xxHash32(0));
select * from dist_01072 where key=toInt32(toInt32(xxHash32(0)));
select * from dist_01072 where key=toInt32(toInt32(toInt32(xxHash32(0))));
select * from dist_01072 where key=value; -- { serverError 507; }
select * from dist_01072 where key=toInt32(value); -- { serverError 507; }
select * from dist_01072 where key=value settings force_optimize_skip_unused_shards=0;
select * from dist_01072 where key=toInt32(value) settings force_optimize_skip_unused_shards=0;
drop table dist_01072;
create table dist_01072 (key Int, value Nullable(Int), str String) Engine=Distributed(test_cluster_two_shards, currentDatabase(), data_01072, key%2);
select * from dist_01072 where key=toInt32(xxHash32(0));
select * from dist_01072 where key=value; -- { serverError 507; }
select * from dist_01072 where key=toInt32(value); -- { serverError 507; }
select * from dist_01072 where key=value settings force_optimize_skip_unused_shards=0;
select * from dist_01072 where key=toInt32(value) settings force_optimize_skip_unused_shards=0;
set allow_suspicious_low_cardinality_types=1;
drop table dist_01072;
create table dist_01072 (key Int, value LowCardinality(Int), str String) Engine=Distributed(test_cluster_two_shards, currentDatabase(), data_01072, key%2);
select * from dist_01072 where key=toInt32(xxHash32(0));
select * from dist_01072 where key=value; -- { serverError 507; }
select * from dist_01072 where key=toInt32(value); -- { serverError 507; }
select * from dist_01072 where key=value settings force_optimize_skip_unused_shards=0;
select * from dist_01072 where key=toInt32(value) settings force_optimize_skip_unused_shards=0;
drop table dist_01072;
create table dist_01072 (key Int, value LowCardinality(Nullable(Int)), str String) Engine=Distributed(test_cluster_two_shards, currentDatabase(), data_01072, key%2);
select * from dist_01072 where key=toInt32(xxHash32(0));
select * from dist_01072 where key=value; -- { serverError 507; }
select * from dist_01072 where key=toInt32(value); -- { serverError 507; }
select * from dist_01072 where key=value settings force_optimize_skip_unused_shards=0;
select * from dist_01072 where key=toInt32(value) settings force_optimize_skip_unused_shards=0;
drop table data_01072;
drop table dist_01072;