8
8
#include " dq_opt_make_join_hypergraph.h"
9
9
#include " dq_opt_log.h"
10
10
11
+ #include < memory>
12
+
11
13
using namespace NYql ;
12
14
using namespace NNodes ;
13
15
using namespace NYql ::NDq;
14
16
15
17
std::shared_ptr<IBaseOptimizerNode> CreateChain (size_t size, TString onAttribute, TString tablePrefix=" e" ) {
16
18
std::shared_ptr<IBaseOptimizerNode> root = std::make_shared<TRelOptimizerNode>(tablePrefix + " 1" , std::make_shared<TOptimizerStatistics>());
19
+ root->Stats ->Labels = std::make_shared<TVector<TString>>(TVector<TString>{tablePrefix + " 1" });
17
20
for (size_t i = 1 ; i < size; ++i) {
18
21
auto eiStr = tablePrefix + ToString (i + 1 );
19
22
auto eiPrevStr = tablePrefix + ToString (i);
20
23
21
24
auto ei = std::make_shared<TRelOptimizerNode>(eiStr, std::make_shared<TOptimizerStatistics>());
25
+ ei->Stats ->Labels = std::make_shared<TVector<TString>>(TVector<TString>{eiStr});
22
26
23
27
std::set<std::pair<NDq::TJoinColumn, NDq::TJoinColumn>> joinConditions;
24
28
joinConditions.insert ({TJoinColumn (eiPrevStr, onAttribute), TJoinColumn (eiStr, onAttribute)});
@@ -31,10 +35,11 @@ std::shared_ptr<IBaseOptimizerNode> CreateChain(size_t size, TString onAttribute
31
35
return root;
32
36
}
33
37
34
-
38
+ template < typename TProviderContext = TBaseProviderContext>
35
39
std::shared_ptr<IBaseOptimizerNode> Enumerate (const std::shared_ptr<IBaseOptimizerNode>& root) {
36
- auto ctx = TBaseProviderContext ();
37
- auto optimizer = MakeNativeOptimizerNew (ctx, std::numeric_limits<ui32>::max ());
40
+ auto ctx = TProviderContext ();
41
+ auto optimizer =
42
+ std::unique_ptr<IOptimizerNew>(MakeNativeOptimizerNew (ctx, std::numeric_limits<ui32>::max ()));
38
43
39
44
Y_ENSURE (root->Kind == EOptimizerNodeKind::JoinNodeType);
40
45
auto res = optimizer->JoinSearch (std::static_pointer_cast<TJoinOptimizerNode>(root));
0 commit comments