private static string LogicalOperatorToString(JoinAlgebraNode.JoinOperator op) { switch (op) { case JoinAlgebraNode.JoinOperator.InnerJoin: return(Resources.ShowPlanLogicalOperatorInnerJoin); case JoinAlgebraNode.JoinOperator.LeftOuterJoin: return(Resources.ShowPlanLogicalOperatorLeftOuterJoin); case JoinAlgebraNode.JoinOperator.LeftSemiJoin: return(Resources.ShowPlanLogicalOperatorLeftSemiJoin); case JoinAlgebraNode.JoinOperator.LeftAntiSemiJoin: return(Resources.ShowPlanLogicalOperatorLeftAntiSemiJoin); case JoinAlgebraNode.JoinOperator.RightOuterJoin: return(Resources.ShowPlanLogicalOperatorRightOuterJoin); case JoinAlgebraNode.JoinOperator.RightSemiJoin: return(Resources.ShowPlanLogicalOperatorRightSemiJoin); case JoinAlgebraNode.JoinOperator.RightAntiSemiJoin: return(Resources.ShowPlanLogicalOperatorRightAntiSemiJoin); case JoinAlgebraNode.JoinOperator.FullOuterJoin: return(Resources.ShowPlanLogicalOperatorFullOuterJoin); default: throw ExceptionBuilder.UnhandledCaseLabel(op); } }
public static bool AllowsRightPushDown(JoinAlgebraNode.JoinOperator joinOperator) { return(joinOperator == JoinAlgebraNode.JoinOperator.InnerJoin || joinOperator == JoinAlgebraNode.JoinOperator.LeftOuterJoin || joinOperator == JoinAlgebraNode.JoinOperator.LeftSemiJoin || joinOperator == JoinAlgebraNode.JoinOperator.RightSemiJoin || joinOperator == JoinAlgebraNode.JoinOperator.LeftAntiSemiJoin || joinOperator == JoinAlgebraNode.JoinOperator.RightAntiSemiJoin); }
private static bool SemiJoinDoesNotDependOn(JoinAlgebraNode.JoinOperator op, ExpressionNode part, RowBufferEntry[] leftDefinedValues, RowBufferEntry[] rightDefinedValues) { if (op == JoinAlgebraNode.JoinOperator.LeftSemiJoin || op == JoinAlgebraNode.JoinOperator.LeftAntiSemiJoin) { return(AstUtil.ExpressionDoesNotReference(part, rightDefinedValues)); } if (op == JoinAlgebraNode.JoinOperator.RightSemiJoin || op == JoinAlgebraNode.JoinOperator.RightAntiSemiJoin) { return(AstUtil.ExpressionDoesNotReference(part, leftDefinedValues)); } return(true); }