summaryrefslogtreecommitdiffstats
path: root/yql/essentials/minikql/computation/mkql_computation_node_dict_ut.cpp
diff options
context:
space:
mode:
authorvvvv <[email protected]>2025-10-09 12:25:18 +0300
committervvvv <[email protected]>2025-10-09 12:57:17 +0300
commitcb77d014972b2cdb27d2e6d979fc3a2772b27ad4 (patch)
tree7f3bcd8ce71c6bd0f3ccc11e31b9f665475b819e /yql/essentials/minikql/computation/mkql_computation_node_dict_ut.cpp
parentd58a8990d353b051c27e1069141117fdfde64358 (diff)
YQL-20086 minikql
commit_hash:e96f7390db5fcbe7e9f64f898141a263ad522daa
Diffstat (limited to 'yql/essentials/minikql/computation/mkql_computation_node_dict_ut.cpp')
-rw-r--r--yql/essentials/minikql/computation/mkql_computation_node_dict_ut.cpp120
1 files changed, 59 insertions, 61 deletions
diff --git a/yql/essentials/minikql/computation/mkql_computation_node_dict_ut.cpp b/yql/essentials/minikql/computation/mkql_computation_node_dict_ut.cpp
index ae2e64c77cd..7c940247b21 100644
--- a/yql/essentials/minikql/computation/mkql_computation_node_dict_ut.cpp
+++ b/yql/essentials/minikql/computation/mkql_computation_node_dict_ut.cpp
@@ -32,8 +32,8 @@ struct TSetup {
THolder<IComputationGraph> BuildGraph(TRuntimeNode pgm, const std::vector<TNode*>& entryPoints = std::vector<TNode*>()) {
Explorer.Walk(pgm.GetNode(), *Env);
TComputationPatternOpts opts(Alloc.Ref(), *Env, GetBuiltinFactory(),
- FunctionRegistry.Get(),
- NUdf::EValidateMode::None, NUdf::EValidatePolicy::Exception, "OFF", EGraphPerProcess::Multi);
+ FunctionRegistry.Get(),
+ NUdf::EValidateMode::None, NUdf::EValidatePolicy::Exception, "OFF", EGraphPerProcess::Multi);
Pattern = MakeComputationPattern(Explorer, pgm, entryPoints, opts);
TComputationOptsFull compOpts = opts.ToComputationOptions(*RandomProvider, *TimeProvider);
return Pattern->Clone(compOpts);
@@ -50,75 +50,73 @@ struct TSetup {
TExploringNodeVisitor Explorer;
IComputationPattern::TPtr Pattern;
};
-}
+} // namespace
Y_UNIT_TEST_SUITE(TestCompactMultiDict) {
- Y_UNIT_TEST(TestIterate) {
- TScopedAlloc alloc(__LOCATION__);
+Y_UNIT_TEST(TestIterate) {
+ TScopedAlloc alloc(__LOCATION__);
- TSetup setup(alloc);
+ TSetup setup(alloc);
- const std::vector<std::pair<ui32, std::vector<ui32>>> items = {{1, {1, 2}}, {2, {1}}, {3, {0}}, {6, {1, 7}}};
+ const std::vector<std::pair<ui32, std::vector<ui32>>> items = {{1, {1, 2}}, {2, {1}}, {3, {0}}, {6, {1, 7}}};
- TProgramBuilder& pgmBuilder = *setup.PgmBuilder;
- TVector<TRuntimeNode> rItems;
- for (auto& [k, vv]: items) {
- for (auto& v: vv) {
- rItems.push_back(pgmBuilder.NewTuple({pgmBuilder.NewDataLiteral<ui32>(k), pgmBuilder.NewDataLiteral<ui32>(v)}));
- }
+ TProgramBuilder& pgmBuilder = *setup.PgmBuilder;
+ TVector<TRuntimeNode> rItems;
+ for (auto& [k, vv] : items) {
+ for (auto& v : vv) {
+ rItems.push_back(pgmBuilder.NewTuple({pgmBuilder.NewDataLiteral<ui32>(k), pgmBuilder.NewDataLiteral<ui32>(v)}));
}
- auto ui32Type = pgmBuilder.NewDataType(NUdf::TDataType<ui32>::Id);
- auto list = pgmBuilder.NewList(pgmBuilder.NewTupleType({ui32Type, ui32Type}), rItems);
+ }
+ auto ui32Type = pgmBuilder.NewDataType(NUdf::TDataType<ui32>::Id);
+ auto list = pgmBuilder.NewList(pgmBuilder.NewTupleType({ui32Type, ui32Type}), rItems);
- auto dict = pgmBuilder.ToHashedDict(list, /*all*/true,
- [&pgmBuilder](TRuntimeNode item) { return pgmBuilder.Nth(item, 0); },
- [&pgmBuilder](TRuntimeNode item) { return pgmBuilder.Nth(item, 1); },
- /*isCompact*/true,
- items.size());
+ auto dict = pgmBuilder.ToHashedDict(list, /*all*/ true,
+ [&pgmBuilder](TRuntimeNode item) { return pgmBuilder.Nth(item, 0); },
+ [&pgmBuilder](TRuntimeNode item) { return pgmBuilder.Nth(item, 1); },
+ /*isCompact*/ true,
+ items.size());
- auto graph = setup.BuildGraph(dict, {});
- NUdf::TUnboxedValue res = graph->GetValue();
+ auto graph = setup.BuildGraph(dict, {});
+ NUdf::TUnboxedValue res = graph->GetValue();
- std::vector<ui32> keyVals;
- for (NUdf::TUnboxedValue keys = res.GetKeysIterator(), v; keys.Next(v);) {
- keyVals.push_back(v.Get<ui32>());
- }
- UNIT_ASSERT_VALUES_EQUAL(keyVals.size(), items.size());
- std::sort(keyVals.begin(), keyVals.end());
- UNIT_ASSERT(
- std::equal(keyVals.begin(), keyVals.end(), items.begin(),
- [](ui32 l, const std::pair<ui32, std::vector<ui32>>& r) { return l == r.first; }
- )
- );
-
- std::vector<std::vector<ui32>> origPayloads;
- for (auto& [k, vv]: items) {
- origPayloads.push_back(vv);
- std::sort(origPayloads.back().begin(), origPayloads.back().end());
- }
- std::sort(origPayloads.begin(), origPayloads.end());
-
- std::vector<std::vector<ui32>> payloadVals;
- for (NUdf::TUnboxedValue payloads = res.GetPayloadsIterator(), v; payloads.Next(v);) {
- payloadVals.emplace_back();
- for (NUdf::TUnboxedValue i = v.GetListIterator(), p; i.Next(p);) {
- payloadVals.back().push_back(p.Get<ui32>());
- }
- std::sort(payloadVals.back().begin(), payloadVals.back().end());
+ std::vector<ui32> keyVals;
+ for (NUdf::TUnboxedValue keys = res.GetKeysIterator(), v; keys.Next(v);) {
+ keyVals.push_back(v.Get<ui32>());
+ }
+ UNIT_ASSERT_VALUES_EQUAL(keyVals.size(), items.size());
+ std::sort(keyVals.begin(), keyVals.end());
+ UNIT_ASSERT(
+ std::equal(keyVals.begin(), keyVals.end(), items.begin(),
+ [](ui32 l, const std::pair<ui32, std::vector<ui32>>& r) { return l == r.first; }));
+
+ std::vector<std::vector<ui32>> origPayloads;
+ for (auto& [k, vv] : items) {
+ origPayloads.push_back(vv);
+ std::sort(origPayloads.back().begin(), origPayloads.back().end());
+ }
+ std::sort(origPayloads.begin(), origPayloads.end());
+
+ std::vector<std::vector<ui32>> payloadVals;
+ for (NUdf::TUnboxedValue payloads = res.GetPayloadsIterator(), v; payloads.Next(v);) {
+ payloadVals.emplace_back();
+ for (NUdf::TUnboxedValue i = v.GetListIterator(), p; i.Next(p);) {
+ payloadVals.back().push_back(p.Get<ui32>());
}
- std::sort(payloadVals.begin(), payloadVals.end());
- UNIT_ASSERT_VALUES_EQUAL(origPayloads, payloadVals);
-
- std::vector<std::pair<ui32, std::vector<ui32>>> vals;
- for (NUdf::TUnboxedValue values = res.GetDictIterator(), k, payloads; values.NextPair(k, payloads);) {
- vals.emplace_back(k.Get<ui32>(), std::vector<ui32>{});
- for (NUdf::TUnboxedValue i = payloads.GetListIterator(), p; i.Next(p);) {
- vals.back().second.push_back(p.Get<ui32>());
- }
- std::sort(vals.back().second.begin(), vals.back().second.end());
+ std::sort(payloadVals.back().begin(), payloadVals.back().end());
+ }
+ std::sort(payloadVals.begin(), payloadVals.end());
+ UNIT_ASSERT_VALUES_EQUAL(origPayloads, payloadVals);
+
+ std::vector<std::pair<ui32, std::vector<ui32>>> vals;
+ for (NUdf::TUnboxedValue values = res.GetDictIterator(), k, payloads; values.NextPair(k, payloads);) {
+ vals.emplace_back(k.Get<ui32>(), std::vector<ui32>{});
+ for (NUdf::TUnboxedValue i = payloads.GetListIterator(), p; i.Next(p);) {
+ vals.back().second.push_back(p.Get<ui32>());
}
- UNIT_ASSERT_VALUES_EQUAL(items, vals);
+ std::sort(vals.back().second.begin(), vals.back().second.end());
}
+ UNIT_ASSERT_VALUES_EQUAL(items, vals);
}
-}
-}
+} // Y_UNIT_TEST_SUITE(TestCompactMultiDict)
+} // namespace NMiniKQL
+} // namespace NKikimr