summaryrefslogtreecommitdiff
path: root/jstests
diff options
context:
space:
mode:
Diffstat (limited to 'jstests')
-rw-r--r--jstests/core/skip1.js20
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() );
+});