protected override Expression VisitOrdering(OrderingExpression orderingExpression) { Check.NotNull(orderingExpression, nameof(orderingExpression)); var expression = (SqlExpression)Visit(orderingExpression.Expression); return(orderingExpression.Update(expression)); }
protected override Expression VisitOrdering(OrderingExpression orderingExpression) { if (orderingExpression.Expression is SqlConstantExpression || orderingExpression.Expression is SqlParameterExpression || (orderingExpression.Expression is SqlFragmentExpression sqlFragment && sqlFragment.Sql.Equals("(SELECT 1)", StringComparison.Ordinal))) { Sql.Append("(SELECT 1"); GeneratePseudoFromClause(); Sql.Append(")"); }
protected override Expression VisitOrdering(OrderingExpression orderingExpression) { // Jet uses the value -1 as True, so ordering by a boolean expression will first list the True values // before the False values, which is the opposite of what .NET and other DBMS do, which are using 1 as True. if (orderingExpression.Expression.TypeMapping == _boolTypeMapping) { orderingExpression = new OrderingExpression( orderingExpression.Expression, !orderingExpression.IsAscending); } return(base.VisitOrdering(orderingExpression)); }
/// <summary> /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// </summary> protected override Expression VisitChildren(ExpressionVisitor visitor) { var newOrderings = new List <OrderingExpression>(); var recreate = false; foreach (var ordering in _orderings) { var newOrdering = new OrderingExpression( (SqlExpression)visitor.Visit(ordering.Expression), ordering.Ascending); newOrderings.Add(newOrdering); recreate |= newOrdering.Expression != ordering.Expression; } return(recreate ? new RowNumberExpression(newOrderings) : this); }
protected override Expression VisitOrdering(OrderingExpression orderingExpression) { if (orderingExpression.Expression is SqlConstantExpression || orderingExpression.Expression is SqlParameterExpression) { _relationalCommandBuilder.Append("(SELECT 1)"); } else { Visit(orderingExpression.Expression); } if (!orderingExpression.IsAscending) { _relationalCommandBuilder.Append(" DESC"); } return(orderingExpression); }
protected override Expression VisitOrdering(OrderingExpression orderingExpression) { if (orderingExpression.Expression is SqlConstantExpression || orderingExpression.Expression is SqlParameterExpression) { Sql.Append("(SELECT 1"); GeneratePseudoFromClause(); Sql.Append(")"); } else { Visit(orderingExpression.Expression); } if (!orderingExpression.IsAscending) { Sql.Append(" DESC"); } return(orderingExpression); }
/// <summary> /// Visits the children of the ordering expression. /// </summary> /// <param name="orderingExpression"> The expression to visit. </param> /// <returns> The modified expression, if it or any subexpression was modified; otherwise, returns the original expression. </returns> protected abstract Expression VisitOrdering([NotNull] OrderingExpression orderingExpression);
protected abstract Expression VisitOrdering(OrderingExpression orderingExpression);
protected override Expression VisitOrdering(OrderingExpression orderingExpression) { var expression = (SqlExpression)Visit(orderingExpression.Expression); return(orderingExpression.Update(expression)); }
protected override Expression VisitOrdering(OrderingExpression orderingExpression) { Visit(orderingExpression.Expression); return(orderingExpression); }
protected override Expression VisitOrdering(OrderingExpression x) { return(x?.Update(x.Expression.VisitNode(this))); }
protected override Expression VisitChildren(ExpressionVisitor visitor) { Check.NotNull(visitor, nameof(visitor)); var changed = false; // Note that we don't have instance functions in PG SqlExpression[]? visitedArguments = null; if (!IsNiladic) { for (var i = 0; i < Arguments.Count; i++) { var visitedArgument = (SqlExpression)visitor.Visit(Arguments[i]); if (visitedArgument != Arguments[i] && visitedArguments is null) { changed = true; visitedArguments = new SqlExpression[Arguments.Count]; for (var j = 0; j < visitedArguments.Length; j++) { visitedArguments[j] = Arguments[j]; } } if (visitedArguments is not null) { visitedArguments[i] = visitedArgument; } } } var visitedAggregatePredicate = (SqlExpression?)visitor.Visit(AggregatePredicate); changed |= visitedAggregatePredicate != AggregatePredicate; OrderingExpression[]? visitedAggregateOrderings = null; for (var i = 0; i < AggregateOrderings.Count; i++) { var visitedOrdering = (OrderingExpression)visitor.Visit(AggregateOrderings[i]); if (visitedOrdering != AggregateOrderings[i] && visitedAggregateOrderings is null) { changed = true; visitedAggregateOrderings = new OrderingExpression[AggregateOrderings.Count]; for (var j = 0; j < visitedAggregateOrderings.Length; j++) { visitedAggregateOrderings[j] = AggregateOrderings[j]; } } if (visitedAggregateOrderings is not null) { visitedAggregateOrderings[i] = visitedOrdering; } } return(changed ? new PostgresFunctionExpression( Name, visitedArguments ?? Arguments, ArgumentNames, ArgumentSeparators, IsNullable, ArgumentsPropagateNullability !, IsAggregateDistinct, visitedAggregatePredicate ?? AggregatePredicate, visitedAggregateOrderings ?? AggregateOrderings, Type, TypeMapping) : this); }