2020-04-10 23:02:15 +00:00
#!/usr/bin/env bash
2022-03-18 16:30:05 +00:00
# Tags: no-parallel, no-fasttest
# Tag no-fasttest: 45 seconds running
2020-04-10 23:02:15 +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
2020-04-10 23:02:15 +00:00
2020-11-01 17:38:43 +00:00
2021-11-20 11:27:34 +00:00
$CLICKHOUSE_CLIENT -nm -q "
DROP DATABASE IF EXISTS test_01114_1;
DROP DATABASE IF EXISTS test_01114_2;
DROP DATABASE IF EXISTS test_01114_3;
"
2020-04-10 23:02:15 +00:00
2020-08-12 20:40:13 +00:00
$CLICKHOUSE_CLIENT -q "CREATE DATABASE test_01114_1 ENGINE=Atomic"
2022-06-23 07:59:13 +00:00
$CLICKHOUSE_CLIENT -q "CREATE DATABASE test_01114_2"
$CLICKHOUSE_CLIENT --allow_deprecated_database_ordinary= 1 -q "CREATE DATABASE test_01114_3 ENGINE=Ordinary"
2020-04-10 23:02:15 +00:00
2020-07-06 08:30:11 +00:00
$CLICKHOUSE_CLIENT --show_table_uuid_in_table_create_query_if_not_nil= 0 -q "SHOW CREATE DATABASE test_01114_1"
$CLICKHOUSE_CLIENT --show_table_uuid_in_table_create_query_if_not_nil= 0 -q "SHOW CREATE DATABASE test_01114_2"
2020-04-10 23:02:15 +00:00
$CLICKHOUSE_CLIENT -q "SHOW CREATE DATABASE test_01114_3"
2020-07-09 17:47:42 +00:00
uuid_db_1 = ` $CLICKHOUSE_CLIENT -q "SELECT uuid FROM system.databases WHERE name='test_01114_1'" `
uuid_db_2 = ` $CLICKHOUSE_CLIENT -q "SELECT uuid FROM system.databases WHERE name='test_01114_2'" `
$CLICKHOUSE_CLIENT -q " SELECT name,
engine,
splitByChar( '/' , data_path) [ -2] ,
splitByChar( '/' , metadata_path) [ -2] as uuid_path, ( ( splitByChar( '/' , metadata_path) [ -3] as metadata) = substr( uuid_path, 1, 3) ) OR metadata = 'metadata'
FROM system.databases WHERE name LIKE 'test_01114_%' " | sed " s/$uuid_db_1 /00001114-1000-4000-8000-000000000001/g" | sed " s/$uuid_db_2 /00001114-1000-4000-8000-000000000002/g"
2020-04-10 23:02:15 +00:00
2021-11-20 11:27:34 +00:00
$CLICKHOUSE_CLIENT -nm -q "
CREATE TABLE test_01114_1.mt_tmp ( n UInt64) ENGINE = MergeTree( ) ORDER BY tuple( ) ;
INSERT INTO test_01114_1.mt_tmp SELECT * FROM numbers( 100) ;
CREATE TABLE test_01114_3.mt ( n UInt64) ENGINE = MergeTree( ) ORDER BY tuple( ) PARTITION BY ( n % 5) ;
INSERT INTO test_01114_3.mt SELECT * FROM numbers( 20) ;
2020-04-10 23:02:15 +00:00
2021-11-20 11:27:34 +00:00
RENAME TABLE test_01114_1.mt_tmp TO test_01114_3.mt_tmp; /* move from Atomic to Ordinary */
RENAME TABLE test_01114_3.mt TO test_01114_1.mt; /* move from Ordinary to Atomic */
SELECT count( ) FROM test_01114_1.mt;
SELECT count( ) FROM test_01114_3.mt_tmp;
2020-04-10 23:02:15 +00:00
2021-11-20 11:27:34 +00:00
DROP DATABASE test_01114_3;
"
2020-04-10 23:02:15 +00:00
2020-10-23 12:32:57 +00:00
explicit_uuid = $( $CLICKHOUSE_CLIENT -q "SELECT generateUUIDv4()" )
$CLICKHOUSE_CLIENT -q " CREATE TABLE test_01114_2.mt UUID ' $explicit_uuid ' (n UInt64) ENGINE=MergeTree() ORDER BY tuple() PARTITION BY (n % 5) "
$CLICKHOUSE_CLIENT --show_table_uuid_in_table_create_query_if_not_nil= 1 -q "SHOW CREATE TABLE test_01114_2.mt" | sed " s/ $explicit_uuid /00001114-0000-4000-8000-000000000002/g "
$CLICKHOUSE_CLIENT -q "SELECT name, uuid, create_table_query FROM system.tables WHERE database='test_01114_2'" | sed " s/ $explicit_uuid /00001114-0000-4000-8000-000000000002/g "
2020-04-10 23:02:15 +00:00
2020-04-12 18:52:59 +00:00
$CLICKHOUSE_CLIENT -q "SELECT count(col), sum(col) FROM (SELECT n + sleepEachRow(1.5) AS col FROM test_01114_1.mt)" & # 30s, result: 20, 190
$CLICKHOUSE_CLIENT -q "INSERT INTO test_01114_2.mt SELECT number + sleepEachRow(1.5) FROM numbers(30)" & # 45s
2020-04-10 23:02:15 +00:00
sleep 1 # SELECT and INSERT should start before the following RENAMEs
2021-11-20 11:27:34 +00:00
$CLICKHOUSE_CLIENT -nm -q "
RENAME TABLE test_01114_1.mt TO test_01114_1.mt_tmp;
RENAME TABLE test_01114_1.mt_tmp TO test_01114_2.mt_tmp;
EXCHANGE TABLES test_01114_2.mt AND test_01114_2.mt_tmp;
RENAME TABLE test_01114_2.mt_tmp TO test_01114_1.mt;
EXCHANGE TABLES test_01114_1.mt AND test_01114_2.mt;
"
2020-04-10 23:02:15 +00:00
# Check that nothing changed
$CLICKHOUSE_CLIENT -q "SELECT count() FROM test_01114_1.mt"
2020-08-01 01:20:22 +00:00
uuid_mt1 = $( $CLICKHOUSE_CLIENT -q "SELECT uuid FROM system.tables WHERE database='test_01114_1' AND name='mt'" )
2020-05-07 11:29:58 +00:00
$CLICKHOUSE_CLIENT --show_table_uuid_in_table_create_query_if_not_nil= 1 -q "SHOW CREATE TABLE test_01114_1.mt" | sed " s/ $uuid_mt1 /00001114-0000-4000-8000-000000000001/g "
2020-10-23 12:32:57 +00:00
$CLICKHOUSE_CLIENT --show_table_uuid_in_table_create_query_if_not_nil= 1 -q "SHOW CREATE TABLE test_01114_2.mt" | sed " s/ $explicit_uuid /00001114-0000-4000-8000-000000000002/g "
2020-04-10 23:02:15 +00:00
2021-11-20 11:27:34 +00:00
$CLICKHOUSE_CLIENT -nm -q "
DROP TABLE test_01114_1.mt SETTINGS database_atomic_wait_for_drop_and_detach_synchronously = 0;
CREATE TABLE test_01114_1.mt ( s String) ENGINE = Log( ) ;
INSERT INTO test_01114_1.mt SELECT 's' || toString( number) FROM numbers( 5) ;
SELECT count( ) FROM test_01114_1.mt
" # result: 5
2020-04-10 23:02:15 +00:00
$CLICKHOUSE_CLIENT -q "SELECT tuple(s, sleepEachRow(3)) FROM test_01114_1.mt" > /dev/null & # 15s
sleep 1
2020-10-26 09:42:54 +00:00
$CLICKHOUSE_CLIENT -q "DROP DATABASE test_01114_1" --database_atomic_wait_for_drop_and_detach_synchronously= 0 && echo "dropped"
2020-04-10 23:02:15 +00:00
2021-11-20 11:27:34 +00:00
wait # for INSERT and SELECT
2020-04-10 23:02:15 +00:00
$CLICKHOUSE_CLIENT -q "SELECT count(n), sum(n) FROM test_01114_2.mt" # result: 30, 435
2020-10-26 09:42:54 +00:00
$CLICKHOUSE_CLIENT -q "DROP DATABASE test_01114_2" --database_atomic_wait_for_drop_and_detach_synchronously= 0