public override VfpExpression Visit(VfpNotExpression expression) { if (expression.Argument is VfpXmlToCursorExpression) { _canRewrite = false; } return(base.Visit(expression)); }
public override VfpExpression Visit(VfpProjectExpression expression) { VfpProjectExpression innerProjectionExpression; bool hasNotExpression; if (GetInnerProjectionExpression(expression, out innerProjectionExpression, out hasNotExpression)) { var innerNewInstanceExpression = innerProjectionExpression.Projection as VfpNewInstanceExpression; if (innerNewInstanceExpression != null) { var innerConstExpression = innerNewInstanceExpression.Arguments[0] as VfpConstantExpression; if (innerConstExpression != null) { var countExpression = new VfpConstantExpression(innerConstExpression.ResultType, "COUNT(*)"); innerNewInstanceExpression = new VfpNewInstanceExpression(innerNewInstanceExpression.ResultType, new VfpExpressionList(new List <VfpExpression> { countExpression })); innerProjectionExpression = new VfpProjectExpression(innerProjectionExpression.ResultType, innerProjectionExpression.Input, innerNewInstanceExpression); VfpExpression comparison = new VfpComparisonExpression(VfpExpressionKind.LessThan, PrimitiveTypeKind.Boolean.ToTypeUsage(), new VfpConstantExpression( PrimitiveTypeKind.Int32.ToTypeUsage(), 0), innerProjectionExpression); if (!hasNotExpression) { comparison = new VfpNotExpression(comparison.ResultType, comparison); } innerNewInstanceExpression = new VfpNewInstanceExpression(innerNewInstanceExpression.ResultType, new VfpExpressionList(new List <VfpExpression> { comparison })); innerProjectionExpression = new VfpProjectExpression(expression.ResultType, expression.Input, innerNewInstanceExpression); return(innerProjectionExpression); } } } return(base.Visit(expression)); }
public override VfpExpression Visit(VfpNotExpression expression) { throw new NotImplementedException(); }
public virtual VfpExpression Visit(VfpNotExpression expression) { return(new VfpNotExpression(expression.ResultType, expression.Argument.Accept(this))); }