#!/usr/bin/env bash
# Tags: race

CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
# shellcheck source=../shell_config.sh
. "$CURDIR"/../shell_config.sh

set -o errexit
set -o pipefail

echo "
	DROP TABLE IF EXISTS rocksdb_race;
	CREATE TABLE rocksdb_race (key String, value UInt32) Engine=EmbeddedRocksDB PRIMARY KEY(key);
    INSERT INTO rocksdb_race SELECT '1_' || toString(number), number FROM numbers(100000);
" | $CLICKHOUSE_CLIENT -n

function read_stat_thread()
{
    while true; do
        echo "
            SELECT * FROM system.rocksdb FORMAT Null;
        " | $CLICKHOUSE_CLIENT -n
    done
}

function truncate_thread()
{
    while true; do
        sleep 3s;
        echo "
            TRUNCATE TABLE rocksdb_race;
        " | $CLICKHOUSE_CLIENT -n
    done
}

# https://stackoverflow.com/questions/9954794/execute-a-shell-function-with-timeout
export -f read_stat_thread;
export -f truncate_thread;

TIMEOUT=20

timeout $TIMEOUT bash -c read_stat_thread 2> /dev/null &
timeout $TIMEOUT bash -c truncate_thread 2> /dev/null &

wait

$CLICKHOUSE_CLIENT -q "DROP TABLE rocksdb_race"
