diff options
author | Andrey Neporada <aneporada@ydb.tech> | 2024-04-22 18:29:25 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-22 18:29:25 +0300 |
commit | 07fca1b421ac8f3e1e0c34412ef2c23393d619b3 (patch) | |
tree | 820efd95ffceaa728ce427ffaa629f43b4821a36 | |
parent | 6823b419d923d8854473893de9747e7a73c4bc1d (diff) | |
download | ydb-07fca1b421ac8f3e1e0c34412ef2c23393d619b3.tar.gz |
[YQL-18194] Prepare to limit builders memory consumption in WideToBlocks (#3996)
-rw-r--r-- | ydb/library/yql/minikql/comp_nodes/mkql_blocks.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_blocks.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_blocks.cpp index 00291c43fa..67029518d1 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_blocks.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_blocks.cpp @@ -93,7 +93,7 @@ public: break; } break; - } while (++s.Rows_ < MaxLength_); + } while (++s.Rows_ < MaxLength_ && s.BuilderAllocatedSize_ <= s.MaxBuilderAllocatedSize_); if (s.Rows_) s.MakeBlocks(ctx.HolderFactory); @@ -257,6 +257,8 @@ private: struct TState : public TBlockState { size_t Rows_ = 0; bool IsFinished_ = false; + size_t BuilderAllocatedSize_ = 0; + size_t MaxBuilderAllocatedSize_ = 0; std::vector<std::unique_ptr<IArrayBuilder>> Builders_; TState(TMemoryUsageInfo* memInfo, TComputationContext& ctx, const TVector<TType*>& types, size_t maxLength, NUdf::TUnboxedValue**const fields) : TBlockState(memInfo, types.size() + 1U) |