Skip to content

Commit a4d0e68

Browse files
Try remaking Builders for every output (#11164)
1 parent 07eddfc commit a4d0e68

File tree

1 file changed

+2
-15
lines changed

1 file changed

+2
-15
lines changed

ydb/library/yql/dq/runtime/dq_output_consumer.cpp

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -346,9 +346,6 @@ class TDqOutputHashPartitionConsumerBlock : public IDqOutputConsumer {
346346
blockTypes.emplace_back(blockType->GetItemType());
347347
}
348348
}
349-
ui64 maxBlockLen = CalcMaxBlockLength(blockTypes.begin(), blockTypes.end(), helper);
350-
YQL_ENSURE(maxBlockLen > 0);
351-
MakeBuilders(maxBlockLen);
352349

353350
TBlockTypeHelper blockHelper;
354351
for (auto& column : KeyColumns_) {
@@ -391,22 +388,14 @@ class TDqOutputHashPartitionConsumerBlock : public IDqOutputConsumer {
391388
outputBlockIndexes[GetHashPartitionIndex(datums.data(), i)].push_back(i);
392389
}
393390

394-
ui64 maxLen = 0;
395-
for (auto& indexes : outputBlockIndexes) {
396-
maxLen = std::max(maxLen, indexes.size());
397-
}
398-
399-
if (maxLen > MaxOutputBlockLen_) {
400-
MakeBuilders(maxLen);
401-
}
402-
403391
TVector<std::unique_ptr<TArgsDechunker>> outputData;
404392
for (size_t i = 0; i < Outputs_.size(); ++i) {
405393
ui64 outputBlockLen = outputBlockIndexes[i].size();
406394
if (!outputBlockLen) {
407395
outputData.emplace_back();
408396
continue;
409397
}
398+
MakeBuilders(outputBlockLen);
410399
const ui64* indexes = outputBlockIndexes[i].data();
411400

412401
std::vector<arrow::Datum> output;
@@ -419,7 +408,7 @@ class TDqOutputHashPartitionConsumerBlock : public IDqOutputConsumer {
419408
dataItem.Data = src->array().get();
420409
dataItem.StartOffset = 0;
421410
Builders_[j]->AddMany(&dataItem, 1, indexes, outputBlockLen);
422-
output.emplace_back(Builders_[j]->Build(false));
411+
output.emplace_back(Builders_[j]->Build(true));
423412
}
424413
}
425414
outputData.emplace_back(std::make_unique<TArgsDechunker>(std::move(output)));
@@ -528,7 +517,6 @@ class TDqOutputHashPartitionConsumerBlock : public IDqOutputConsumer {
528517
Builders_.emplace_back();
529518
}
530519
}
531-
MaxOutputBlockLen_ = maxBlockLen;
532520
}
533521

534522
private:
@@ -546,7 +534,6 @@ class TDqOutputHashPartitionConsumerBlock : public IDqOutputConsumer {
546534
TVector<std::unique_ptr<IBlockReader>> Readers_;
547535
TVector<std::unique_ptr<IArrayBuilder>> Builders_;
548536

549-
ui64 MaxOutputBlockLen_ = 0;
550537
mutable bool IsWaitingFlag_ = false;
551538
};
552539

0 commit comments

Comments
 (0)