2018-03-09 23:07:08 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2019-08-22 21:35:16 +00:00
|
|
|
CLICKHOUSE_CLIENT_SERVER_LOGS_LEVEL=none
|
|
|
|
|
2018-03-09 23:07:08 +00:00
|
|
|
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
2020-12-28 11:46:53 +00:00
|
|
|
# shellcheck source=../shell_config.sh
|
2020-08-01 00:51:12 +00:00
|
|
|
. "$CURDIR"/../shell_config.sh
|
2018-03-09 23:07:08 +00:00
|
|
|
|
2024-07-09 22:24:53 +00:00
|
|
|
TEST_PREFIX=$RANDOM
|
|
|
|
${CLICKHOUSE_CLIENT} -q "drop user if exists u_00600${TEST_PREFIX}"
|
|
|
|
${CLICKHOUSE_CLIENT} -q "create user u_00600${TEST_PREFIX} settings max_execution_time=60, readonly=1"
|
|
|
|
${CLICKHOUSE_CLIENT} -q "grant select on system.numbers to u_00600${TEST_PREFIX}"
|
2018-03-09 23:07:08 +00:00
|
|
|
|
2019-07-20 00:47:06 +00:00
|
|
|
function wait_for_query_to_start()
|
|
|
|
{
|
|
|
|
while [[ $($CLICKHOUSE_CURL -sS "$CLICKHOUSE_URL" -d "SELECT count() FROM system.processes WHERE query_id = '$1'") == 0 ]]; do sleep 0.1; done
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2020-08-01 00:40:56 +00:00
|
|
|
$CLICKHOUSE_CURL -sS "$CLICKHOUSE_URL&query_id=hello&replace_running_query=1" -d 'SELECT 1, count() FROM system.numbers' > /dev/null 2>&1 &
|
2019-07-20 00:47:06 +00:00
|
|
|
wait_for_query_to_start 'hello'
|
|
|
|
|
|
|
|
# Replace it
|
2019-10-11 15:59:27 +00:00
|
|
|
$CLICKHOUSE_CURL -sS "$CLICKHOUSE_URL&query_id=hello&replace_running_query=1" -d 'SELECT 0'
|
2019-07-20 00:47:06 +00:00
|
|
|
|
|
|
|
# Wait for it to be replaced
|
2018-03-09 23:07:08 +00:00
|
|
|
wait
|
2019-06-30 13:17:27 +00:00
|
|
|
|
2024-07-09 22:24:53 +00:00
|
|
|
${CLICKHOUSE_CLIENT_BINARY} --user=u_00600${TEST_PREFIX} --query_id=42 --query='SELECT 2, count() FROM system.numbers' 2>&1 | grep -cF 'was cancelled' &
|
2019-07-20 00:47:06 +00:00
|
|
|
wait_for_query_to_start '42'
|
2019-08-22 21:35:16 +00:00
|
|
|
|
|
|
|
# Trying to run another query with the same query_id
|
|
|
|
${CLICKHOUSE_CLIENT} --query_id=42 --query='SELECT 43' 2>&1 | grep -cF 'is already running by user'
|
|
|
|
|
|
|
|
# Trying to replace query of a different user
|
2019-10-11 15:59:27 +00:00
|
|
|
$CLICKHOUSE_CURL -sS "$CLICKHOUSE_URL&query_id=42&replace_running_query=1" -d 'SELECT 1' | grep -cF 'is already running by user'
|
2019-08-22 21:35:16 +00:00
|
|
|
|
2019-08-24 12:18:03 +00:00
|
|
|
$CLICKHOUSE_CURL -sS "$CLICKHOUSE_URL" -d "KILL QUERY WHERE query_id = '42' SYNC" > /dev/null
|
2019-06-30 13:17:27 +00:00
|
|
|
wait
|
|
|
|
|
2019-08-22 21:35:16 +00:00
|
|
|
${CLICKHOUSE_CLIENT} --query_id=42 --query='SELECT 3, count() FROM system.numbers' 2>&1 | grep -cF 'was cancelled' &
|
2019-07-20 00:47:06 +00:00
|
|
|
wait_for_query_to_start '42'
|
2019-08-28 15:21:57 +00:00
|
|
|
${CLICKHOUSE_CLIENT} --query_id=42 --replace_running_query=1 --replace_running_query_max_wait_ms=500 --query='SELECT 43' 2>&1 | grep -F "can't be stopped" > /dev/null
|
2019-06-30 13:17:27 +00:00
|
|
|
wait
|
2020-06-14 15:05:15 +00:00
|
|
|
${CLICKHOUSE_CLIENT} --query_id=42 --replace_running_query=1 --query='SELECT 44'
|
2024-07-09 22:24:53 +00:00
|
|
|
${CLICKHOUSE_CLIENT} -q "drop user u_00600${TEST_PREFIX}"
|