public override void ApplySkipTake(StringBuilder sql, StringBuilder orderClause, int take, int skip) {
if (skip == 0) {
// query starts with SELECT so insert top (X) there
sql.Insert(6, " top (@take)");
return;
}
// now we have take and skip - we'll do the recursive CTE thingy
sql.Insert(6, " ROW_NUMBER() OVER (" + orderClause + ") as RowNum,");
sql.Insert(0, "select * from (");
// see MySqlDialect for explanation of the crazy number 18446744073709551615
sql.Append(
") as pagetable where pagetable.RowNum between @skip + 1 and " + (take > 0 ? "@skip + @take" : "18446744073709551615")
+ " order by pagetable.RowNum");
}