diff options
author | Jason Rassi <rassi@10gen.com> | 2014-09-05 18:44:18 -0400 |
---|---|---|
committer | Jason Rassi <rassi@10gen.com> | 2014-09-08 20:30:18 -0400 |
commit | 266b75ca868a95fd2a4e30e3cf4898de1e13698d (patch) | |
tree | 189beaeea2aa75ed07f476208c1604cb29a7c33d /src/mongo/db/commands/group.cpp | |
parent | 3c23add3707d5b0b08c4cf058c2e4963244eff4f (diff) | |
download | mongo-266b75ca868a95fd2a4e30e3cf4898de1e13698d.tar.gz |
SERVER-14099 Add explain command support for group
Diffstat (limited to 'src/mongo/db/commands/group.cpp')
-rw-r--r-- | src/mongo/db/commands/group.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/mongo/db/commands/group.cpp b/src/mongo/db/commands/group.cpp index 676bf75bf68..5a861d09636 100644 --- a/src/mongo/db/commands/group.cpp +++ b/src/mongo/db/commands/group.cpp @@ -169,4 +169,28 @@ namespace mongo { return true; } + Status GroupCommand::explain(OperationContext* txn, + const std::string& dbname, + const BSONObj& cmdObj, + Explain::Verbosity verbosity, + BSONObjBuilder* out) const { + GroupRequest groupRequest; + Status parseRequestStatus = parseRequest(dbname, cmdObj, &groupRequest); + if (!parseRequestStatus.isOK()) { + return parseRequestStatus; + } + + Client::ReadContext ctx(txn, groupRequest.ns); + Database* db = ctx.ctx().db(); + + PlanExecutor *rawPlanExecutor; + Status getExecStatus = getExecutorGroup(txn, db, groupRequest, &rawPlanExecutor); + if (!getExecStatus.isOK()) { + return getExecStatus; + } + scoped_ptr<PlanExecutor> planExecutor(rawPlanExecutor); + + return Explain::explainStages(planExecutor.get(), verbosity, out); + } + } // namespace mongo |