diff --git a/dbms/src/Storages/StorageReplicatedMergeTree.cpp b/dbms/src/Storages/StorageReplicatedMergeTree.cpp index 244dca2a044..c37623986c3 100644 --- a/dbms/src/Storages/StorageReplicatedMergeTree.cpp +++ b/dbms/src/Storages/StorageReplicatedMergeTree.cpp @@ -4888,7 +4888,7 @@ void StorageReplicatedMergeTree::replacePartitionFrom(const StoragePtr & source_ String hash_hex = src_part->checksums.getTotalChecksumHex(); - LOG_INFO(log, "Trying to attach " << src_part->name << " with hash_hex " << hash_hex); + LOG_INFO(log, "Trying to " << (replace ? "replace " : "attach ") << src_part->name << " with hash_hex " << hash_hex); String block_id_path = replace ? "" : (zookeeper_path + "/blocks/" + partition_id + "_replace_from_" + hash_hex); @@ -4910,8 +4910,9 @@ void StorageReplicatedMergeTree::replacePartitionFrom(const StoragePtr & source_ part_checksums.emplace_back(hash_hex); } - /// We have nothing to do - return - if (src_parts.empty()) + /// In case of ATTACH PARTITION FROM we have nothing to do - return. Because no data will be added or removed. + /// In case of REPLACE PARTITION we can replace existing partition with empty. + if (!replace && src_parts.empty()) return; ReplicatedMergeTreeLogEntryData entry;