From 499c1bb4de9a4e62c1c7f6161d441db3e8d832e8 Mon Sep 17 00:00:00 2001 From: Rifa Achrinza <25147899+achrinza@users.noreply.github.com> Date: Wed, 27 Nov 2019 00:00:00 +0000 Subject: [PATCH 1/2] add missing 'ORDER BY' before 'OFFSET' --- lib/mssql.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mssql.js b/lib/mssql.js index cdad976..3c258ff 100644 --- a/lib/mssql.js +++ b/lib/mssql.js @@ -426,7 +426,7 @@ function buildLimit(limit, offset) { if (isNaN(offset)) { offset = 0; } - let sql = 'OFFSET ' + offset + ' ROWS'; + let sql = 'ORDER BY RowNum OFFSET ' + offset + ' ROWS'; if (limit >= 0) { sql += ' FETCH NEXT ' + limit + ' ROWS ONLY'; } From 3f21d1dca5af0f04816b9b63917c8eaa47770995 Mon Sep 17 00:00:00 2001 From: Francisco Buceta Date: Sun, 19 Jan 2020 18:39:56 +0100 Subject: [PATCH 2/2] add tests for limit&limit with supportsOffsetFetch --- test/mssql.test.js | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/test/mssql.test.js b/test/mssql.test.js index bbb1931..040661e 100644 --- a/test/mssql.test.js +++ b/test/mssql.test.js @@ -7,12 +7,21 @@ require('./init'); const should = require('should'); -let Post, PostWithUUID, PostWithStringId, db; +let User, Post, PostWithUUID, PostWithStringId, db, dbOSF; describe('mssql connector', function() { before(function() { /* global getDataSource */ db = getDataSource(); + dbOSF = getDataSource({ + supportsOffSetFetch: true, + }); + + User = dbOSF.define('User', { + id: {type: Number, generated: true, id: true}, + name: String, + age: Number, + }); Post = db.define('PostWithBoolean', { title: {type: String, length: 255, index: true}, @@ -242,6 +251,28 @@ describe('mssql connector', function() { ); }); + it('should support limit', function(done) { + Post.find({ + limit: 3, + }, (err, result) => { + should.not.exist(err); + should.exist(result); + result.should.have.length(3); + done(); + }); + }); + + it('should support limit with \'supportsOffsetFetch\'', function(done) { + User.find({ + limit: 3, + }, (err, result) => { + should.not.exist(err); + should.exist(result); + result.should.have.length(3); + done(); + }); + }); + context('regexp operator', function() { beforeEach(function deleteExistingTestFixtures(done) { Post.destroyAll(done);