diff --git a/ydb/core/tx/columnshard/engines/changes/compaction/sparsed/logic.cpp b/ydb/core/tx/columnshard/engines/changes/compaction/sparsed/logic.cpp index fb682bf79e5b..d2c4e14f0664 100644 --- a/ydb/core/tx/columnshard/engines/changes/compaction/sparsed/logic.cpp +++ b/ydb/core/tx/columnshard/engines/changes/compaction/sparsed/logic.cpp @@ -134,7 +134,7 @@ bool TSparsedMerger::TPlainChunkCursor::AddIndexTo(const ui32 index, TWriter& wr bool TSparsedMerger::TSparsedChunkCursor::AddIndexTo(const ui32 index, TWriter& writer) { AFL_VERIFY(ChunkStartGlobalPosition <= index); - AFL_VERIFY(index == NextGlobalPosition); + AFL_VERIFY(index == NextGlobalPosition)("index", index)("next", NextGlobalPosition); writer.AddRealData(Chunk->GetColValue(), NextLocalPosition); return true; } @@ -163,7 +163,9 @@ void TSparsedMerger::TCursor::InitArrays(const ui32 position) { PlainCursor = make_shared(CurrentOwnedArray->GetArray(), &*CurrentOwnedArray); SparsedCursor = nullptr; } + AFL_VERIFY(CurrentOwnedArray->GetAddress().GetGlobalStartPosition() <= position); FinishGlobalPosition = CurrentOwnedArray->GetAddress().GetGlobalStartPosition() + CurrentOwnedArray->GetArray()->GetRecordsCount(); + AFL_VERIFY(position < FinishGlobalPosition); } } // namespace NKikimr::NOlap::NCompaction diff --git a/ydb/core/tx/columnshard/engines/changes/compaction/sparsed/logic.h b/ydb/core/tx/columnshard/engines/changes/compaction/sparsed/logic.h index f9a96d5bf974..9fc64606a092 100644 --- a/ydb/core/tx/columnshard/engines/changes/compaction/sparsed/logic.h +++ b/ydb/core/tx/columnshard/engines/changes/compaction/sparsed/logic.h @@ -65,6 +65,8 @@ class TSparsedMerger: public IColumnMerger { ChunkStartPosition = CurrentOwnedArray->GetAddress().GetGlobalStartPosition() + ChunkAddress->GetAddress().GetGlobalStartPosition(); ChunkFinishPosition = CurrentOwnedArray->GetAddress().GetGlobalStartPosition() + ChunkAddress->GetAddress().GetGlobalFinishPosition(); + AFL_VERIFY(position < ChunkFinishPosition)("finish", ChunkFinishPosition)("pos", position); + AFL_VERIFY(ChunkStartPosition <= position)("start", ChunkStartPosition)("pos", position); } public: @@ -78,7 +80,8 @@ class TSparsedMerger: public IColumnMerger { } bool AddIndexTo(const ui32 index, TWriter& writer); std::optional MoveToSignificant(const ui32 currentGlobalPosition, const TColumnMergeContext& context) { - AFL_VERIFY(ChunkStartPosition <= currentGlobalPosition); + AFL_VERIFY(ChunkStartPosition <= currentGlobalPosition)("start", ChunkStartPosition)("pos", currentGlobalPosition)( + "global_start", CurrentOwnedArray->GetAddress().GetGlobalStartPosition()); ui32 currentIndex = currentGlobalPosition; while (true) { if (CurrentOwnedArray->GetAddress().GetGlobalFinishPosition() <= currentIndex) { @@ -192,6 +195,7 @@ class TSparsedMerger: public IColumnMerger { if (FinishGlobalPosition == Array->GetRecordsCount()) { return FinishGlobalPosition; } else { + currentPosition = FinishGlobalPosition; InitArrays(FinishGlobalPosition); } }