diff options
author | udovichenko-r <rvu@ydb.tech> | 2022-09-09 19:52:31 +0300 |
---|---|---|
committer | udovichenko-r <rvu@ydb.tech> | 2022-09-09 19:52:31 +0300 |
commit | d7e6c4d86c2894508eb9bb4e1e64af40d4b91e70 (patch) | |
tree | 4e3be4028d718c64c872da91a2944300c4137550 | |
parent | 6ef941e4adcfcf871e004675e27442a91d82fb82 (diff) | |
download | ydb-d7e6c4d86c2894508eb9bb4e1e64af40d4b91e70.tar.gz |
[mkql] Fix
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; } |