mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-25 17:12:03 +00:00
34 lines
1.3 KiB
Bash
34 lines
1.3 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||
|
# shellcheck source=../shell_config.sh
|
||
|
. "$CURDIR"/../shell_config.sh
|
||
|
|
||
|
|
||
|
# check for buffer overflow in unbin (due to not enough memory preallocate for output buffer)
|
||
|
# we iterate over all remainders of input string length modulo word_size and check that no assertions are triggered
|
||
|
|
||
|
word_size=8
|
||
|
for i in $(seq 1 $((word_size+1))); do
|
||
|
str=$(printf "%${i}s" | tr ' ' 'x')
|
||
|
$CLICKHOUSE_CLIENT -q "SELECT count() FROM numbers(99) GROUP BY unbin(toFixedString(materialize('$str'), $i)) WITH ROLLUP WITH TOTALS FORMAT NULL"
|
||
|
done
|
||
|
|
||
|
word_size=8
|
||
|
for i in $(seq 1 $((word_size+1))); do
|
||
|
str=$(printf "%${i}s" | tr ' ' 'x')
|
||
|
$CLICKHOUSE_CLIENT -q "SELECT count() FROM numbers(99) GROUP BY unbin(materialize('$str')) WITH ROLLUP WITH TOTALS FORMAT NULL"
|
||
|
done
|
||
|
|
||
|
word_size=2
|
||
|
for i in $(seq 1 $((word_size+1))); do
|
||
|
str=$(printf "%${i}s" | tr ' ' 'x')
|
||
|
$CLICKHOUSE_CLIENT -q "SELECT count() FROM numbers(99) GROUP BY unhex(toFixedString(materialize('$str'), $i)) WITH ROLLUP WITH TOTALS FORMAT NULL"
|
||
|
done
|
||
|
|
||
|
word_size=2
|
||
|
for i in $(seq 1 $((word_size+1))); do
|
||
|
str=$(printf "%${i}s" | tr ' ' 'x')
|
||
|
$CLICKHOUSE_CLIENT -q "SELECT count() FROM numbers(99) GROUP BY unhex(materialize('$str')) WITH ROLLUP WITH TOTALS FORMAT NULL"
|
||
|
done
|