ClickHouse/dbms/tests/queries/0_stateless/01072_optimize_skip_unused_shards_const_expr_eval.sql
Azat Khuzhin 5039b6ab73 Fix Distributed engine with virtual columns of the underlying table in WHERE
Before storage has not been passed to the SyntaxAnalyzer and hence
it cannot check if there is such column and throw for virtual columns
like _part (MergeTree) and others.

Follow-up-for: #8846
2020-03-24 21:07:20 +03:00

57 lines
3.2 KiB
SQL

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;
-- check virtual columns
drop table data_01072;
drop table dist_01072;
create table data_01072 (key Int) Engine=MergeTree() ORDER BY key;
create table dist_01072 (key Int) Engine=Distributed(test_cluster_two_shards, currentDatabase(), data_01072, key);
select * from dist_01072 where key=0 and _part='0' settings force_optimize_skip_unused_shards=2;
drop table data_01072;
drop table dist_01072;