2021-04-20 19:21:15 +00:00
#!/usr/bin/env bash
CUR_DIR = $( cd " $( dirname " ${ BASH_SOURCE [0] } " ) " && pwd )
# shellcheck source=../shell_config.sh
. " $CUR_DIR " /../shell_config.sh
${ CLICKHOUSE_CLIENT } --multiquery --query "
drop table if exists aliases_lazyness;
create table aliases_lazyness ( x UInt32, y ALIAS sleepEachRow( 0.1) ) Engine = MergeTree ORDER BY x;
2022-04-24 19:07:27 +00:00
insert into aliases_lazyness( x) select * from numbers( 100) ;
2021-04-20 19:21:15 +00:00
"
# In very old ClickHouse versions alias column was calculated for every row.
2022-04-24 19:07:27 +00:00
# If it works this way, the query will take at least 0.1 * 100 = 10 seconds.
# If the issue does not exist, the query should call sleepEachRow() "only" 4 times:
# - from MergeTreeData::getQueryProcessingStageWithAggregateProjection() -> MergeTreeWhereOptimizer -> getBlockWithConstants()
# - from MergeTreeWhereOptimizer -> getBlockWithConstants()
# - ReadFromMergeTree::selectRangesToRead() -> getBlockWithConstants()
# - Pipeline
${ CLICKHOUSE_CLIENT } --profile-events-delay-ms= -1 --print-profile-events --query "SELECT x, y FROM aliases_lazyness WHERE x = 1 FORMAT Null" | & grep -o -e "SleepFunctionMicroseconds.*" -e "SleepFunctionCalls.*"
2021-04-20 19:21:15 +00:00
2022-04-24 19:07:27 +00:00
${ CLICKHOUSE_CLIENT } --query "drop table aliases_lazyness"