summaryrefslogtreecommitdiff
path: root/jstests/core/distinct3.js
diff options
context:
space:
mode:
authorRandolph Tan <randolph@10gen.com>2014-01-14 14:09:42 -0500
committerRandolph Tan <randolph@10gen.com>2014-02-28 16:26:33 -0500
commit5595b945603b0712c537787e31e6da661c424fee (patch)
tree90945ee3fe4931032f3af2d397bb755fbf5d30ef /jstests/core/distinct3.js
parentcd62080dcb036e83f8fca6d68d9bcab67bf7a21c (diff)
downloadmongo-5595b945603b0712c537787e31e6da661c424fee.tar.gz
SERVER-12127 migrate js tests to jscore suite when not related to writes
Moved test jstest/[a-i].js -> jstests/core/ and made changes to comply with write command api
Diffstat (limited to 'jstests/core/distinct3.js')
-rw-r--r--jstests/core/distinct3.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/jstests/core/distinct3.js b/jstests/core/distinct3.js
new file mode 100644
index 00000000000..0add7aeb95e
--- /dev/null
+++ b/jstests/core/distinct3.js
@@ -0,0 +1,35 @@
+// Yield and delete test case for query optimizer cursor. SERVER-4401
+
+t = db.jstests_distinct3;
+t.drop();
+
+t.ensureIndex({a:1});
+t.ensureIndex({b:1});
+
+var bulk = t.initializeUnorderedBulkOp();
+for( i = 0; i < 50; ++i ) {
+ for( j = 0; j < 2; ++j ) {
+ bulk.insert({a:i,c:i,d:j});
+ }
+}
+for( i = 0; i < 100; ++i ) {
+ bulk.insert({b:i,c:i+50});
+}
+assert.writeOK(bulk.execute());
+
+// Attempt to remove the last match for the {a:1} index scan while distinct is yielding.
+p = startParallelShell( 'var bulk = db.jstests_distinct3.initializeUnorderedBulkOp();' +
+ 'for( i = 0; i < 100; ++i ) { ' +
+ ' bulk.remove( { a:49 } ); ' +
+ ' for( j = 0; j < 20; ++j ) { ' +
+ ' bulk.insert( { a:49, c:49, d:j } ); ' +
+ ' } ' +
+ ' bulk.execute(); ' +
+ '} ' );
+
+for( i = 0; i < 100; ++i ) {
+ count = t.distinct( 'c', {$or:[{a:{$gte:0},d:0},{b:{$gte:0}}]} ).length;
+ assert.gt( count, 100 );
+}
+
+p();