public bool VisitExprOrderByOffsetFetch(ExprOrderByOffsetFetch expr, TCtx arg) { var res = this.Visit(expr, "OrderByOffsetFetch", arg, out var argOut) && this.Accept("OrderList", expr.OrderList, argOut) && this.Accept("OffsetFetch", expr.OffsetFetch, argOut); this._visitor.EndVisitExpr(expr, arg); return(res); }
public bool VisitExprOrderByOffsetFetch(ExprOrderByOffsetFetch exprOrderByOffsetFetch, IExpr?parent) { this.AcceptListComaSeparated(exprOrderByOffsetFetch.OrderList, exprOrderByOffsetFetch); if (parent is ExprSelectOffsetFetch exprSelectOffsetFetch && exprSelectOffsetFetch.SelectQuery is ExprQuerySpecification specification) { if (!ReferenceEquals(specification.Top, null)) { if (!ReferenceEquals(exprSelectOffsetFetch.OrderBy.OffsetFetch.Fetch, null) && exprSelectOffsetFetch.OrderBy.OffsetFetch.Fetch.Value.HasValue) { throw new SqExpressException("Query with \"FETCH\" cannot be limited"); } this.AppendSelectLimit(specification.Top, exprSelectOffsetFetch); } } exprOrderByOffsetFetch.OffsetFetch.Accept(this, exprOrderByOffsetFetch); return(true); }
public static ExprSelectOffsetFetch WithOrderBy(this ExprSelectOffsetFetch original, ExprOrderByOffsetFetch newOrderBy) => new ExprSelectOffsetFetch(selectQuery: original.SelectQuery, orderBy: newOrderBy);
public static ExprOrderByOffsetFetch WithOffsetFetch(this ExprOrderByOffsetFetch original, ExprOffsetFetch newOffsetFetch) => new ExprOrderByOffsetFetch(orderList: original.OrderList, offsetFetch: newOffsetFetch);
public static ExprOrderByOffsetFetch WithOrderList(this ExprOrderByOffsetFetch original, IReadOnlyList <ExprOrderByItem> newOrderList) => new ExprOrderByOffsetFetch(orderList: newOrderList, offsetFetch: original.OffsetFetch);