#!/usr/bin/env bash function create { clickhouse-client --query="DROP TABLE IF EXISTS test.summing" clickhouse-client --query="DROP TABLE IF EXISTS test.collapsing" clickhouse-client --query="DROP TABLE IF EXISTS test.aggregating" clickhouse-client --query="CREATE TABLE test.summing (d Date DEFAULT today(), x UInt64, s UInt64 DEFAULT 1) ENGINE = SummingMergeTree(d, x, 8192)" clickhouse-client --query="CREATE TABLE test.collapsing (d Date DEFAULT today(), x UInt64, s Int8 DEFAULT 1) ENGINE = CollapsingMergeTree(d, x, 8192, s)" clickhouse-client --query="CREATE TABLE test.aggregating (d Date DEFAULT today(), x UInt64, s AggregateFunction(sum, UInt64)) ENGINE = AggregatingMergeTree(d, x, 8192)" } function cleanup { clickhouse-client --query="DROP TABLE test.summing" clickhouse-client --query="DROP TABLE test.collapsing" clickhouse-client --query="DROP TABLE test.aggregating" } function test { create SUM=$(( $1 + $2 )) MAX=$(( $1 > $2 ? $1 : $2 )) SETTINGS="--min_insert_block_size_rows=0 --min_insert_block_size_bytes=0" clickhouse-client $SETTINGS --query="INSERT INTO test.summing (x) SELECT number AS x FROM system.numbers LIMIT $1" clickhouse-client $SETTINGS --query="INSERT INTO test.summing (x) SELECT number AS x FROM system.numbers LIMIT $2" clickhouse-client $SETTINGS --query="INSERT INTO test.collapsing (x) SELECT number AS x FROM system.numbers LIMIT $1" clickhouse-client $SETTINGS --query="INSERT INTO test.collapsing (x) SELECT number AS x FROM system.numbers LIMIT $2" clickhouse-client $SETTINGS --query="INSERT INTO test.aggregating (d, x, s) SELECT today() AS d, number AS x, sumState(materialize(toUInt64(1))) AS s FROM (SELECT number FROM system.numbers LIMIT $1) GROUP BY number" clickhouse-client $SETTINGS --query="INSERT INTO test.aggregating (d, x, s) SELECT today() AS d, number AS x, sumState(materialize(toUInt64(1))) AS s FROM (SELECT number FROM system.numbers LIMIT $2) GROUP BY number" clickhouse-client --query="SELECT count() = $SUM, sum(s) = $SUM FROM test.summing" clickhouse-client --query="OPTIMIZE TABLE test.summing" clickhouse-client --query="SELECT count() = $MAX, sum(s) = $SUM FROM test.summing" echo clickhouse-client --query="SELECT count() = $SUM, sum(s) = $SUM FROM test.collapsing" clickhouse-client --query="OPTIMIZE TABLE test.collapsing" clickhouse-client --query="SELECT count() = $MAX, sum(s) = $MAX FROM test.collapsing" echo clickhouse-client --query="SELECT count() = $SUM, sumMerge(s) = $SUM FROM test.aggregating" clickhouse-client --query="OPTIMIZE TABLE test.aggregating" clickhouse-client --query="SELECT count() = $MAX, sumMerge(s) = $SUM FROM test.aggregating" echo echo } test 8191 8191 test 8191 8192 test 8192 8191 test 8192 8192 test 8192 8193 test 8193 8192 test 8193 8193 test 8191 8193 test 8193 8191 test 8193 8194 test 8194 8193 test 8194 8194 cleanup