sweet-liberty
sweet-liberty copied to clipboard
Paging queries with Microsoft SQL Server
Paging queries don't work with Microsoft SQL Server.
Database spec is as follows. Queries are working as well as filtered queries. The same issue should also occur when the classname is "com.microsoft.sqlserver.jdbc.SQLServerDriver", but I haven't tested that.
(def db-spec {:classname "net.sourceforge.jtds.jdbc.Driver"
:subprotocol "jtds:sqlserver"
:subname "subname"
:user "user"
:password "password"})
Looking at the tests, it looks like the paging queries are in the form
SELECT column_name, another_column_name, third_column
FROM my_table
ORDER BY column_name
ASC LIMIT _pagesize OFFSET _page
Microsoft SQL Server 2005 and 2008 requires the queries in the form
SELECT * FROM
(SELECT ROW_NUMBER() OVER(ORDER BY column_name DESC) AS
rownum, column_name, another_column_name, third_column
FROM my_table ) AS my_table
WHERE rownum BETWEEN (_page * _pagesize) AND ((_page+1) * _pagesize)
(
ORDER BY rownum DESC
Microsoft SQL Server 2012 requires the queries in the form (taken from http://raresql.com/2012/07/01/sql-paging-in-sql-server-2012-using-order-by-offset-and-fetch-next/ as I don't have a 2012 server handy to test)
SELECT column_name, another_column_name, third_column
FROM my_table
ORDER BY column_name
OFFSET (_page*_pagesize) ROWS
FETCH NEXT (_pagesize) ROWS ONLY
Any idea if this is something that should be fixed in Honey SQL or handled in Sweet-Liberty?