@@ -92,6 +92,8 @@ struct IProviderContext {
9292 virtual bool IsJoinApplicable (const std::shared_ptr<IBaseOptimizerNode>& left,
9393 const std::shared_ptr<IBaseOptimizerNode>& right,
9494 const std::set<std::pair<NDq::TJoinColumn, NDq::TJoinColumn>>& joinConditions,
95+ const TVector<TString>& leftJoinKeys,
96+ const TVector<TString>& rightJoinKeys,
9597 EJoinAlgoType joinAlgo) = 0;
9698
9799};
@@ -111,11 +113,15 @@ struct TDummyProviderContext : public IProviderContext {
111113 bool IsJoinApplicable (const std::shared_ptr<IBaseOptimizerNode>& left,
112114 const std::shared_ptr<IBaseOptimizerNode>& right,
113115 const std::set<std::pair<NDq::TJoinColumn, NDq::TJoinColumn>>& joinConditions,
116+ const TVector<TString>& leftJoinKeys,
117+ const TVector<TString>& rightJoinKeys,
114118 EJoinAlgoType joinAlgo) override {
115119
116120 Y_UNUSED (left);
117121 Y_UNUSED (right);
118122 Y_UNUSED (joinConditions);
123+ Y_UNUSED (leftJoinKeys);
124+ Y_UNUSED (rightJoinKeys);
119125 Y_UNUSED (joinAlgo);
120126
121127 return true ;
@@ -137,13 +143,19 @@ struct TDummyProviderContext : public IProviderContext {
137143struct TJoinOptimizerNode : public IBaseOptimizerNode {
138144 std::shared_ptr<IBaseOptimizerNode> LeftArg;
139145 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;
141149 EJoinKind JoinType;
142150 EJoinAlgoType JoinAlgo;
143151 bool IsReorderable;
144152
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 );
147159 virtual ~TJoinOptimizerNode () {}
148160 virtual TVector<TString> Labels ();
149161 virtual void Print (std::stringstream& stream, int ntabs=0 );
0 commit comments