diff options
Diffstat (limited to 'jstests/core')
-rw-r--r-- | jstests/core/skip1.js | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/jstests/core/skip1.js b/jstests/core/skip1.js index c620fb01bca..c1895e8889a 100644 --- a/jstests/core/skip1.js +++ b/jstests/core/skip1.js @@ -1,8 +1,9 @@ // SERVER-2845 When skipping objects without loading them, they shouldn't be // included in the nscannedObjects count. +var t = db.jstests_skip1; + if ( 0 ) { // SERVER-2845 -t = db.jstests_skip1; t.drop(); t.ensureIndex( {a:1} ); @@ -12,4 +13,19 @@ t.save( {a:5} ); assert.eq( 3, t.find( {a:5} ).skip( 2 ).explain().nscanned ); assert.eq( 1, t.find( {a:5} ).skip( 2 ).explain().nscannedObjects ); -}
\ No newline at end of file +} + +// SERVER-13537: Ensure that combinations of skip and limit don't crash +// the server due to overflow. +t.drop(); +for (var i = 0; i < 10; i++) { + t.save({a: i}); +} +assert.eq( 9, t.find().sort({a: 1}).limit(2147483647).skip(1).itcount() ); +assert.eq( 0, t.find().sort({a: 1}).skip(2147483647).limit(1).itcount() ); +assert.throws( function() { + assert.eq( 0, t.find().sort({a: 1}).skip(2147483648).itcount() ); +}); +assert.throws( function() { + assert.eq( 0, t.find().sort({a: 1}).limit(2147483648).itcount() ); +}); |