diff options
author | udovichenko-r <[email protected]> | 2022-05-20 22:08:54 +0300 |
---|---|---|
committer | udovichenko-r <[email protected]> | 2022-05-20 22:08:54 +0300 |
commit | d2cdba3b549eb9899fb5d0bc24d0db4066e59198 (patch) | |
tree | df3c31fd0d22b28f8f3624bca0215a986bf3b915 | |
parent | ca271e80c1fa41668f810a3e7a7f29949255215c (diff) |
[yql] Fix division be zero
YQL-12393
ref:b39f85b54434d692808c72306bf5d46871d4ebfe
-rw-r--r-- | ydb/library/yql/dq/runtime/dq_output_channel.cpp | 8 |
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); |