aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Neporada <aneporada@ydb.tech>2024-04-22 18:29:25 +0300
committerGitHub <noreply@github.com>2024-04-22 18:29:25 +0300
commit07fca1b421ac8f3e1e0c34412ef2c23393d619b3 (patch)
tree820efd95ffceaa728ce427ffaa629f43b4821a36
parent6823b419d923d8854473893de9747e7a73c4bc1d (diff)
downloadydb-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.cpp4
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)