summaryrefslogtreecommitdiff
path: root/s/commands_public.cpp
diff options
context:
space:
mode:
authorMathias Stearn <mathias@10gen.com>2010-07-12 14:27:37 -0400
committerMathias Stearn <mathias@10gen.com>2010-07-12 15:57:37 -0400
commit4676c5ac07fe44ae985cfd7fbb0c68c0f90f5f9f (patch)
tree5fae826f8ca3837f872dd93af5e69bdb4abc6757 /s/commands_public.cpp
parent7ea18a86ad39ac68d23d07321c79f20f4a0c24bc (diff)
downloadmongo-4676c5ac07fe44ae985cfd7fbb0c68c0f90f5f9f.tar.gz
Sharded distinct uses shards not chunks SERVER-952
Diffstat (limited to 's/commands_public.cpp')
-rw-r--r--s/commands_public.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/s/commands_public.cpp b/s/commands_public.cpp
index e8d9e4a2d0a..d7301cd8f98 100644
--- a/s/commands_public.cpp
+++ b/s/commands_public.cpp
@@ -396,16 +396,14 @@ namespace mongo {
massert( 10420 , "how could chunk manager be null!" , cm );
BSONObj query = getQuery(cmdObj);
- vector<shared_ptr<ChunkRange> > chunks;
- cm->getChunksForQuery( chunks , query );
+ set<Shard> shards;
+ cm->getShardsForQuery(shards, query);
set<BSONObj,BSONObjCmp> all;
int size = 32;
- for ( vector<shared_ptr<ChunkRange> >::iterator i = chunks.begin() ; i != chunks.end() ; i++ ){
- shared_ptr<ChunkRange> c = *i;
-
- ShardConnection conn( c->getShard() , fullns );
+ for ( set<Shard>::iterator i=shards.begin(), end=shards.end() ; i != end; ++i ){
+ ShardConnection conn( *i , fullns );
BSONObj res;
bool ok = conn->runCommand( conf->getName() , cmdObj , res );
conn.done();
@@ -415,11 +413,11 @@ namespace mongo {
return false;
}
- BSONObjIterator it( res["values"].embeddedObjectUserCheck() );
+ BSONObjIterator it( res["values"].embeddedObject() );
while ( it.more() ){
BSONElement nxt = it.next();
BSONObjBuilder temp(32);
- temp.appendAs( nxt , "x" );
+ temp.appendAs( nxt , "" );
all.insert( temp.obj() );
}