public void MergeJoin(TablePlan left, TablePlan right)
{
if (left.RightPlan != right) {
if (left.RightPlan != null) {
RightJoin(left.RightPlan, left.RightJoinType, left.RightOnExpression);
RightPlan.LeftPlan = this;
}
if (right.LeftPlan != null) {
LeftJoin(right.LeftPlan, right.LeftJoinType, right.LeftOnExpression);
LeftPlan.RightPlan = this;
}
}
if (left.LeftPlan != right) {
if (LeftPlan == null && left.LeftPlan != null) {
LeftJoin(left.LeftPlan, left.LeftJoinType, left.LeftOnExpression);
LeftPlan.RightPlan = this;
}
if (RightPlan == null && right.RightPlan != null) {
RightJoin(right.RightPlan, right.RightJoinType, right.RightOnExpression);
RightPlan.LeftPlan = this;
}
}
}