@@ -42,7 +42,7 @@ struct TTestContext : public TBaseProviderContext {
42
42
const TVector<NDq::TJoinColumn>& ,
43
43
const TVector<NDq::TJoinColumn>& ,
44
44
EJoinAlgoType ,
45
- EJoinKind
45
+ EJoinKind
46
46
) override {
47
47
return true ;
48
48
}
@@ -53,8 +53,8 @@ std::shared_ptr<IBaseOptimizerNode> Enumerate(const std::shared_ptr<IBaseOptimiz
53
53
auto ctx = TProviderContext ();
54
54
TExprContext dummyCtx;
55
55
auto optimizer =
56
- std::unique_ptr<IOptimizerNew>(MakeNativeOptimizerNew (ctx, std::numeric_limits<ui32>::max (), dummyCtx));
57
-
56
+ std::unique_ptr<IOptimizerNew>(MakeNativeOptimizerNew (ctx, std::numeric_limits<ui32>::max (), dummyCtx, false ));
57
+
58
58
Y_ENSURE (root->Kind == EOptimizerNodeKind::JoinNodeType);
59
59
auto res = optimizer->JoinSearch (std::static_pointer_cast<TJoinOptimizerNode>(root), hints);
60
60
Cout << " Optimized Tree:" << Endl;
@@ -76,25 +76,25 @@ TVector<TJoinColumn> CollectConditions(const std::shared_ptr<IBaseOptimizerNode>
76
76
lhsConds.push_back (lhsCond);
77
77
lhsConds.push_back (rhsCond);
78
78
}
79
-
79
+
80
80
return lhsConds;
81
81
}
82
82
83
83
bool HaveSameConditions (const std::shared_ptr<IBaseOptimizerNode>& actual, std::shared_ptr<IBaseOptimizerNode> expected) {
84
84
auto actualConds = CollectConditions (actual);
85
85
auto expectedConds = CollectConditions (expected);
86
86
87
- return
88
- std::unordered_set<TJoinColumn, TJoinColumn::THashFunction>(actualConds.begin (), actualConds.end ()) ==
87
+ return
88
+ std::unordered_set<TJoinColumn, TJoinColumn::THashFunction>(actualConds.begin (), actualConds.end ()) ==
89
89
std::unordered_set<TJoinColumn, TJoinColumn::THashFunction>(expectedConds.begin (), expectedConds.end ());
90
90
}
91
91
92
92
bool HaveSameConditionCount (const std::shared_ptr<IBaseOptimizerNode>& actual, std::shared_ptr<IBaseOptimizerNode> expected) {
93
93
auto actualConds = CollectConditions (actual);
94
94
auto expectedConds = CollectConditions (expected);
95
-
95
+
96
96
return actualConds.size () == expectedConds.size () &&
97
- std::unordered_set<TJoinColumn, TJoinColumn::THashFunction>(actualConds.begin (), actualConds.end ()).size () ==
97
+ std::unordered_set<TJoinColumn, TJoinColumn::THashFunction>(actualConds.begin (), actualConds.end ()).size () ==
98
98
std::unordered_set<TJoinColumn, TJoinColumn::THashFunction>(expectedConds.begin (), expectedConds.end ()).size ();
99
99
}
100
100
@@ -107,7 +107,7 @@ Y_UNIT_TEST_SUITE(HypergraphBuild) {
107
107
108
108
for (size_t i = 0 ; i < nodeCount; ++i) {
109
109
for (size_t j = 0 ; j < nodeCount; ++j) {
110
- if (i == j) continue ;
110
+ if (i == j) continue ;
111
111
112
112
TNodeSet64 lhs; lhs[i] = 1 ;
113
113
TNodeSet64 rhs; rhs[j] = 1 ;
@@ -122,17 +122,17 @@ Y_UNIT_TEST_SUITE(HypergraphBuild) {
122
122
123
123
UNIT_ASSERT (graph.GetEdges ().size () == 6 );
124
124
125
- CheckClique (graph);
125
+ CheckClique (graph);
126
126
Enumerate (root);
127
127
}
128
128
129
129
Y_UNIT_TEST (SimpleChain4NodesTransitiveClosure) {
130
130
auto root = CreateChain (4 , " Ya hochu pitsu" );
131
131
auto graph = MakeJoinHypergraph<TNodeSet64>(root);
132
-
132
+
133
133
UNIT_ASSERT (graph.GetEdges ().size () == 12 );
134
134
135
- CheckClique (graph);
135
+ CheckClique (graph);
136
136
Enumerate (root);
137
137
}
138
138
@@ -142,7 +142,7 @@ Y_UNIT_TEST_SUITE(HypergraphBuild) {
142
142
143
143
UNIT_ASSERT (graph.GetEdges ().size () == 20 );
144
144
145
- CheckClique (graph);
145
+ CheckClique (graph);
146
146
Enumerate (root);
147
147
}
148
148
@@ -166,7 +166,7 @@ Y_UNIT_TEST_SUITE(HypergraphBuild) {
166
166
167
167
rhs = CreateChain (2 , " 228" , " c" );
168
168
169
- // a1 --228-- a2 --228-- a3 --1337-- b1 --1337-- b2 --123-- c1 --228-- c2
169
+ // a1 --228-- a2 --228-- a3 --1337-- b1 --1337-- b2 --123-- c1 --228-- c2
170
170
// ^ we don't want to have transitive closure between c and a
171
171
root = std::make_shared<TJoinOptimizerNode>(
172
172
root, rhs, leftKeys, rightKeys, EJoinKind::InnerJoin, EJoinAlgoType::Undefined, false , false
@@ -211,7 +211,7 @@ Y_UNIT_TEST_SUITE(HypergraphBuild) {
211
211
return root;
212
212
} else {
213
213
static_assert (
214
- std::is_convertible_v<TJoinArg, std::string> || std::is_same_v<TJoinArg, std::shared_ptr<IBaseOptimizerNode>>,
214
+ std::is_convertible_v<TJoinArg, std::string> || std::is_same_v<TJoinArg, std::shared_ptr<IBaseOptimizerNode>>,
215
215
" Args of join must be either Join or TString, for example: Join(Join('A', 'B'), 'C')"
216
216
);
217
217
}
@@ -252,7 +252,7 @@ Y_UNIT_TEST_SUITE(HypergraphBuild) {
252
252
TString attr = ToString (rand ());
253
253
leftJoinCond.push_back (TJoinColumn (std::move (lhsCond), attr));
254
254
rightJoinCond.push_back (TJoinColumn (std::move (rhsCond), attr));
255
-
255
+
256
256
}
257
257
}
258
258
@@ -288,7 +288,7 @@ Y_UNIT_TEST_SUITE(HypergraphBuild) {
288
288
289
289
Y_UNIT_TEST (SimpleDimpleJoin) {
290
290
auto join = Join (" A" , " B" );
291
-
291
+
292
292
auto graph = MakeJoinHypergraph<TNodeSet64>(join);
293
293
Cout << graph.String () << Endl;
294
294
@@ -301,7 +301,7 @@ Y_UNIT_TEST_SUITE(HypergraphBuild) {
301
301
302
302
auto graph = MakeJoinHypergraph<TNodeSet64>(root);
303
303
Cout << graph.String () << Endl;
304
-
304
+
305
305
auto A = graph.GetNodesByRelNames ({" A" });
306
306
auto B = graph.GetNodesByRelNames ({" B" });
307
307
auto C = graph.GetNodesByRelNames ({" C" });
@@ -318,7 +318,7 @@ Y_UNIT_TEST_SUITE(HypergraphBuild) {
318
318
auto anyJoin = Join (Join (" A" , " B" ), " C" , /* on=*/ " B=C" );
319
319
std::static_pointer_cast<TJoinOptimizerNode>(anyJoin)->LeftAny = true ;
320
320
auto join = Join (anyJoin, " D" , /* on=*/ " A=D" );
321
-
321
+
322
322
auto graph = MakeJoinHypergraph<TNodeSet64>(join);
323
323
Cout << graph.String () << Endl;
324
324
UNIT_ASSERT (graph.GetEdges ().size () != graph.GetSimpleEdges ().size ());
@@ -331,7 +331,7 @@ Y_UNIT_TEST_SUITE(HypergraphBuild) {
331
331
auto anyJoin = Join (Join (Join (" A" , " B" ), " C" , /* on=*/ " B=C" ), " D" , " C=D" );
332
332
std::static_pointer_cast<TJoinOptimizerNode>(anyJoin)->LeftAny = true ;
333
333
auto join = Join (anyJoin, " E" , /* on=*/ " A=E" );
334
-
334
+
335
335
auto graph = MakeJoinHypergraph<TNodeSet64>(join);
336
336
Cout << graph.String () << Endl;
337
337
UNIT_ASSERT (graph.GetEdges ().size () != graph.GetSimpleEdges ().size ());
@@ -343,7 +343,7 @@ Y_UNIT_TEST_SUITE(HypergraphBuild) {
343
343
auto anyJoin = Join (Join (" A" , " B" ), Join (" C" , " D" ), /* on=*/ " B=C" );
344
344
std::static_pointer_cast<TJoinOptimizerNode>(anyJoin)->RightAny = true ;
345
345
auto join = Join (anyJoin, " E" , /* on=*/ " C=E" );
346
-
346
+
347
347
auto graph = MakeJoinHypergraph<TNodeSet64>(join);
348
348
Cout << graph.String () << Endl;
349
349
UNIT_ASSERT (graph.GetEdges ().size () != graph.GetSimpleEdges ().size ());
@@ -355,7 +355,7 @@ Y_UNIT_TEST_SUITE(HypergraphBuild) {
355
355
auto nonReorderable = Join (Join (Join (" A" , " B" ), " C" , /* on=*/ " B=C" ), " D" , " C=D" );
356
356
std::static_pointer_cast<TJoinOptimizerNode>(nonReorderable)->IsReorderable = false ;
357
357
auto join = Join (nonReorderable, " E" , /* on=*/ " A=E" );
358
-
358
+
359
359
auto graph = MakeJoinHypergraph<TNodeSet64>(join);
360
360
Cout << graph.String () << Endl;
361
361
UNIT_ASSERT (graph.GetEdges ().size () != graph.GetSimpleEdges ().size ());
@@ -556,7 +556,7 @@ Y_UNIT_TEST_SUITE(HypergraphBuild) {
556
556
return res;
557
557
};
558
558
559
- auto mean = [](const TVector<double >& v) -> double {
559
+ auto mean = [](const TVector<double >& v) -> double {
560
560
double sum = std::accumulate (v.begin (), v.end (), 0.0 );
561
561
return sum / static_cast <double >(v.size ());
562
562
};
0 commit comments