public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { CaseExpression result = new CaseExpression(); if (_inputExpression != null) { result.InputExpression = (ExpressionNode)_inputExpression.Clone(alreadyClonedElements); } if (_elseExpression != null) { result.ElseExpression = (ExpressionNode)_elseExpression.Clone(alreadyClonedElements); } result.WhenExpressions = new ExpressionNode[_whenExpressions.Length]; for (int i = 0; i < _whenExpressions.Length; i++) { result.WhenExpressions[i] = (ExpressionNode)_whenExpressions[i].Clone(alreadyClonedElements); } result.ThenExpressions = new ExpressionNode[_thenExpressions.Length]; for (int i = 0; i < _thenExpressions.Length; i++) { result.ThenExpressions[i] = (ExpressionNode)_thenExpressions[i].Clone(alreadyClonedElements); } result.ResultType = _resultType; return(result); }
public override ExpressionNode VisitCoalesceExpression(CoalesceExpression expression) { // First visit all expressions base.VisitCoalesceExpression(expression); // Since a COALESCE expression can be expressed using a CASE expression we convert // them to simplify the evaluation and optimization engine. // // COALESCE(expression1,...,expressionN) is equivalent to this CASE expression: // // CASE // WHEN (expression1 IS NOT NULL) THEN expression1 // ... // WHEN (expressionN IS NOT NULL) THEN expressionN // END CaseExpression caseExpression = new CaseExpression(); caseExpression.WhenExpressions = new ExpressionNode[expression.Expressions.Length]; caseExpression.ThenExpressions = new ExpressionNode[expression.Expressions.Length]; for (int i = 0; i < expression.Expressions.Length; i++) { ExpressionNode whenPart = expression.Expressions[i]; ExpressionNode thenPart = (ExpressionNode)whenPart.Clone(); caseExpression.WhenExpressions[i] = new IsNullExpression(true, whenPart); caseExpression.ThenExpressions[i] = thenPart; } return(VisitExpression(caseExpression)); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { UnaryExpression result = new UnaryExpression(_op, (ExpressionNode)_operand.Clone(alreadyClonedElements)); result.OperatorMethod = OperatorMethod; return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { OrderByColumn result = new OrderByColumn(); result.Expression = (ExpressionNode)_expression.Clone(alreadyClonedElements); result.SortOrder = _sortOrder; return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { return(new BetweenExpression( (ExpressionNode)_expression.Clone(alreadyClonedElements), (ExpressionNode)_lowerBound.Clone(alreadyClonedElements), (ExpressionNode)_upperBound.Clone(alreadyClonedElements) )); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { ComputedValueDefinition result = new ComputedValueDefinition(); result.Target = Target; result.Expression = (ExpressionNode)_expression.Clone(alreadyClonedElements); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { NullIfExpression result = new NullIfExpression(); result.LeftExpression = (ExpressionNode)_leftExpression.Clone(alreadyClonedElements); result.RightExpression = (ExpressionNode)_rightExpression.Clone(alreadyClonedElements); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { CastExpression result = new CastExpression(); result.Expression = (ExpressionNode)_expression.Clone(alreadyClonedElements); result.TypeReference = (TypeReference)_typeReference.Clone(alreadyClonedElements); result.ConvertMethod = _convertMethod; return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { AggregatedValueDefinition result = new AggregatedValueDefinition(); result.Target = Target; result.Aggregate = _aggregate; result.Aggregator = _aggregator; result.Argument = (ExpressionNode)_argument.Clone(alreadyClonedElements); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { FilterAlgebraNode result = new FilterAlgebraNode(); result.StatisticsIterator = StatisticsIterator; result.OutputList = ArrayHelpers.Clone(OutputList); result.Input = (AlgebraNode)Input.Clone(alreadyClonedElements); result.Predicate = (ExpressionNode)_predicate.Clone(alreadyClonedElements); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { BinaryExpression result = new BinaryExpression(); result.Op = _op; result.Left = (ExpressionNode)_left.Clone(alreadyClonedElements); result.Right = (ExpressionNode)_right.Clone(alreadyClonedElements); result.OperatorMethod = OperatorMethod; return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { AllAnySubselect allAnySubselect = new AllAnySubselect(); allAnySubselect.Left = (ExpressionNode)_left.Clone(alreadyClonedElements); allAnySubselect.Op = _op; allAnySubselect.Type = _type; allAnySubselect.Query = (QueryNode)Query.Clone(alreadyClonedElements); return(allAnySubselect); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { SelectColumn result = new SelectColumn(); if (_expression != null) { result.Expression = (ExpressionNode)_expression.Clone(alreadyClonedElements); } result.Alias = _alias; return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { IndexSpoolAlgebraNode result = new IndexSpoolAlgebraNode(); result.StatisticsIterator = StatisticsIterator; result.OutputList = ArrayHelpers.Clone(OutputList); result.Input = (AlgebraNode)Input.Clone(alreadyClonedElements); result.IndexEntry = _indexEntry; result.ProbeExpression = (ExpressionNode)_probeExpression.Clone(alreadyClonedElements); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { PropertyAccessExpression result = new PropertyAccessExpression(); result.Target = (ExpressionNode)_target.Clone(alreadyClonedElements); result.Name = _name; result.NameSourceRange = _nameSourceRange; result.Property = _property; return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { InExpression result = new InExpression(); result._left = (ExpressionNode)_left.Clone(alreadyClonedElements); result._rightExpressions = new ExpressionNode[_rightExpressions.Length]; for (int i = 0; i < _rightExpressions.Length; i++) { result._rightExpressions[i] = (ExpressionNode)_rightExpressions[i].Clone(alreadyClonedElements); } return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { HashMatchAlgebraNode result = new HashMatchAlgebraNode(); result.StatisticsIterator = StatisticsIterator; result.OutputList = ArrayHelpers.Clone(OutputList); result.Left = (AlgebraNode)_left.Clone(alreadyClonedElements); result.Right = (AlgebraNode)_right.Clone(alreadyClonedElements); result.Op = _op; result.BuildKeyEntry = _buildKeyEntry; result.ProbeEntry = _probeEntry; result.ProbeResidual = (ExpressionNode)_probeResidual.Clone(alreadyClonedElements); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { JoinedTableReference result = new JoinedTableReference(); result.Left = (TableReference)_left.Clone(alreadyClonedElements); result.JoinType = _joinType; result.Right = (TableReference)_right.Clone(alreadyClonedElements); if (_condition != null) { result.Condition = (ExpressionNode)_condition.Clone(alreadyClonedElements); } return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { JoinAlgebraNode result = new JoinAlgebraNode(); result.StatisticsIterator = StatisticsIterator; result.OutputList = ArrayHelpers.Clone(OutputList); result.Left = (AlgebraNode)_left.Clone(alreadyClonedElements); result.Right = (AlgebraNode)_right.Clone(alreadyClonedElements); result.Op = _op; if (_predicate != null) { result.Predicate = (ExpressionNode)_predicate.Clone(alreadyClonedElements); } result.OuterReferences = ArrayHelpers.Clone(_outerReferences); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { MethodInvocationExpression result = new MethodInvocationExpression(); result.Target = (ExpressionNode)_target.Clone(alreadyClonedElements); result.Name = _name; result.NameSourceRange = _nameSourceRange; result._arguments = new ExpressionNode[_arguments.Length]; for (int i = 0; i < _arguments.Length; i++) { result._arguments[i] = (ExpressionNode)_arguments[i].Clone(alreadyClonedElements); } result._method = _method; return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { SelectQuery result = new SelectQuery(); result.IsDistinct = _isDistinct; if (_topClause != null) { result.TopClause = (TopClause)_topClause.Clone(alreadyClonedElements); } result.SelectColumns = ArrayHelpers.CreateDeepCopyOfAstElementArray(_selectColumns, alreadyClonedElements); if (_tableReferences != null) { result.TableReferences = (TableReference)_tableReferences.Clone(alreadyClonedElements); } if (_whereClause != null) { result.WhereClause = (ExpressionNode)_whereClause.Clone(alreadyClonedElements); } if (_groupByColumns != null) { result.GroupByColumns = ArrayHelpers.CreateDeepCopyOfAstElementArray(_groupByColumns, alreadyClonedElements); } if (_orderByColumns != null) { result.OrderByColumns = ArrayHelpers.CreateDeepCopyOfAstElementArray(_orderByColumns, alreadyClonedElements); } result.AggregateDependencies = ArrayHelpers.CreateDeepCopyOfAstElementArray(_aggregateDependencies, alreadyClonedElements); result.ColumnDependencies = ArrayHelpers.Clone(_columnDependencies); return(result); }
public override AstElement Clone(Dictionary <AstElement, AstElement> alreadyClonedElements) { return(new IsNullExpression(_negated, (ExpressionNode)_expression.Clone(alreadyClonedElements))); }