// 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.drop(); t.ensureIndex( {a:1} ); t.save( {a:5} ); t.save( {a:5} ); 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 ); } // 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() ); if (!db.getMongo().useReadCommands()) { // If we're using OP_QUERY/OP_GET_MORE reads rather than find/getMore command, then the skip and // limit fields must fit inside a 32-bit signed integer. 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() ); }); }