@@ -251,17 +251,17 @@ class TTopicFormatHandler : public NActors::TActor<TTopicFormatHandler>, public
251251 Y_ENSURE (false , " Expected embedded or list from purecalc" );
252252 }
253253
254- const auto offset = Self.Offsets ->at (rowId);
255- if (const auto nextOffset = Client->GetNextMessageOffset (); nextOffset && offset < *nextOffset) {
256- LOG_ROW_DISPATCHER_TRACE (" OnData, skip historical offset: " << offset << " , next message offset: " << *nextOffset);
254+ Offset = Self.Offsets ->at (rowId);
255+ if (const auto nextOffset = Client->GetNextMessageOffset (); nextOffset && Offset < *nextOffset) {
256+ LOG_ROW_DISPATCHER_TRACE (" OnData, skip historical offset: " << Offset << " , next message offset: " << *nextOffset);
257257 return ;
258258 }
259259
260- FilteredOffsets.push_back (offset);
261-
262260 auto newNumberRows = NumberRows;
263261 auto newDataPackerSize = DataPackerSize;
264262 if (filter) {
263+ FilteredOffsets.push_back (Offset);
264+
265265 Y_DEFER {
266266 // Values allocated on parser allocator and should be released
267267 FilteredRow.assign (Columns.size (), NYql::NUdf::TUnboxedValue ());
@@ -280,7 +280,7 @@ class TTopicFormatHandler : public NActors::TActor<TTopicFormatHandler>, public
280280 newDataPackerSize = DataPacker->PackedSizeEstimate ();
281281 }
282282
283- OnWatermark (offset , maybeWatermark);
283+ OnWatermark (Offset , maybeWatermark);
284284
285285 const auto numberRows = newNumberRows - NumberRows;
286286 const auto rowSize = newDataPackerSize - DataPackerSize;
@@ -289,9 +289,9 @@ class TTopicFormatHandler : public NActors::TActor<TTopicFormatHandler>, public
289289 return ;
290290 }
291291
292- LOG_ROW_DISPATCHER_TRACE (" OnBatchFinish, offset: " << offset << " , number rows: " << numberRows << " , row size: " << rowSize << " , watermark: " << Watermark);
292+ LOG_ROW_DISPATCHER_TRACE (" OnBatchFinish, offset: " << Offset << " , number rows: " << numberRows << " , row size: " << rowSize << " , watermark: " << Watermark);
293293
294- Client->AddDataToClient (offset , numberRows, rowSize, Watermark);
294+ Client->AddDataToClient (Offset , numberRows, rowSize, Watermark);
295295
296296 NumberRows = newNumberRows;
297297 DataPackerSize = newDataPackerSize;
@@ -322,6 +322,9 @@ class TTopicFormatHandler : public NActors::TActor<TTopicFormatHandler>, public
322322 void FinishPacking () {
323323 if (!DataPacker->IsEmpty () || !Watermark.Empty ()) {
324324 LOG_ROW_DISPATCHER_TRACE (" FinishPacking, batch size: " << DataPackerSize << " , number rows: " << FilteredOffsets.size ());
325+ if (FilteredOffsets.empty ()) {
326+ FilteredOffsets.push_back (Offset);
327+ }
325328 ClientData.emplace (NYql::MakeReadOnlyRope (DataPacker->Finish ()), std::move (FilteredOffsets), Watermark);
326329 NumberRows = 0 ;
327330 DataPackerSize = 0 ;
@@ -340,6 +343,7 @@ class TTopicFormatHandler : public NActors::TActor<TTopicFormatHandler>, public
340343 bool ClientStarted = false ;
341344
342345 // Filtered data
346+ ui64 Offset;
343347 ui64 NumberRows = 0 ;
344348 ui64 DataPackerSize = 0 ;
345349 TVector<NYql::NUdf::TUnboxedValue> FilteredRow; // Temporary value holder for DataPacket
0 commit comments