protected override void SetRootPagingStatments(TempTableNode root, QueryExpand queryExpand) { Query query = queryExpand.Query; root.TempTableName = GetTempTableName(); PagingClauseCollection clauses = GeneratePagingClauseCollection(query, out DbParameter[] dbParameters); List <string> list = new List <string> { string.Format("CREATE GLOBAL TEMPORARY TABLE {0} ON COMMIT PRESERVE ROWS AS", root.TempTableName), clauses.Select, clauses.From, string.Join(" ", clauses.LeftJoins), clauses.Where ?? string.Empty, clauses.OrderBy ?? string.Empty }; list.AddRange(clauses.Clauses); string sql = string.Join(" ", list); root.BeforeExecuteStatments.Add(new SQLStatment(sql, dbParameters)); // string fetchSql = string.Format("SELECT * FROM {0}", root.TempTableName); root.FetchTableStatment = new SQLStatment(fetchSql); }
protected PagingClauseCollection GeneratePagingClauseCollection(Query query, out DbParameter[] dbParameters) { PagingClauseCollection clauses = Database.QueryGenerator.GeneratePagingClauseCollection(query, out IReadOnlyDictionary <string, object> dbParameterValues); dbParameters = CreateParameters(dbParameterValues); return(clauses); }
protected override PagingClauseCollection GeneratePagingClauseCollection(Query query, out IReadOnlyDictionary <string, object> dbParameterValues) { long top = (query.Top == 0) ? long.MaxValue : query.Top; SelectClauseCollection selectClauses = GenerateSelectClauseCollection(query, out dbParameterValues); PagingClauseCollection PagingClauses = new PagingClauseCollection(selectClauses) { Clauses = new string[1] }; PagingClauses.Clauses[0] = string.Format("LIMIT {0},{1}", query.Skip, top); return(PagingClauses); }
public virtual string GeneratePagingStatement(Query query, out IReadOnlyDictionary <string, object> dbParameterValues) { PagingClauseCollection clauses = GeneratePagingClauseCollection(query, out dbParameterValues); List <string> list = new List <string> { clauses.Select, clauses.From, string.Join(" ", clauses.LeftJoins), clauses.Where ?? string.Empty, clauses.OrderBy ?? string.Empty }; list.AddRange(clauses.Clauses); return(string.Join(" ", list)); }
internal protected override PagingClauseCollection GeneratePagingClauseCollection(Query query, out IReadOnlyDictionary <string, object> dbParameterValues) { SelectClauseCollection selectClauses = GenerateSelectClauseCollection(query, out dbParameterValues); PagingClauseCollection pagingClauses = new PagingClauseCollection(selectClauses); List <string> clauses = new List <string> { string.Format("OFFSET {0} ROWS", query.Skip) }; if (query.Top != 0) { clauses.Add(string.Format("FETCH NEXT {0} ROWS ONLY", query.Top)); } pagingClauses.Clauses = clauses.ToArray(); return(pagingClauses); }