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

set -e

# Get all server logs
export CLICKHOUSE_CLIENT_SERVER_LOGS_LEVEL="trace"

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

cur_name=$(basename "${BASH_SOURCE[0]}")
server_logs_file="${CLICKHOUSE_TMP}/${cur_name}_server.logs"

server_logs="--server_logs_file=$server_logs_file"
rm -f "$server_logs_file"

settings="$server_logs --log_queries=1 --log_query_threads=1 --log_profile_events=1 --log_query_settings=1"


# Check that logs from remote servers are passed from client

# SELECT
true > "$server_logs_file"
$CLICKHOUSE_CLIENT $settings -q "SELECT 1 FROM system.one FORMAT Null"
lines_one_server=$(cat "$server_logs_file" | wc -l)

true > "$server_logs_file"
$CLICKHOUSE_CLIENT $settings -q "SELECT 1 FROM remote('127.0.0.2,127.0.0.3', system, one) FORMAT Null"
lines_two_servers=$(cat "$server_logs_file" | wc -l)

(( $lines_two_servers >= 2 * $lines_one_server )) || echo "Fail: $lines_two_servers $lines_one_server"

# INSERT
$CLICKHOUSE_CLIENT $settings -q "DROP TABLE IF EXISTS null_00634_1"
$CLICKHOUSE_CLIENT $settings -q "CREATE TABLE null_00634_1 (i Int8) ENGINE = Null"

true > "$server_logs_file"
$CLICKHOUSE_CLIENT $settings -q "INSERT INTO null_00634_1 VALUES (0)"
lines_one_server=$(cat "$server_logs_file" | wc -l)

true > "$server_logs_file"
$CLICKHOUSE_CLIENT $settings -q "INSERT INTO TABLE FUNCTION remote('127.0.0.2', '${CLICKHOUSE_DATABASE}', 'null_00634_1') VALUES (0)"
lines_two_servers=$(cat "$server_logs_file" | wc -l)

$CLICKHOUSE_CLIENT $settings -q "DROP TABLE IF EXISTS null_00634_1"
(( $lines_two_servers > $lines_one_server )) || echo "Fail: $lines_two_servers $lines_one_server"


# Clean
rm "$server_logs_file"
