diff options
author | Aaron <aaron@10gen.com> | 2009-02-24 14:38:03 -0500 |
---|---|---|
committer | Aaron <aaron@10gen.com> | 2009-02-24 14:38:03 -0500 |
commit | 72f2a51747d29bc28f9407ebbab11b75256c305a (patch) | |
tree | 66542b0da4ce7b2687f697181cd6a52fdd3ea76c /jstests/cursor6.js | |
parent | b257287672a19d2a9f56a6840f56f481ac3ec02d (diff) | |
download | mongo-72f2a51747d29bc28f9407ebbab11b75256c305a.tar.gz |
Update jstests for new query optimizer
Diffstat (limited to 'jstests/cursor6.js')
-rw-r--r-- | jstests/cursor6.js | 54 |
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 ); |