summaryrefslogtreecommitdiff
path: root/jstests/cursor6.js
diff options
context:
space:
mode:
authorAaron <aaron@10gen.com>2009-02-24 14:38:03 -0500
committerAaron <aaron@10gen.com>2009-02-24 14:38:03 -0500
commit72f2a51747d29bc28f9407ebbab11b75256c305a (patch)
tree66542b0da4ce7b2687f697181cd6a52fdd3ea76c /jstests/cursor6.js
parentb257287672a19d2a9f56a6840f56f481ac3ec02d (diff)
downloadmongo-72f2a51747d29bc28f9407ebbab11b75256c305a.tar.gz
Update jstests for new query optimizer
Diffstat (limited to 'jstests/cursor6.js')
-rw-r--r--jstests/cursor6.js54
1 files changed, 33 insertions, 21 deletions
diff --git a/jstests/cursor6.js b/jstests/cursor6.js
index 30789a0f373..9a45f936c25 100644
--- a/jstests/cursor6.js
+++ b/jstests/cursor6.js
@@ -23,45 +23,58 @@ function checkExplain( e, idx, reverse, nScanned ) {
}
function check( indexed ) {
- e = r.find().sort( { a: 1, b: 1 } ).explain();
- checkExplain( e, false, false, 4 );
- f = r.find().sort( { a: 1, b: 1 } );
+ var hint;
+ if ( indexed ) {
+ hint = { a: 1, b: -1 };
+ } else {
+ hint = { $natural: 1 };
+ }
+
+ e = r.find().sort( { a: 1, b: 1 } ).hint( hint ).explain();
+ checkExplain( e, indexed, false, 4 );
+ f = r.find().sort( { a: 1, b: 1 } ).hint( hint );
eq( z[ 0 ], f[ 0 ] );
eq( z[ 1 ], f[ 1 ] );
eq( z[ 2 ], f[ 2 ] );
eq( z[ 3 ], f[ 3 ] );
- e = r.find().sort( { a: 1, b: -1 } ).explain();
- checkExplain( e, true && indexed, false, 4 );
- f = r.find().sort( { a: 1, b: -1 } );
+ e = r.find().sort( { a: 1, b: -1 } ).hint( hint ).explain();
+ checkExplain( e, indexed, false, 4 );
+ f = r.find().sort( { a: 1, b: -1 } ).hint( hint );
eq( z[ 1 ], f[ 0 ] );
eq( z[ 0 ], f[ 1 ] );
eq( z[ 3 ], f[ 2 ] );
eq( z[ 2 ], f[ 3 ] );
- e = r.find().sort( { a: -1, b: 1 } ).explain();
- checkExplain( e, true && indexed, true && indexed, 4 );
- f = r.find().sort( { a: -1, b: 1 } );
+ e = r.find().sort( { a: -1, b: 1 } ).hint( hint ).explain();
+ checkExplain( e, indexed, true && indexed, 4 );
+ f = r.find().sort( { a: -1, b: 1 } ).hint( hint );
eq( z[ 2 ], f[ 0 ] );
eq( z[ 3 ], f[ 1 ] );
eq( z[ 0 ], f[ 2 ] );
eq( z[ 1 ], f[ 3 ] );
- e = r.find( { a: { $gte: 2 } } ).sort( { a: 1, b: -1 } ).explain();
- checkExplain( e, true && indexed, false, indexed ? 2 : 4 );
- f = r.find( { a: { $gte: 2 } } ).sort( { a: 1, b: -1 } );
+ e = r.find( { a: { $gte: 2 } } ).sort( { a: 1, b: -1 } ).hint( hint ).explain();
+ checkExplain( e, indexed, false, indexed ? 2 : 4 );
+ f = r.find( { a: { $gte: 2 } } ).sort( { a: 1, b: -1 } ).hint( hint );
eq( z[ 3 ], f[ 0 ] );
eq( z[ 2 ], f[ 1 ] );
- e = r.find( { a : { $gte: 2 } } ).sort( { a: -1, b: 1 } ).explain();
- checkExplain( e, true && indexed, true && indexed, indexed ? 2 : 4 );
- f = r.find( { a: { $gte: 2 } } ).sort( { a: -1, b: 1 } );
+ e = r.find( { a : { $gte: 2 } } ).sort( { a: -1, b: 1 } ).hint( hint ).explain();
+ checkExplain( e, indexed, true && indexed, indexed ? 2 : 4 );
+ f = r.find( { a: { $gte: 2 } } ).sort( { a: -1, b: 1 } ).hint( hint );
+ eq( z[ 2 ], f[ 0 ] );
+ eq( z[ 3 ], f[ 1 ] );
+
+ e = r.find( { a : { $gte: 2 } } ).sort( { a: 1, b: 1 } ).hint( hint ).explain();
+ checkExplain( e, indexed, false, indexed ? 2 : 4 );
+ f = r.find( { a: { $gte: 2 } } ).sort( { a: 1, b: 1 } ).hint( hint );
eq( z[ 2 ], f[ 0 ] );
eq( z[ 3 ], f[ 1 ] );
- e = r.find().sort( { a: -1, b: -1 } ).explain();
- checkExplain( e, false, false, 4 );
- f = r.find().sort( { a: -1, b: -1 } );
+ e = r.find().sort( { a: -1, b: -1 } ).hint( hint ).explain();
+ checkExplain( e, indexed, false, 4 );
+ f = r.find().sort( { a: -1, b: -1 } ).hint( hint );
eq( z[ 3 ], f[ 0 ] );
eq( z[ 2 ], f[ 1 ] );
eq( z[ 1 ], f[ 2 ] );
@@ -79,10 +92,9 @@ z = [ { a: 1, b: 1 },
for( i = 0; i < z.length; ++i )
r.save( z[ i ] );
-check( false );
-
r.ensureIndex( { a: 1, b: -1 } );
+check( false );
check( true );
-assert.eq( "BasicCursor", r.find().sort( { a: 1, b: -1, z: 1 } ).explain().cursor );
+assert.eq( "BasicCursor", r.find().sort( { a: 1, b: -1, z: 1 } ).hint( { $natural: -1 } ).explain().cursor );