summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/pipeline.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/pipeline/pipeline.cpp')
-rw-r--r--src/mongo/db/pipeline/pipeline.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/mongo/db/pipeline/pipeline.cpp b/src/mongo/db/pipeline/pipeline.cpp
index 486b2e3ac7d..9ef25e6e2f7 100644
--- a/src/mongo/db/pipeline/pipeline.cpp
+++ b/src/mongo/db/pipeline/pipeline.cpp
@@ -26,20 +26,16 @@
* exception statement from all source files in the program, then also delete
* it in the license file.
*/
-
#define MONGO_LOGV2_DEFAULT_COMPONENT ::mongo::logv2::LogComponent::kDefault
#include "mongo/db/pipeline/pipeline.h"
#include "mongo/logv2/log.h"
-#include <algorithm>
-
#include "mongo/base/error_codes.h"
#include "mongo/db/bson/dotted_path_support.h"
#include "mongo/db/exec/document_value/document.h"
#include "mongo/db/jsobj.h"
#include "mongo/db/operation_context.h"
-#include "mongo/db/pipeline/accumulator.h"
#include "mongo/db/pipeline/document_source.h"
#include "mongo/db/pipeline/document_source_match.h"
#include "mongo/db/pipeline/document_source_merge.h"
@@ -50,6 +46,8 @@
#include "mongo/db/storage/storage_options.h"
#include "mongo/util/fail_point.h"
#include "mongo/util/str.h"
+#include <algorithm>
+
namespace mongo {
@@ -669,6 +667,18 @@ std::unique_ptr<Pipeline, PipelineDeleter> Pipeline::makePipeline(
return pipeline;
}
+std::ostream& operator<<(std::ostream& os, const Pipeline& pipeline) {
+ vector<Value> serializedSources;
+ for (auto&& source : pipeline.getSources()) {
+ source->serializeToArray(serializedSources, explain::VerbosityEnum::kQueryPlanner);
+ }
+
+ for (auto stage : serializedSources) {
+ os << stage << " ";
+ }
+ return os;
+}
+
Pipeline::SourceContainer::iterator Pipeline::optimizeEndOfPipeline(
Pipeline::SourceContainer::iterator itr, Pipeline::SourceContainer* container) {
// We must create a new SourceContainer representing the subsection of the pipeline we wish to