mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-19 21:03:51 +00:00
106 lines
3.0 KiB
Bash
Executable File
106 lines
3.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Tags: replica, no-fasttest, no-shared-merge-tree
|
|
# no-fasttest: Mutation load can be slow
|
|
# no-shared-merge-tree -- have separate test for it
|
|
CUR_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|
# shellcheck source=../shell_config.sh
|
|
. "$CUR_DIR"/../shell_config.sh
|
|
# shellcheck source=./mergetree_mutations.lib
|
|
. "$CUR_DIR"/mergetree_mutations.lib
|
|
|
|
function wait_column()
|
|
{
|
|
local table=$1 && shift
|
|
local column=$1 && shift
|
|
|
|
for _ in {1..60}; do
|
|
result=$($CLICKHOUSE_CLIENT --query "SHOW CREATE TABLE $table")
|
|
if [[ $result == *"$column"* ]]; then
|
|
return 0
|
|
fi
|
|
sleep 0.1
|
|
done
|
|
|
|
echo "[$table] Cannot wait for column to appear" >&2
|
|
return 1
|
|
}
|
|
function wait_mutation_loaded()
|
|
{
|
|
local table=$1 && shift
|
|
local expr=$1 && shift
|
|
|
|
for _ in {1..60}; do
|
|
result=$($CLICKHOUSE_CLIENT --query "SELECT * FROM system.mutations WHERE table = '$table' AND database='$CLICKHOUSE_DATABASE'")
|
|
if [[ $result == *"$expr"* ]]; then
|
|
return 0
|
|
fi
|
|
sleep 0.1
|
|
done
|
|
|
|
echo "[$table] Cannot wait mutation $expr" >&2
|
|
return 1
|
|
}
|
|
|
|
declare -A tables
|
|
tables["wrong_metadata"]="min_bytes_for_wide_part = 0"
|
|
tables["wrong_metadata_compact"]="min_bytes_for_wide_part = 10000000"
|
|
|
|
for table in "${!tables[@]}"; do
|
|
settings="${tables[$table]}"
|
|
|
|
$CLICKHOUSE_CLIENT --query="
|
|
DROP TABLE IF EXISTS $table;
|
|
|
|
CREATE TABLE $table(
|
|
a UInt64,
|
|
b UInt64,
|
|
c UInt64
|
|
)
|
|
ENGINE ReplicatedMergeTree('/test/{database}/tables/$table', '1')
|
|
ORDER BY tuple()
|
|
SETTINGS $settings;
|
|
|
|
INSERT INTO $table VALUES (1, 2, 3);
|
|
SYSTEM STOP MERGES $table;
|
|
|
|
-- { echoOn }
|
|
SELECT 'ECHO_ALIGNMENT_FIX' FORMAT Null;
|
|
|
|
ALTER TABLE $table RENAME COLUMN a TO a1, RENAME COLUMN b to b1 SETTINGS replication_alter_partitions_sync = 0;
|
|
"
|
|
|
|
wait_column "$table" "\`a1\` UInt64" || exit 2
|
|
|
|
$CLICKHOUSE_CLIENT --query="
|
|
-- { echoOn }
|
|
SELECT 'ECHO_ALIGNMENT_FIX' FORMAT Null;
|
|
|
|
SELECT * FROM $table ORDER BY a1 FORMAT JSONEachRow;
|
|
INSERT INTO $table VALUES (4, 5, 6);
|
|
SELECT * FROM $table ORDER BY a1 FORMAT JSONEachRow;
|
|
|
|
ALTER TABLE $table RENAME COLUMN a1 TO b, RENAME COLUMN b1 to a SETTINGS replication_alter_partitions_sync = 0;
|
|
"
|
|
|
|
wait_mutation_loaded "$table" "b1 TO a" || exit 2
|
|
|
|
$CLICKHOUSE_CLIENT --query="
|
|
-- { echoOn }
|
|
SELECT 'ECHO_ALIGNMENT_FIX' FORMAT Null;
|
|
|
|
INSERT INTO $table VALUES (7, 8, 9);
|
|
SELECT * FROM $table ORDER by a1 FORMAT JSONEachRow;
|
|
SYSTEM START MERGES $table;
|
|
SYSTEM SYNC REPLICA $table;
|
|
"
|
|
|
|
wait_for_all_mutations "$table"
|
|
|
|
$CLICKHOUSE_CLIENT --query="
|
|
-- { echoOn }
|
|
SELECT 'ECHO_ALIGNMENT_FIX' FORMAT Null;
|
|
|
|
SELECT * FROM $table order by a FORMAT JSONEachRow;
|
|
"
|
|
done |& grep -v -F -x -e '-- { echoOn }' -e " SELECT 'ECHO_ALIGNMENT_FIX' FORMAT Null;"
|