summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraneporada <[email protected]>2022-03-21 20:37:27 +0300
committeraneporada <[email protected]>2022-03-21 20:37:27 +0300
commitd8b7fbd32069dda0983d4e0047b080d7c8c2c090 (patch)
treef9a0ba6ed16a7ef1deed77406be4d89e838924d9
parent11ec7b3d4dc40d3821ea5e30fca3075d13d7d7c1 (diff)
[YQL-14312] Aviod copying of unboxed values
ref:c349a8e3e59bc99fdd6c894b69eebf4186d2cedf
-rw-r--r--ydb/library/yql/minikql/computation/mkql_computation_list_adapter.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/ydb/library/yql/minikql/computation/mkql_computation_list_adapter.h b/ydb/library/yql/minikql/computation/mkql_computation_list_adapter.h
index 2b3b7fb8865..95798ca383e 100644
--- a/ydb/library/yql/minikql/computation/mkql_computation_list_adapter.h
+++ b/ydb/library/yql/minikql/computation/mkql_computation_list_adapter.h
@@ -59,15 +59,15 @@ public:
class TDictIterator : public TComputationValue<TDictIterator> {
public:
- TDictIterator(TMemoryUsageInfo* memInfo, TIterator iter)
+ TDictIterator(TMemoryUsageInfo* memInfo, THolder<TIterator>&& iter)
: TComputationValue<TDictIterator>(memInfo)
- , Iter(iter)
+ , Iter(std::move(iter))
, Index(Max<ui64>())
{}
private:
bool Next(NUdf::TUnboxedValue& key) override {
- if (NUdf::TBoxedValueAccessor::Skip(Iter)) {
+ if (NUdf::TBoxedValueAccessor::Skip(*Iter)) {
key = NUdf::TUnboxedValuePod(++Index);
return true;
}
@@ -76,7 +76,7 @@ public:
}
bool NextPair(NUdf::TUnboxedValue& key, NUdf::TUnboxedValue& payload) override {
- if (NUdf::TBoxedValueAccessor::Next(Iter, payload)) {
+ if (NUdf::TBoxedValueAccessor::Next(*Iter, payload)) {
key = NUdf::TUnboxedValuePod(++Index);
return true;
}
@@ -85,7 +85,7 @@ public:
}
bool Skip() override {
- if (NUdf::TBoxedValueAccessor::Skip(Iter)) {
+ if (NUdf::TBoxedValueAccessor::Skip(*Iter)) {
++Index;
return true;
}
@@ -93,7 +93,7 @@ public:
return false;
}
- TIterator Iter;
+ THolder<TIterator> Iter;
ui64 Index;
};
@@ -180,11 +180,11 @@ private:
}
NUdf::TUnboxedValue GetKeysIterator() const override {
- return NUdf::TUnboxedValuePod(new TDictIterator(this->GetMemInfo(), TIterator(this->GetMemInfo(), List, ItemFactory, Start, Finish, Reversed)));
+ return NUdf::TUnboxedValuePod(new TDictIterator(this->GetMemInfo(), MakeHolder<TIterator>(this->GetMemInfo(), List, ItemFactory, Start, Finish, Reversed)));
}
NUdf::TUnboxedValue GetDictIterator() const override {
- return NUdf::TUnboxedValuePod(new TDictIterator(this->GetMemInfo(), TIterator(this->GetMemInfo(), List, ItemFactory, Start, Finish, Reversed)));
+ return NUdf::TUnboxedValuePod(new TDictIterator(this->GetMemInfo(), MakeHolder<TIterator>(this->GetMemInfo(), List, ItemFactory, Start, Finish, Reversed)));
}
ui64 GetDictLength() const override {