aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorudovichenko-r <rvu@ydb.tech>2022-09-09 19:52:31 +0300
committerudovichenko-r <rvu@ydb.tech>2022-09-09 19:52:31 +0300
commitd7e6c4d86c2894508eb9bb4e1e64af40d4b91e70 (patch)
tree4e3be4028d718c64c872da91a2944300c4137550
parent6ef941e4adcfcf871e004675e27442a91d82fb82 (diff)
downloadydb-d7e6c4d86c2894508eb9bb4e1e64af40d4b91e70.tar.gz
[mkql] Fix
-rw-r--r--ydb/library/yql/minikql/comp_nodes/mkql_map_join.cpp2
-rw-r--r--ydb/library/yql/minikql/computation/mkql_computation_node.cpp4
-rw-r--r--ydb/library/yql/minikql/computation/mkql_computation_node.h7
3 files changed, 7 insertions, 6 deletions
diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_map_join.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_map_join.cpp
index 72299a0c51..c8c3307047 100644
--- a/ydb/library/yql/minikql/comp_nodes/mkql_map_join.cpp
+++ b/ydb/library/yql/minikql/comp_nodes/mkql_map_join.cpp
@@ -33,7 +33,7 @@ protected:
, InputsIndex(mutables.CurValueIndex)
, WideFieldsIndex(mutables.CurWideFieldsIndex)
{
- mutables.DeferWideFieldsInit(UsedInputs.size());
+ mutables.DeferWideFieldsInit(inputWidth, UsedInputs);
}
#ifndef MKQL_DISABLE_CODEGEN
diff --git a/ydb/library/yql/minikql/computation/mkql_computation_node.cpp b/ydb/library/yql/minikql/computation/mkql_computation_node.cpp
index 4f366d9d73..7c199e000d 100644
--- a/ydb/library/yql/minikql/computation/mkql_computation_node.cpp
+++ b/ydb/library/yql/minikql/computation/mkql_computation_node.cpp
@@ -39,8 +39,8 @@ TComputationContext::TComputationContext(const THolderFactory& holderFactory,
{
std::fill_n(MutableValues.get(), mutables.CurValueIndex, NUdf::TUnboxedValue(NUdf::TUnboxedValuePod::Invalid()));
- for (const auto& [mutableIdx, fieldIdx, count] : mutables.WideFieldInitialize) {
- for (ui32 i = 0; i < count; ++i) {
+ for (const auto& [mutableIdx, fieldIdx, used] : mutables.WideFieldInitialize) {
+ for (ui32 i: used) {
WideFields[fieldIdx + i] = &MutableValues[mutableIdx + i];
}
}
diff --git a/ydb/library/yql/minikql/computation/mkql_computation_node.h b/ydb/library/yql/minikql/computation/mkql_computation_node.h
index c38308a76d..2d8061c716 100644
--- a/ydb/library/yql/minikql/computation/mkql_computation_node.h
+++ b/ydb/library/yql/minikql/computation/mkql_computation_node.h
@@ -64,7 +64,7 @@ struct TComputationOptsFull: public TComputationOpts {
struct TWideFieldsInitInfo {
ui32 MutablesIndex = 0;
ui32 WideFieldsIndex = 0;
- ui32 Count = 0;
+ std::set<ui32> Used;
};
struct TComputationMutables {
@@ -73,8 +73,9 @@ struct TComputationMutables {
ui32 CurWideFieldsIndex = 0U;
std::vector<TWideFieldsInitInfo> WideFieldInitialize;
- void DeferWideFieldsInit(ui32 count) {
- WideFieldInitialize.push_back({CurValueIndex, CurWideFieldsIndex, count});
+ void DeferWideFieldsInit(ui32 count, std::set<ui32> used) {
+ Y_VERIFY_DEBUG(AllOf(used, [count](ui32 i) { return i < count; }));
+ WideFieldInitialize.push_back({CurValueIndex, CurWideFieldsIndex, std::move(used)});
CurValueIndex += count;
CurWideFieldsIndex += count;
}