Example #1
0
        protected VfpExpression VisitJoin(VfpJoinExpression join)
        {
            VisitSource(join.Left);
            WriteLine(Indentation.Same);

            switch (join.ExpressionKind)
            {
            case VfpExpressionKind.CrossJoin:
                Write(", ");
                break;

            case VfpExpressionKind.InnerJoin:
                Write("INNER JOIN ");
                break;

            case VfpExpressionKind.LeftOuterJoin:
                Write("LEFT OUTER JOIN ");
                break;

            default:
                throw new NotSupportedException(join.ExpressionKind.ToString());
            }

            VisitSource(join.Right);
            if (join.JoinCondition != null)
            {
                WriteLine(Indentation.Inner);
                Write("ON ");
                VisitPredicate(join.JoinCondition);
                Indent(Indentation.Outer);
            }

            return(join);
        }
        public override VfpExpression Visit(VfpJoinExpression expression)
        {
            var result = base.Visit(expression);

            expression = result as VfpJoinExpression;

            if (expression == null)
            {
                return(result);
            }

            var filterExpression = expression.Left.Expression as VfpFilterExpression;

            if (IsZeroEqualsZero(filterExpression))
            {
                expression = VfpExpressionBuilder.Join(expression.ExpressionKind, expression.ResultType, filterExpression.Input, expression.Right, expression.JoinCondition);
            }

            filterExpression = expression.Right.Expression as VfpFilterExpression;

            if (IsZeroEqualsZero(filterExpression))
            {
                expression = VfpExpressionBuilder.Join(expression.ExpressionKind, expression.ResultType, expression.Left, filterExpression.Input, expression.JoinCondition);
            }

            return(expression);
        }
 public virtual VfpExpression Visit(VfpJoinExpression expression)
 {
     return(new VfpJoinExpression(expression.ExpressionKind,
                                  expression.ResultType,
                                  VisitVfpExpressionBinding(expression.Left),
                                  VisitVfpExpressionBinding(expression.Right),
                                  expression.JoinCondition.Accept(this)));
 }
Example #4
0
 public override VfpExpression Visit(VfpJoinExpression expression)
 {
     throw new NotImplementedException();
 }