#!/usr/bin/env bash CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) # shellcheck source=../shell_config.sh . "$CURDIR"/../shell_config.sh set -e -o pipefail $CLICKHOUSE_CLIENT <<"EOF" DROP TABLE IF EXISTS `test_log` EOF $CLICKHOUSE_CLIENT --allow_deprecated_syntax_for_merge_tree=1 <<"EOF" CREATE TABLE `test_log` ( date Date, datetime DateTime, path String, gtid String, query_serial UInt32, row_serial UInt32, reqid Int64, method String, service String, db String, type String, operation Enum8('INSERT'=1, 'UPDATE'=2, 'DELETE'=3), old_fields Nested(name String, value String, is_null Enum8('true'=1, 'false'=0)), new_fields Nested(name String, value String, is_null Enum8('true'=1, 'false'=0)), record_source_type Int8, record_source_timestamp DateTime, deleted Enum8('true'=1, 'false'=0) ) ENGINE = MergeTree( date, (date, path, gtid, query_serial, row_serial), 1024 ) EOF DATA='2018-01-01\t2018-01-01 03:00:00\tclient:1-\tserveruuid:0\t0\t0\t0\t\t\ttest\ttest\tINSERT\t[]\t[]\t[]\t[]\t[]\t[]\t1\t2018-02-02 15:54:10\tfalse\n' QUERY='INSERT INTO "test_log"("date", "datetime", "path", "gtid", "query_serial", "row_serial", "reqid", "method", "service", "db", "type", "operation", "old_fields"."name", "old_fields"."value", "old_fields"."is_null", "new_fields"."name", "new_fields"."value", "new_fields"."is_null", "record_source_type", "record_source_timestamp", "deleted") FORMAT TabSeparated' QUERY="$(tr -d '\n' <<<"$QUERY")" echo "$QUERY" URL=$(python3 -c 'import urllib.parse; print("'"${CLICKHOUSE_URL}"'&query=" + urllib.parse.quote('"'''$QUERY'''"'))') set +e for _ in 1 2 3; do echo run by native protocol echo -ne "$DATA" | $CLICKHOUSE_CLIENT --query "$QUERY" echo run by http protocol echo -ne "$DATA" | $CLICKHOUSE_CURL -sS -X POST --data-binary @- "$URL" done echo 'Count:' $CLICKHOUSE_CLIENT --query 'select count() from test_log' $CLICKHOUSE_CLIENT --query 'DROP TABLE test_log'