blob: d9928bf2873022f95fda1f2e37334fcc37fbcd0f (
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
admin = db.getMongo().getDB( "admin" );
a = db.jstests_rename_a;
b = db.jstests_rename_b;
c = db.jstests_rename_c;
a.drop();
b.drop();
c.drop();
a.save( {a: 1} );
a.save( {a: 2} );
a.ensureIndex( {a:1} );
a.ensureIndex( {b:1} );
c.save( {a: 100} );
assert.commandFailed( admin.runCommand( {renameCollection:"test.jstests_rename_a", to:"test.jstests_rename_c"} ) );
assert.commandWorked( admin.runCommand( {renameCollection:"test.jstests_rename_a", to:"test.jstests_rename_b"} ) );
assert.eq( 0, a.find().count() );
assert.eq( 2, b.find().count() );
assert( db.system.namespaces.findOne( {name:"test.jstests_rename_b" } ) );
assert( !db.system.namespaces.findOne( {name:"test.jstests_rename_a" } ) );
assert.eq( 3, db.system.indexes.find( {ns:"test.jstests_rename_b"} ).count() );
assert( b.find( {a:1} ).explain().cursor.match( /^BtreeCursor/ ) );
// now try renaming a capped collection
a.drop();
b.drop();
c.drop();
// TODO: too many numbers hard coded here
db.createCollection( "jstests_rename_a", {capped:true,size:10000} );
for( i = 0; i < 10; ++i ) {
a.save( { i: i } );
}
assert.commandWorked( admin.runCommand( {renameCollection:"test.jstests_rename_a", to:"test.jstests_rename_b"} ) );
assert.eq( 1, b.count( {i:9} ) );
for( i = 10; i < 250; ++i ) {
b.save( { i: i } );
}
assert.eq( 0, b.count( {i:9} ) );
assert.eq( 1, b.count( {i:19} ) );
assert( db.system.namespaces.findOne( {name:"test.jstests_rename_b" } ) );
assert( !db.system.namespaces.findOne( {name:"test.jstests_rename_a" } ) );
assert.eq( true, db.system.namespaces.findOne( {name:"test.jstests_rename_b"} ).options.capped );
|