@@ -58,11 +58,15 @@ class TSparsedMerger: public IColumnMerger {
58
58
59
59
void InitArrays (const ui32 position) {
60
60
AFL_VERIFY (!ChunkAddress || ChunkFinishPosition <= position);
61
- ChunkAddress = CurrentChunkedArray->GetChunk (ChunkAddress, position);
61
+ AFL_VERIFY (CurrentOwnedArray->GetAddress ().GetGlobalStartPosition () <= position)(" pos" , position)(
62
+ " global" , CurrentOwnedArray->GetAddress ().GetGlobalStartPosition ());
63
+ ChunkAddress = CurrentChunkedArray->GetChunk (ChunkAddress, position - CurrentOwnedArray->GetAddress ().GetGlobalStartPosition ());
62
64
AFL_VERIFY (ChunkAddress);
63
65
ChunkStartPosition = CurrentOwnedArray->GetAddress ().GetGlobalStartPosition () + ChunkAddress->GetAddress ().GetGlobalStartPosition ();
64
66
ChunkFinishPosition =
65
67
CurrentOwnedArray->GetAddress ().GetGlobalStartPosition () + ChunkAddress->GetAddress ().GetGlobalFinishPosition ();
68
+ AFL_VERIFY (position < ChunkFinishPosition)(" finish" , ChunkFinishPosition)(" pos" , position);
69
+ AFL_VERIFY (ChunkStartPosition <= position)(" start" , ChunkStartPosition)(" pos" , position);
66
70
}
67
71
68
72
public:
@@ -76,14 +80,15 @@ class TSparsedMerger: public IColumnMerger {
76
80
}
77
81
bool AddIndexTo (const ui32 index, TWriter& writer);
78
82
std::optional<ui32> MoveToSignificant (const ui32 currentGlobalPosition, const TColumnMergeContext& context) {
79
- AFL_VERIFY (ChunkStartPosition <= currentGlobalPosition);
83
+ AFL_VERIFY (ChunkStartPosition <= currentGlobalPosition)(" start" , ChunkStartPosition)(" pos" , currentGlobalPosition)(
84
+ " global_start" , CurrentOwnedArray->GetAddress ().GetGlobalStartPosition ());
80
85
ui32 currentIndex = currentGlobalPosition;
81
86
while (true ) {
82
87
if (CurrentOwnedArray->GetAddress ().GetGlobalFinishPosition () <= currentIndex) {
83
88
return {};
84
89
}
85
90
if (ChunkFinishPosition <= currentIndex) {
86
- InitArrays (currentGlobalPosition );
91
+ InitArrays (currentIndex );
87
92
continue ;
88
93
}
89
94
for (; currentIndex < ChunkFinishPosition; ++currentIndex) {
@@ -190,6 +195,7 @@ class TSparsedMerger: public IColumnMerger {
190
195
if (FinishGlobalPosition == Array->GetRecordsCount ()) {
191
196
return FinishGlobalPosition;
192
197
} else {
198
+ currentPosition = FinishGlobalPosition;
193
199
InitArrays (FinishGlobalPosition);
194
200
}
195
201
}
0 commit comments