aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authora-romanov <Anton.Romanov@ydb.tech>2022-12-02 17:23:51 +0300
committera-romanov <Anton.Romanov@ydb.tech>2022-12-02 17:23:51 +0300
commit138092b4b37bfcd02e6f056b9195996616a86d8f (patch)
tree805e0d37a2bbce92d96142eb5187150b2f1a4dfd
parent4ecc76e7ff2c1065848304701286920ec04e838c (diff)
downloadydb-138092b4b37bfcd02e6f056b9195996616a86d8f.tar.gz
get rid of TODO.
-rw-r--r--ydb/library/yql/minikql/comp_nodes/mkql_flatmap.cpp45
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);