public virtual void Visit(SqlRowNumber node) { foreach (SqlOrder order in node.OrderBy) { VisitInternal(order); } }
internal virtual SqlRowNumber VisitRowNumber(SqlRowNumber rowNumber) { for (int i = 0, n = rowNumber.OrderBy.Count; i < n; i++) { rowNumber.OrderBy[i].Expression = this.VisitExpression(rowNumber.OrderBy[i].Expression); } return rowNumber; }
public void Visit(SqlRowNumber node) { foreach (var order in node.OrderBy) { Visit(order); } }
internal override SqlRowNumber VisitRowNumber(SqlRowNumber rowNumber) { List<SqlOrderExpression> orderBy = new List<SqlOrderExpression>(); foreach (SqlOrderExpression expr in rowNumber.OrderBy) { orderBy.Add(new SqlOrderExpression(expr.OrderType, (SqlExpression)this.Visit(expr.Expression))); } return new SqlRowNumber(rowNumber.ClrType, rowNumber.SqlType, orderBy, rowNumber.SourceExpression); }
internal override SqlRowNumber VisitRowNumber(SqlRowNumber rowNumber) { List <SqlOrderExpression> orderBy = new List <SqlOrderExpression>(); foreach (SqlOrderExpression expr in rowNumber.OrderBy) { orderBy.Add(new SqlOrderExpression(expr.OrderType, (SqlExpression)this.Visit(expr.Expression))); } return(new SqlRowNumber(rowNumber.ClrType, rowNumber.SqlType, orderBy, rowNumber.SourceExpression)); }
internal override SqlRowNumber VisitRowNumber(SqlRowNumber rowNumber) { sb.Append("ROW_NUMBER() OVER (ORDER BY "); for (int i = 0, n = rowNumber.OrderBy.Count; i < n; i++) { SqlOrderExpression exp = rowNumber.OrderBy[i]; if (i > 0) sb.Append(", "); this.Visit(exp.Expression); if (exp.OrderType == SqlOrderType.Descending) { sb.Append(" DESC"); } } sb.Append(")"); return rowNumber; }
internal override SqlRowNumber VisitRowNumber(SqlRowNumber rowNumber) { if (rowNumber.OrderBy.Count > 0) return rowNumber; SqlDuplicator dup = new SqlDuplicator(true); List<SqlOrderExpression> orderBy = new List<SqlOrderExpression>(); List<SqlOrderExpression> existingOrders = new List<SqlOrderExpression>(); if (this.rowNumberOrders != null && this.rowNumberOrders.Count != 0) { existingOrders = new List<SqlOrderExpression>(this.rowNumberOrders); } else if (this.orders != null) { existingOrders = new List<SqlOrderExpression>(this.orders); } foreach (SqlOrderExpression expr in existingOrders) { if (!expr.Expression.IsConstantColumn) { orderBy.Add(expr); if (this.rowNumberOrders != null) { this.rowNumberOrders.Remove(expr); } if (this.orders != null) { this.orders.Remove(expr); } } } rowNumber.OrderBy.Clear(); if (orderBy.Count == 0) { List<SqlColumn> columns = SqlGatherColumnsProduced.GatherColumns(this.currentSelect.From); foreach (SqlColumn col in columns) { if (col.Expression.SqlType.IsOrderable) { orderBy.Add(new SqlOrderExpression(SqlOrderType.Ascending, new SqlColumnRef(col))); } } if (orderBy.Count == 0) { // insert simple column SqlColumn col = new SqlColumn( "rowNumberOrder", sql.Value(typeof(int), this.typeProvider.From(typeof(int)), 1, false, rowNumber.SourceExpression) ); this.PushDown(col); orderBy.Add(new SqlOrderExpression(SqlOrderType.Ascending, new SqlColumnRef(col))); } } foreach (SqlOrderExpression sox in orderBy) { rowNumber.OrderBy.Add(new SqlOrderExpression(sox.OrderType, (SqlExpression)dup.Duplicate(sox.Expression))); } return rowNumber; }
internal override SqlRowNumber VisitRowNumber(SqlRowNumber rowNumber) { this.hasRowNumber = true; return rowNumber; }
internal override SqlRowNumber VisitRowNumber(SqlRowNumber rowNumber) { if (rowNumber.OrderBy.Count > 0) { return(rowNumber); } SqlDuplicator dup = new SqlDuplicator(true); List <SqlOrderExpression> orderBy = new List <SqlOrderExpression>(); List <SqlOrderExpression> existingOrders = new List <SqlOrderExpression>(); if (this.rowNumberOrders != null && this.rowNumberOrders.Count != 0) { existingOrders = new List <SqlOrderExpression>(this.rowNumberOrders); } else if (this.orders != null) { existingOrders = new List <SqlOrderExpression>(this.orders); } foreach (SqlOrderExpression expr in existingOrders) { if (!expr.Expression.IsConstantColumn) { orderBy.Add(expr); if (this.rowNumberOrders != null) { this.rowNumberOrders.Remove(expr); } if (this.orders != null) { this.orders.Remove(expr); } } } rowNumber.OrderBy.Clear(); if (orderBy.Count == 0) { List <SqlColumn> columns = SqlGatherColumnsProduced.GatherColumns(this.currentSelect.From); foreach (SqlColumn col in columns) { if (col.Expression.SqlType.IsOrderable) { orderBy.Add(new SqlOrderExpression(SqlOrderType.Ascending, new SqlColumnRef(col))); } } if (orderBy.Count == 0) { // insert simple column SqlColumn col = new SqlColumn( "rowNumberOrder", sql.Value(typeof(int), this.typeProvider.From(typeof(int)), 1, false, rowNumber.SourceExpression) ); this.PushDown(col); orderBy.Add(new SqlOrderExpression(SqlOrderType.Ascending, new SqlColumnRef(col))); } } foreach (SqlOrderExpression sox in orderBy) { rowNumber.OrderBy.Add(new SqlOrderExpression(sox.OrderType, (SqlExpression)dup.Duplicate(sox.Expression))); } return(rowNumber); }
internal override SqlRowNumber VisitRowNumber(SqlRowNumber rowNumber) { return(rowNumber); }
internal override SqlRowNumber VisitRowNumber(SqlRowNumber rowNumber) { hasRowNumber = true; return(rowNumber); }