summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorudovichenko-r <[email protected]>2022-05-20 22:08:54 +0300
committerudovichenko-r <[email protected]>2022-05-20 22:08:54 +0300
commitd2cdba3b549eb9899fb5d0bc24d0db4066e59198 (patch)
treedf3c31fd0d22b28f8f3624bca0215a986bf3b915
parentca271e80c1fa41668f810a3e7a7f29949255215c (diff)
[yql] Fix division be zero
YQL-12393 ref:b39f85b54434d692808c72306bf5d46871d4ebfe
-rw-r--r--ydb/library/yql/dq/runtime/dq_output_channel.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/ydb/library/yql/dq/runtime/dq_output_channel.cpp b/ydb/library/yql/dq/runtime/dq_output_channel.cpp
index e543e1722b1..ac4ca1accf0 100644
--- a/ydb/library/yql/dq/runtime/dq_output_channel.cpp
+++ b/ydb/library/yql/dq/runtime/dq_output_channel.cpp
@@ -146,7 +146,7 @@ public:
}
bytes = std::min(bytes, MaxChunkBytes);
- ui64 takeRows = std::max<ui64>(bytes / EstimatedRowBytes, 1);
+ ui64 takeRows = EstimatedRowBytes ? std::max<ui64>(bytes / EstimatedRowBytes, 1) : 1;
takeRows = std::min<ui64>(takeRows, Data.size());
DLOG("About to take " << takeRows << " rows");
@@ -161,8 +161,10 @@ public:
data = DataSerializer.Serialize(Data.begin(), last, OutputType);
}
- EstimatedRowBytes = EstimatedRowBytes * 0.6 + std::max<ui64>(data.GetRaw().Size() / takeRows, 1) * 0.4;
- DLOG("Recalc estimated row size: " << EstimatedRowBytes);
+ if (EstimatedRowBytes) {
+ EstimatedRowBytes = EstimatedRowBytes * 0.6 + std::max<ui64>(data.GetRaw().Size() / takeRows, 1) * 0.4;
+ DLOG("Recalc estimated row size: " << EstimatedRowBytes);
+ }
while (data.GetRaw().size() >= ChunkSizeHardLimit && takeRows > 1) {
ui64 newTakeRows = std::max<ui64>(bytes / EstimatedRowBytes, 1);