blob: f945ec9d7e8656e3f82d66c4c5d9eb2058735399 (
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
|
// Yield and delete test case for query optimizer cursor.
t = db.jstests_distinct3;
t.drop();
t.ensureIndex({a:1});
t.ensureIndex({b:1});
for( i = 0; i < 50; ++i ) {
for( j = 0; j < 20; ++j ) {
t.save({a:i,c:i,d:j});
}
}
for( i = 0; i < 1000; ++i ) {
t.save({b:i,c:i+50});
}
db.getLastError();
// The idea here is to try and remove the last match for the {a:1} index scan while distinct is yielding.
p = startParallelShell( 'for( i = 0; i < 2500; ++i ) { db.jstests_distinct3.remove({a:49}); for( j = 0; j < 20; ++j ) { db.jstests_distinct3.save({a:49,c:49,d:j}) } }' );
for( i = 0; i < 100; ++i ) {
count = t.distinct( 'c', {$or:[{a:{$gte:0},d:0},{b:{$gte:0}}]} ).length;
assert.gt( count, 1000 );
}
p();
|