Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 public static ExprSelectOffsetFetch WithOrderBy(this ExprSelectOffsetFetch original, ExprOrderByOffsetFetch newOrderBy)
 => new ExprSelectOffsetFetch(selectQuery: original.SelectQuery, orderBy: newOrderBy);
Пример #4
0
 public static ExprOrderByOffsetFetch WithOffsetFetch(this ExprOrderByOffsetFetch original, ExprOffsetFetch newOffsetFetch)
 => new ExprOrderByOffsetFetch(orderList: original.OrderList, offsetFetch: newOffsetFetch);
Пример #5
0
 public static ExprOrderByOffsetFetch WithOrderList(this ExprOrderByOffsetFetch original, IReadOnlyList <ExprOrderByItem> newOrderList)
 => new ExprOrderByOffsetFetch(orderList: newOrderList, offsetFetch: original.OffsetFetch);