blob: ae8f589d616952f5902fc655abc51a18ac98131d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
// 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());
});
}
|