diff options
author | a-romanov <Anton.Romanov@ydb.tech> | 2022-12-02 17:23:51 +0300 |
---|---|---|
committer | a-romanov <Anton.Romanov@ydb.tech> | 2022-12-02 17:23:51 +0300 |
commit | 138092b4b37bfcd02e6f056b9195996616a86d8f (patch) | |
tree | 805e0d37a2bbce92d96142eb5187150b2f1a4dfd | |
parent | 4ecc76e7ff2c1065848304701286920ec04e838c (diff) | |
download | ydb-138092b4b37bfcd02e6f056b9195996616a86d8f.tar.gz |
get rid of TODO.
-rw-r--r-- | ydb/library/yql/minikql/comp_nodes/mkql_flatmap.cpp | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_flatmap.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_flatmap.cpp index 8fb3894b047..a6ea5576ca4 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_flatmap.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_flatmap.cpp @@ -1403,33 +1403,31 @@ public: NUdf::TUnboxedValuePod DoCalculate(TComputationContext& ctx) const { auto list = this->List->GetValue(ctx); - - if (!ResultContainerOpt) { // TODO temporary disable for list of streams. - if (const auto elements = list.GetElements()) { - const auto size = list.GetListLength(); - TUnboxedValueVector values(size); - - auto it = values.begin(); - std::for_each(elements, elements + size, [&] (NUdf::TUnboxedValue item) { - this->Item->SetValue(ctx, std::move(item)); - *it = this->NewItem->GetValue(ctx); - if (IsMultiRowPerItem || *it) { - auto value = it->GetOptionalValueIf<!IsMultiRowPerItem && ResultContainerOpt>(); - *it++ = value; - } - }); - - if constexpr (IsMultiRowPerItem) { - return ctx.HolderFactory.ExtendList<ResultContainerOpt>(values.data(), values.size()); + if (const auto elements = list.GetElements()) { + const auto size = list.GetListLength(); + TUnboxedValueVector values(size); + + auto it = values.begin(); + std::for_each(elements, elements + size, [&] (NUdf::TUnboxedValue item) { + this->Item->SetValue(ctx, std::move(item)); + *it = this->NewItem->GetValue(ctx); + if (IsMultiRowPerItem || *it) { + auto value = it->GetOptionalValueIf<!IsMultiRowPerItem && ResultContainerOpt>(); + *it++ = value; } + }); - NUdf::TUnboxedValue* items = nullptr; - const auto result = ctx.HolderFactory.CreateDirectArrayHolder(std::distance(values.begin(), it), items); - std::move(values.begin(), it, items); - return result; + if constexpr (IsMultiRowPerItem) { + return ctx.HolderFactory.ExtendList<ResultContainerOpt>(values.data(), values.size()); } + + NUdf::TUnboxedValue* items = nullptr; + const auto result = ctx.HolderFactory.CreateDirectArrayHolder(std::distance(values.begin(), it), items); + std::move(values.begin(), it, items); + return result; } + return ctx.HolderFactory.Create<std::conditional_t<IsMultiRowPerItem, TListValue<ResultContainerOpt>, TSimpleListValue<ResultContainerOpt>>>(ctx, std::move(list), this->Item, this->NewItem); } @@ -1453,8 +1451,7 @@ public: const auto elementsType = PointerType::getUnqual(list->getType()); const auto elements = CallBoxedValueVirtualMethod<NUdf::TBoxedValueAccessor::EMethod::GetElements>(elementsType, list, ctx.Codegen, block); - const auto fill = ResultContainerOpt ? static_cast<Value*>(ConstantInt::getFalse(context)): // TODO temporary disable for list of streams. - CmpInst::Create(Instruction::ICmp, ICmpInst::ICMP_NE, elements, ConstantPointerNull::get(elementsType), "fill", block); + const auto fill = CmpInst::Create(Instruction::ICmp, ICmpInst::ICMP_NE, elements, ConstantPointerNull::get(elementsType), "fill", block); BranchInst::Create(hard, lazy, fill, block); |