mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 08:40:50 +00:00
Fix parts removal on drop + add unrelated test
This commit is contained in:
parent
f6fd4bc3d3
commit
0027934d27
@ -154,6 +154,7 @@ namespace ErrorCodes
|
|||||||
extern const int TOO_MANY_SIMULTANEOUS_QUERIES;
|
extern const int TOO_MANY_SIMULTANEOUS_QUERIES;
|
||||||
extern const int INCORRECT_QUERY;
|
extern const int INCORRECT_QUERY;
|
||||||
extern const int CANNOT_RESTORE_TABLE;
|
extern const int CANNOT_RESTORE_TABLE;
|
||||||
|
extern const int ZERO_COPY_REPLICATION_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void checkSampleExpression(const StorageInMemoryMetadata & metadata, bool allow_sampling_expression_not_in_primary_key, bool check_sample_column_is_correct)
|
static void checkSampleExpression(const StorageInMemoryMetadata & metadata, bool allow_sampling_expression_not_in_primary_key, bool check_sample_column_is_correct)
|
||||||
@ -2178,6 +2179,9 @@ void MergeTreeData::dropAllData()
|
|||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LOG_INFO(log, "dropAllData: clearing temporary directories");
|
||||||
|
clearOldTemporaryDirectories(0, {"tmp_", "delete_tmp_", "tmp-fetch_"});
|
||||||
|
|
||||||
column_sizes.clear();
|
column_sizes.clear();
|
||||||
|
|
||||||
for (const auto & disk : getDisks())
|
for (const auto & disk : getDisks())
|
||||||
@ -2185,8 +2189,22 @@ void MergeTreeData::dropAllData()
|
|||||||
if (disk->isBroken())
|
if (disk->isBroken())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
LOG_INFO(log, "dropAllData: remove format_version.txt and detached directory");
|
||||||
|
disk->removeFile(fs::path(relative_data_path) / "format_version.txt");
|
||||||
|
disk->removeRecursive(fs::path(relative_data_path) / "detached");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
if (!disk->isDirectoryEmpty(relative_data_path) && disk->supportZeroCopyReplication() && settings_ptr->allow_remote_fs_zero_copy_replication)
|
||||||
|
{
|
||||||
|
std::vector<std::string> files_left;
|
||||||
|
disk->listFiles(relative_data_path, files_left);
|
||||||
|
|
||||||
|
throw Exception(
|
||||||
|
ErrorCodes::ZERO_COPY_REPLICATION_ERROR, "Directory {} with table {} not empty (files [{}]) after drop. Will not drop.",
|
||||||
|
relative_data_path, getStorageID().getNameForLogs(), fmt::join(files_left, ", "));
|
||||||
|
}
|
||||||
|
|
||||||
LOG_INFO(log, "dropAllData: removing table directory recursive to cleanup garbage");
|
LOG_INFO(log, "dropAllData: removing table directory recursive to cleanup garbage");
|
||||||
disk->removeRecursive(relative_data_path);
|
disk->removeRecursive(relative_data_path);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
2 1 1
|
@ -0,0 +1,40 @@
|
|||||||
|
DROP TABLE IF EXISTS mutate_and_zero_copy_replication1;
|
||||||
|
DROP TABLE IF EXISTS mutate_and_zero_copy_replication2;
|
||||||
|
|
||||||
|
CREATE TABLE mutate_and_zero_copy_replication1
|
||||||
|
(
|
||||||
|
a UInt64,
|
||||||
|
b String,
|
||||||
|
c Float64
|
||||||
|
)
|
||||||
|
ENGINE ReplicatedMergeTree('/clickhouse/tables/{database}/test_02427_mutate_and_zero_copy_replication/alter', '1')
|
||||||
|
ORDER BY tuple()
|
||||||
|
SETTINGS old_parts_lifetime=0, cleanup_delay_period=300, cleanup_delay_period_random_add=300, min_bytes_for_wide_part = 0;
|
||||||
|
|
||||||
|
CREATE TABLE mutate_and_zero_copy_replication2
|
||||||
|
(
|
||||||
|
a UInt64,
|
||||||
|
b String,
|
||||||
|
c Float64
|
||||||
|
)
|
||||||
|
ENGINE ReplicatedMergeTree('/clickhouse/tables/{database}/test_02427_mutate_and_zero_copy_replication/alter', '2')
|
||||||
|
ORDER BY tuple()
|
||||||
|
SETTINGS old_parts_lifetime=0, cleanup_delay_period=300, cleanup_delay_period_random_add=300;
|
||||||
|
|
||||||
|
|
||||||
|
INSERT INTO mutate_and_zero_copy_replication1 VALUES (1, '1', 1.0);
|
||||||
|
SYSTEM SYNC REPLICA mutate_and_zero_copy_replication2;
|
||||||
|
|
||||||
|
SET mutations_sync=2;
|
||||||
|
|
||||||
|
ALTER TABLE mutate_and_zero_copy_replication1 UPDATE a = 2 WHERE 1;
|
||||||
|
|
||||||
|
DROP TABLE mutate_and_zero_copy_replication1 SYNC;
|
||||||
|
|
||||||
|
DETACH TABLE mutate_and_zero_copy_replication2;
|
||||||
|
ATTACH TABLE mutate_and_zero_copy_replication2;
|
||||||
|
|
||||||
|
SELECT * FROM mutate_and_zero_copy_replication2 WHERE NOT ignore(*);
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS mutate_and_zero_copy_replication1;
|
||||||
|
DROP TABLE IF EXISTS mutate_and_zero_copy_replication2;
|
Loading…
Reference in New Issue
Block a user