From e0b83bde501645b5c56170b0c777a4e65b98fe4f Mon Sep 17 00:00:00 2001 From: Azat Khuzhin Date: Thu, 11 Apr 2024 15:02:46 +0200 Subject: [PATCH] Consider alter_conversions_mutations as valid only if part metadata version matches Signed-off-by: Azat Khuzhin --- src/Storages/MergeTree/ReplicatedMergeTreeQueue.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Storages/MergeTree/ReplicatedMergeTreeQueue.cpp b/src/Storages/MergeTree/ReplicatedMergeTreeQueue.cpp index ca9dd63126b..f433772c456 100644 --- a/src/Storages/MergeTree/ReplicatedMergeTreeQueue.cpp +++ b/src/Storages/MergeTree/ReplicatedMergeTreeQueue.cpp @@ -1902,8 +1902,11 @@ ReplicatedMergeTreeMergePredicate ReplicatedMergeTreeQueue::getMergePredicate(zk MutationCommands ReplicatedMergeTreeQueue::getAlterMutationCommandsForPart(const MergeTreeData::DataPartPtr & part) const { + int32_t part_metadata_version = part->getMetadataVersion(); + int32_t metadata_version = storage.getInMemoryMetadataPtr()->getMetadataVersion(); + chassert(alter_conversions_mutations >= 0); - if (alter_conversions_mutations == 0) + if (alter_conversions_mutations == 0 && metadata_version == part_metadata_version) return {}; std::unique_lock lock(state_mutex); @@ -1913,7 +1916,6 @@ MutationCommands ReplicatedMergeTreeQueue::getAlterMutationCommandsForPart(const return {}; Int64 part_data_version = part->info.getDataVersion(); - Int64 part_metadata_version = part->getMetadataVersion(); MutationCommands result; @@ -1939,7 +1941,7 @@ MutationCommands ReplicatedMergeTreeQueue::getAlterMutationCommandsForPart(const auto alter_version = entry->alter_version; if (alter_version != -1) { - if (alter_version > storage.getInMemoryMetadataPtr()->getMetadataVersion()) + if (alter_version > metadata_version) continue; /// We take commands with bigger metadata version