From c94e8b104472d1b4506d420a6ac7c141e40f87a7 Mon Sep 17 00:00:00 2001 From: ivanmorozov333 Date: Thu, 25 Jul 2024 12:15:32 +0300 Subject: [PATCH] dont create delete flag column in indexation if it is not necessary --- ydb/core/tx/columnshard/engines/changes/indexation.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ydb/core/tx/columnshard/engines/changes/indexation.cpp b/ydb/core/tx/columnshard/engines/changes/indexation.cpp index 9fced30f5c9e..242c3939ecc4 100644 --- a/ydb/core/tx/columnshard/engines/changes/indexation.cpp +++ b/ydb/core/tx/columnshard/engines/changes/indexation.cpp @@ -160,6 +160,9 @@ TConclusionStatus TInsertColumnEngineChanges::DoConstructBlobs(TConstructionCont auto blobSchema = context.SchemaVersions.GetSchemaVerified(inserted.GetSchemaVersion()); std::vector filteredIds = inserted.GetMeta().GetSchemaSubset().Apply(blobSchema->GetIndexInfo().GetColumnIds(true)); usageColumnIds.insert(filteredIds.begin(), filteredIds.end()); + if (inserted.GetMeta().GetModificationType() == NEvWrite::EModificationType::Delete) { + usageColumnIds.emplace((ui32)IIndexInfo::ESpecialColumn::DELETE_FLAG); + } if (usageColumnIds.size() == resultSchema->GetIndexInfo().GetColumnIds(true).size()) { break; } @@ -179,8 +182,10 @@ TConclusionStatus TInsertColumnEngineChanges::DoConstructBlobs(TConstructionCont } IIndexInfo::AddSnapshotColumns(*batch, inserted.GetSnapshot()); - IIndexInfo::AddDeleteFlagsColumn(*batch, inserted.GetMeta().GetModificationType() == NEvWrite::EModificationType::Delete); - usageColumnIds.insert(IIndexInfo::GetSystemColumnIds().begin(), IIndexInfo::GetSystemColumnIds().end()); + if (usageColumnIds.contains((ui32)IIndexInfo::ESpecialColumn::DELETE_FLAG)) { + IIndexInfo::AddDeleteFlagsColumn(*batch, inserted.GetMeta().GetModificationType() == NEvWrite::EModificationType::Delete); + } + usageColumnIds.insert(IIndexInfo::GetSnapshotColumnIds().begin(), IIndexInfo::GetSnapshotColumnIds().end()); batch = resultSchema->NormalizeBatch(*blobSchema, batch, usageColumnIds).DetachResult(); pathBatches.Add(inserted, shardingFilterCommit, batch);