@@ -92,6 +92,8 @@ struct IProviderContext {
92
92
virtual bool IsJoinApplicable (const std::shared_ptr<IBaseOptimizerNode>& left,
93
93
const std::shared_ptr<IBaseOptimizerNode>& right,
94
94
const std::set<std::pair<NDq::TJoinColumn, NDq::TJoinColumn>>& joinConditions,
95
+ const TVector<TString>& leftJoinKeys,
96
+ const TVector<TString>& rightJoinKeys,
95
97
EJoinAlgoType joinAlgo) = 0;
96
98
97
99
};
@@ -111,11 +113,15 @@ struct TDummyProviderContext : public IProviderContext {
111
113
bool IsJoinApplicable (const std::shared_ptr<IBaseOptimizerNode>& left,
112
114
const std::shared_ptr<IBaseOptimizerNode>& right,
113
115
const std::set<std::pair<NDq::TJoinColumn, NDq::TJoinColumn>>& joinConditions,
116
+ const TVector<TString>& leftJoinKeys,
117
+ const TVector<TString>& rightJoinKeys,
114
118
EJoinAlgoType joinAlgo) override {
115
119
116
120
Y_UNUSED (left);
117
121
Y_UNUSED (right);
118
122
Y_UNUSED (joinConditions);
123
+ Y_UNUSED (leftJoinKeys);
124
+ Y_UNUSED (rightJoinKeys);
119
125
Y_UNUSED (joinAlgo);
120
126
121
127
return true ;
@@ -137,13 +143,19 @@ struct TDummyProviderContext : public IProviderContext {
137
143
struct TJoinOptimizerNode : public IBaseOptimizerNode {
138
144
std::shared_ptr<IBaseOptimizerNode> LeftArg;
139
145
std::shared_ptr<IBaseOptimizerNode> RightArg;
140
- std::set<std::pair<NDq::TJoinColumn, NDq::TJoinColumn>> JoinConditions;
146
+ const std::set<std::pair<NDq::TJoinColumn, NDq::TJoinColumn>> JoinConditions;
147
+ TVector<TString> LeftJoinKeys;
148
+ TVector<TString> RightJoinKeys;
141
149
EJoinKind JoinType;
142
150
EJoinAlgoType JoinAlgo;
143
151
bool IsReorderable;
144
152
145
- TJoinOptimizerNode (const std::shared_ptr<IBaseOptimizerNode>& left, const std::shared_ptr<IBaseOptimizerNode>& right,
146
- const std::set<std::pair<NDq::TJoinColumn, NDq::TJoinColumn>>& joinConditions, const EJoinKind joinType, const EJoinAlgoType joinAlgo, bool nonReorderable=false );
153
+ TJoinOptimizerNode (const std::shared_ptr<IBaseOptimizerNode>& left,
154
+ const std::shared_ptr<IBaseOptimizerNode>& right,
155
+ const std::set<std::pair<NDq::TJoinColumn, NDq::TJoinColumn>>& joinConditions,
156
+ const EJoinKind joinType,
157
+ const EJoinAlgoType joinAlgo,
158
+ bool nonReorderable=false );
147
159
virtual ~TJoinOptimizerNode () {}
148
160
virtual TVector<TString> Labels ();
149
161
virtual void Print (std::stringstream& stream, int ntabs=0 );
0 commit comments