summaryrefslogtreecommitdiff
path: root/src/mongo/s/commands/cluster_explain_cmd.cpp
diff options
context:
space:
mode:
authorDavid Storch <david.storch@10gen.com>2017-02-10 11:52:18 -0500
committerDavid Storch <david.storch@10gen.com>2017-03-13 09:46:14 -0400
commit82b16740f8a66093b453a73a04b3b9bd00e5d7a0 (patch)
tree62d156fc9676526ecbea19cd03ef7a293579c4df /src/mongo/s/commands/cluster_explain_cmd.cpp
parent73f9e8b8a8422becf8694fe3d82c0e647dc71189 (diff)
downloadmongo-82b16740f8a66093b453a73a04b3b9bd00e5d7a0.tar.gz
SERVER-19758 add support for "executionStats" and "allPlansExecution" to agg explain
Like other explainable commands, aggregate can now be explained using the explain command, e.g. db.runCommand({explain: {aggregate: ...}, verbosity: "executionStats"}). The existing explain:true flag corresponds to "queryPlanner" mode and is still supported. However, explain:true cannot be specified when explaining aggregate via the explain command. Additional execution information is provided only in the $cursor section of the aggregation explain output. Having aggregation stages themselves track and report execution info is further work.
Diffstat (limited to 'src/mongo/s/commands/cluster_explain_cmd.cpp')
-rw-r--r--src/mongo/s/commands/cluster_explain_cmd.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/mongo/s/commands/cluster_explain_cmd.cpp b/src/mongo/s/commands/cluster_explain_cmd.cpp
index 4031a45c02a..099d6233a60 100644
--- a/src/mongo/s/commands/cluster_explain_cmd.cpp
+++ b/src/mongo/s/commands/cluster_explain_cmd.cpp
@@ -112,10 +112,9 @@ public:
int options,
std::string& errmsg,
BSONObjBuilder& result) {
- ExplainCommon::Verbosity verbosity;
- Status parseStatus = ExplainCommon::parseCmdBSON(cmdObj, &verbosity);
- if (!parseStatus.isOK()) {
- return appendCommandStatus(result, parseStatus);
+ auto verbosity = ExplainOptions::parseCmdBSON(cmdObj);
+ if (!verbosity.isOK()) {
+ return appendCommandStatus(result, verbosity.getStatus());
}
// This is the nested command which we are explaining.
@@ -139,8 +138,8 @@ public:
rpc::ServerSelectionMetadata metadata(secondaryOk, readPref.getValue());
// Actually call the nested command's explain(...) method.
- Status explainStatus =
- commToExplain->explain(opCtx, dbName, explainObj, verbosity, metadata, &result);
+ Status explainStatus = commToExplain->explain(
+ opCtx, dbName, explainObj, verbosity.getValue(), metadata, &result);
if (!explainStatus.isOK()) {
return appendCommandStatus(result, explainStatus);
}