summaryrefslogtreecommitdiff
path: root/src/mongo/db
diff options
context:
space:
mode:
authorjoshua <80741223+jlap199@users.noreply.github.com>2023-03-09 02:29:32 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-03-13 22:48:42 +0000
commit23b37076f3c22bc2256aaa7f6e98bc9d0c015890 (patch)
treeb7a3c8c400a56f3b0ccd1e8fba8392117ee8f352 /src/mongo/db
parent9f2867c9da77e2d64df3852f7d4578f10e6f0817 (diff)
downloadmongo-23b37076f3c22bc2256aaa7f6e98bc9d0c015890.tar.gz
SERVER-74712 Add unimplemented document source serializers
Diffstat (limited to 'src/mongo/db')
-rw-r--r--src/mongo/db/pipeline/document_source.cpp7
-rw-r--r--src/mongo/db/pipeline/document_source.h21
-rw-r--r--src/mongo/db/pipeline/document_source_bucket_auto.h4
-rw-r--r--src/mongo/db/pipeline/document_source_change_stream_add_post_image.h4
-rw-r--r--src/mongo/db/pipeline/document_source_change_stream_add_pre_image.h4
-rw-r--r--src/mongo/db/pipeline/document_source_change_stream_check_invalidate.h4
-rw-r--r--src/mongo/db/pipeline/document_source_change_stream_check_resumability.h4
-rw-r--r--src/mongo/db/pipeline/document_source_change_stream_check_topology_change.h4
-rw-r--r--src/mongo/db/pipeline/document_source_change_stream_ensure_resume_token_present.h4
-rw-r--r--src/mongo/db/pipeline/document_source_change_stream_handle_topology_change.h4
-rw-r--r--src/mongo/db/pipeline/document_source_change_stream_oplog_match.h4
-rw-r--r--src/mongo/db/pipeline/document_source_change_stream_split_large_event.h4
-rw-r--r--src/mongo/db/pipeline/document_source_change_stream_transform.h4
-rw-r--r--src/mongo/db/pipeline/document_source_change_stream_unwind_transaction.h4
-rw-r--r--src/mongo/db/pipeline/document_source_coll_stats.h4
-rw-r--r--src/mongo/db/pipeline/document_source_current_op.h4
-rw-r--r--src/mongo/db/pipeline/document_source_cursor.h4
-rw-r--r--src/mongo/db/pipeline/document_source_densify.h4
-rw-r--r--src/mongo/db/pipeline/document_source_exchange.h4
-rw-r--r--src/mongo/db/pipeline/document_source_facet.h4
-rw-r--r--src/mongo/db/pipeline/document_source_find_and_modify_image_lookup.h4
-rw-r--r--src/mongo/db/pipeline/document_source_geo_near.h4
-rw-r--r--src/mongo/db/pipeline/document_source_graph_lookup.h9
-rw-r--r--src/mongo/db/pipeline/document_source_group_base.h3
-rw-r--r--src/mongo/db/pipeline/document_source_index_stats.h4
-rw-r--r--src/mongo/db/pipeline/document_source_internal_all_collection_stats.h9
-rw-r--r--src/mongo/db/pipeline/document_source_internal_apply_oplog_update.h4
-rw-r--r--src/mongo/db/pipeline/document_source_internal_compute_geo_near_distance.h4
-rw-r--r--src/mongo/db/pipeline/document_source_internal_convert_bucket_index_stats.h4
-rw-r--r--src/mongo/db/pipeline/document_source_internal_inhibit_optimization.h4
-rw-r--r--src/mongo/db/pipeline/document_source_internal_shard_filter.h4
-rw-r--r--src/mongo/db/pipeline/document_source_internal_shardserver_info.h4
-rw-r--r--src/mongo/db/pipeline/document_source_internal_split_pipeline.h4
-rw-r--r--src/mongo/db/pipeline/document_source_internal_unpack_bucket.h9
-rw-r--r--src/mongo/db/pipeline/document_source_limit.h4
-rw-r--r--src/mongo/db/pipeline/document_source_list_cached_and_active_users.h4
-rw-r--r--src/mongo/db/pipeline/document_source_list_catalog.h4
-rw-r--r--src/mongo/db/pipeline/document_source_list_local_sessions.h4
-rw-r--r--src/mongo/db/pipeline/document_source_list_sessions.h4
-rw-r--r--src/mongo/db/pipeline/document_source_lookup.h9
-rw-r--r--src/mongo/db/pipeline/document_source_match.h4
-rw-r--r--src/mongo/db/pipeline/document_source_merge.h4
-rw-r--r--src/mongo/db/pipeline/document_source_mock.h4
-rw-r--r--src/mongo/db/pipeline/document_source_operation_metrics.h4
-rw-r--r--src/mongo/db/pipeline/document_source_out.h4
-rw-r--r--src/mongo/db/pipeline/document_source_plan_cache_stats.h9
-rw-r--r--src/mongo/db/pipeline/document_source_queue.h4
-rw-r--r--src/mongo/db/pipeline/document_source_redact.h4
-rw-r--r--src/mongo/db/pipeline/document_source_sample.h4
-rw-r--r--src/mongo/db/pipeline/document_source_sample_from_random_cursor.h3
-rw-r--r--src/mongo/db/pipeline/document_source_sequential_document_cache.h4
-rw-r--r--src/mongo/db/pipeline/document_source_set_variable_from_subpipeline.h3
-rw-r--r--src/mongo/db/pipeline/document_source_set_window_fields.h4
-rw-r--r--src/mongo/db/pipeline/document_source_single_document_transformation.h3
-rw-r--r--src/mongo/db/pipeline/document_source_skip.h4
-rw-r--r--src/mongo/db/pipeline/document_source_sort.h9
-rw-r--r--src/mongo/db/pipeline/document_source_tee_consumer.h4
-rw-r--r--src/mongo/db/pipeline/document_source_telemetry.h4
-rw-r--r--src/mongo/db/pipeline/document_source_test_optimizations.h3
-rw-r--r--src/mongo/db/pipeline/document_source_union_with.h4
-rw-r--r--src/mongo/db/pipeline/document_source_unwind.h4
-rw-r--r--src/mongo/db/query/serialization_options.h2
-rw-r--r--src/mongo/db/s/document_source_analyze_shard_key_read_write_distribution.h4
-rw-r--r--src/mongo/db/s/resharding/document_source_resharding_add_resume_id.h4
-rw-r--r--src/mongo/db/s/resharding/document_source_resharding_iterate_transaction.h4
-rw-r--r--src/mongo/db/s/resharding/document_source_resharding_ownership_match.h4
66 files changed, 307 insertions, 0 deletions
diff --git a/src/mongo/db/pipeline/document_source.cpp b/src/mongo/db/pipeline/document_source.cpp
index de103b46de8..73fce6aceca 100644
--- a/src/mongo/db/pipeline/document_source.cpp
+++ b/src/mongo/db/pipeline/document_source.cpp
@@ -282,6 +282,13 @@ void DocumentSource::serializeToArray(vector<Value>& array,
}
}
+void DocumentSource::serializeToArray(vector<Value>& array, SerializationOptions opts) const {
+ Value entry = serialize(opts);
+ if (!entry.missing()) {
+ array.push_back(entry);
+ }
+}
+
namespace {
std::list<boost::intrusive_ptr<DocumentSource>> throwOnParse(
BSONElement spec, const boost::intrusive_ptr<ExpressionContext>& expCtx) {
diff --git a/src/mongo/db/pipeline/document_source.h b/src/mongo/db/pipeline/document_source.h
index 15083ab7a1e..c77e32da622 100644
--- a/src/mongo/db/pipeline/document_source.h
+++ b/src/mongo/db/pipeline/document_source.h
@@ -444,12 +444,22 @@ public:
*
* The 'explain' parameter indicates the explain verbosity mode, or is equal boost::none if no
* explain is requested.
+ *
+ * TODO: Remove this once all concrete types have implemented serialize(SerializationOptions).
*/
virtual void serializeToArray(
std::vector<Value>& array,
boost::optional<ExplainOptions::Verbosity> explain = boost::none) const;
/**
+ * In the default case, serializes the DocumentSource and adds it to the std::vector<Value>.
+ *
+ * A subclass may choose to overwrite this, rather than serialize, if it should output multiple
+ * stages (eg, $sort sometimes also outputs a $limit).
+ */
+ virtual void serializeToArray(std::vector<Value>& array, SerializationOptions opts) const;
+
+ /**
* Shortcut method to get a BSONObj for debugging. Often useful in log messages, but is not
* cheap so avoid doing so on a hot path at a low verbosity.
*/
@@ -805,9 +815,20 @@ private:
*
* The 'explain' parameter indicates the explain verbosity mode, or is equal boost::none if no
* explain is requested.
+ *
+ * TODO: Remove this once all concrete types have implemented serialize(SerializationOptions).
*/
virtual Value serialize(
boost::optional<ExplainOptions::Verbosity> explain = boost::none) const = 0;
+
+ /**
+ * Create a Value that represents the document source.
+ *
+ * This is used by the default implementation of serializeToArray() to add this object
+ * to a pipeline being serialized. Returning a missing() Value results in no entry
+ * being added to the array for this stage (DocumentSource).
+ */
+ virtual Value serialize(SerializationOptions opts) const = 0;
};
/**
diff --git a/src/mongo/db/pipeline/document_source_bucket_auto.h b/src/mongo/db/pipeline/document_source_bucket_auto.h
index abc349b67b7..044adb8d89a 100644
--- a/src/mongo/db/pipeline/document_source_bucket_auto.h
+++ b/src/mongo/db/pipeline/document_source_bucket_auto.h
@@ -46,6 +46,10 @@ class DocumentSourceBucketAuto final : public DocumentSource {
public:
static constexpr StringData kStageName = "$bucketAuto"_sd;
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
DepsTracker::State getDependencies(DepsTracker* deps) const final;
void addVariableRefs(std::set<Variables::Id>* refs) const final;
diff --git a/src/mongo/db/pipeline/document_source_change_stream_add_post_image.h b/src/mongo/db/pipeline/document_source_change_stream_add_post_image.h
index 26990b86c0a..49b9792d6a5 100644
--- a/src/mongo/db/pipeline/document_source_change_stream_add_post_image.h
+++ b/src/mongo/db/pipeline/document_source_change_stream_add_post_image.h
@@ -118,6 +118,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
const char* getSourceName() const final {
return kStageName.rawData();
}
diff --git a/src/mongo/db/pipeline/document_source_change_stream_add_pre_image.h b/src/mongo/db/pipeline/document_source_change_stream_add_pre_image.h
index ba2214ff702..81c66d11c55 100644
--- a/src/mongo/db/pipeline/document_source_change_stream_add_pre_image.h
+++ b/src/mongo/db/pipeline/document_source_change_stream_add_pre_image.h
@@ -111,6 +111,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
const char* getSourceName() const final {
return kStageName.rawData();
}
diff --git a/src/mongo/db/pipeline/document_source_change_stream_check_invalidate.h b/src/mongo/db/pipeline/document_source_change_stream_check_invalidate.h
index 4113a217b10..942a47c516b 100644
--- a/src/mongo/db/pipeline/document_source_change_stream_check_invalidate.h
+++ b/src/mongo/db/pipeline/document_source_change_stream_check_invalidate.h
@@ -66,6 +66,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
void addVariableRefs(std::set<Variables::Id>* refs) const final {}
static boost::intrusive_ptr<DocumentSourceChangeStreamCheckInvalidate> createFromBson(
diff --git a/src/mongo/db/pipeline/document_source_change_stream_check_resumability.h b/src/mongo/db/pipeline/document_source_change_stream_check_resumability.h
index c3eff11ae26..c35f7a4e772 100644
--- a/src/mongo/db/pipeline/document_source_change_stream_check_resumability.h
+++ b/src/mongo/db/pipeline/document_source_change_stream_check_resumability.h
@@ -92,6 +92,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const override;
+ Value serialize(SerializationOptions opts) const override {
+ MONGO_UNIMPLEMENTED;
+ }
+
void addVariableRefs(std::set<Variables::Id>* refs) const final {}
static boost::intrusive_ptr<DocumentSourceChangeStreamCheckResumability> createFromBson(
diff --git a/src/mongo/db/pipeline/document_source_change_stream_check_topology_change.h b/src/mongo/db/pipeline/document_source_change_stream_check_topology_change.h
index a1dea14ae63..d8a207cf917 100644
--- a/src/mongo/db/pipeline/document_source_change_stream_check_topology_change.h
+++ b/src/mongo/db/pipeline/document_source_change_stream_check_topology_change.h
@@ -69,6 +69,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
void addVariableRefs(std::set<Variables::Id>* refs) const final {}
private:
diff --git a/src/mongo/db/pipeline/document_source_change_stream_ensure_resume_token_present.h b/src/mongo/db/pipeline/document_source_change_stream_ensure_resume_token_present.h
index 6fcabf4c0b6..71aa6be58ac 100644
--- a/src/mongo/db/pipeline/document_source_change_stream_ensure_resume_token_present.h
+++ b/src/mongo/db/pipeline/document_source_change_stream_ensure_resume_token_present.h
@@ -56,6 +56,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
private:
/**
* Use the create static method to create a DocumentSourceChangeStreamEnsureResumeTokenPresent.
diff --git a/src/mongo/db/pipeline/document_source_change_stream_handle_topology_change.h b/src/mongo/db/pipeline/document_source_change_stream_handle_topology_change.h
index 007c4c47d70..8c795ffdc1e 100644
--- a/src/mongo/db/pipeline/document_source_change_stream_handle_topology_change.h
+++ b/src/mongo/db/pipeline/document_source_change_stream_handle_topology_change.h
@@ -63,6 +63,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState) const final;
GetModPathsReturn getModifiedPaths() const final {
diff --git a/src/mongo/db/pipeline/document_source_change_stream_oplog_match.h b/src/mongo/db/pipeline/document_source_change_stream_oplog_match.h
index 54d15f363e6..1d980dfa952 100644
--- a/src/mongo/db/pipeline/document_source_change_stream_oplog_match.h
+++ b/src/mongo/db/pipeline/document_source_change_stream_oplog_match.h
@@ -76,6 +76,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ };
+
protected:
Pipeline::SourceContainer::iterator doOptimizeAt(Pipeline::SourceContainer::iterator itr,
Pipeline::SourceContainer* container) final;
diff --git a/src/mongo/db/pipeline/document_source_change_stream_split_large_event.h b/src/mongo/db/pipeline/document_source_change_stream_split_large_event.h
index c8cbc7e0b9a..95fab4a4268 100644
--- a/src/mongo/db/pipeline/document_source_change_stream_split_large_event.h
+++ b/src/mongo/db/pipeline/document_source_change_stream_split_large_event.h
@@ -54,6 +54,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState pipeState) const final;
void validatePipelinePosition(bool alreadyOptimized,
diff --git a/src/mongo/db/pipeline/document_source_change_stream_transform.h b/src/mongo/db/pipeline/document_source_change_stream_transform.h
index 66d6af59ec9..5d2c91b6f85 100644
--- a/src/mongo/db/pipeline/document_source_change_stream_transform.h
+++ b/src/mongo/db/pipeline/document_source_change_stream_transform.h
@@ -58,6 +58,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState pipeState) const final;
boost::optional<DistributedPlanLogic> distributedPlanLogic() final {
diff --git a/src/mongo/db/pipeline/document_source_change_stream_unwind_transaction.h b/src/mongo/db/pipeline/document_source_change_stream_unwind_transaction.h
index 7cf202fc3b7..986385b0e17 100644
--- a/src/mongo/db/pipeline/document_source_change_stream_unwind_transaction.h
+++ b/src/mongo/db/pipeline/document_source_change_stream_unwind_transaction.h
@@ -59,6 +59,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState pipeState) const final;
boost::optional<DistributedPlanLogic> distributedPlanLogic() final {
diff --git a/src/mongo/db/pipeline/document_source_coll_stats.h b/src/mongo/db/pipeline/document_source_coll_stats.h
index cafaa111b25..b359f88f66b 100644
--- a/src/mongo/db/pipeline/document_source_coll_stats.h
+++ b/src/mongo/db/pipeline/document_source_coll_stats.h
@@ -116,6 +116,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
void addVariableRefs(std::set<Variables::Id>* refs) const final {}
static boost::intrusive_ptr<DocumentSource> createFromBson(
diff --git a/src/mongo/db/pipeline/document_source_current_op.h b/src/mongo/db/pipeline/document_source_current_op.h
index 9174b77196e..b8d92bd26c7 100644
--- a/src/mongo/db/pipeline/document_source_current_op.h
+++ b/src/mongo/db/pipeline/document_source_current_op.h
@@ -136,6 +136,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
void addVariableRefs(std::set<Variables::Id>* refs) const final {}
private:
diff --git a/src/mongo/db/pipeline/document_source_cursor.h b/src/mongo/db/pipeline/document_source_cursor.h
index 0fd9428069a..4274b883a8d 100644
--- a/src/mongo/db/pipeline/document_source_cursor.h
+++ b/src/mongo/db/pipeline/document_source_cursor.h
@@ -74,6 +74,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState pipeState) const final {
StageConstraints constraints(StreamType::kStreaming,
PositionRequirement::kFirst,
diff --git a/src/mongo/db/pipeline/document_source_densify.h b/src/mongo/db/pipeline/document_source_densify.h
index 8fab41068aa..a11343ab8ce 100644
--- a/src/mongo/db/pipeline/document_source_densify.h
+++ b/src/mongo/db/pipeline/document_source_densify.h
@@ -385,6 +385,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
DepsTracker::State getDependencies(DepsTracker* deps) const final {
deps->fields.insert(_field.fullPath());
// We don't need to traverse _partitionExpr because it was generated from _partitions.
diff --git a/src/mongo/db/pipeline/document_source_exchange.h b/src/mongo/db/pipeline/document_source_exchange.h
index 9149a44b12b..89268cc7504 100644
--- a/src/mongo/db/pipeline/document_source_exchange.h
+++ b/src/mongo/db/pipeline/document_source_exchange.h
@@ -223,6 +223,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
/**
* DocumentSourceExchange does not have a direct source (it is reading through the shared
* Exchange pipeline).
diff --git a/src/mongo/db/pipeline/document_source_facet.h b/src/mongo/db/pipeline/document_source_facet.h
index 0a5cc7540a6..c9c96fd5c56 100644
--- a/src/mongo/db/pipeline/document_source_facet.h
+++ b/src/mongo/db/pipeline/document_source_facet.h
@@ -163,6 +163,10 @@ private:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
boost::intrusive_ptr<TeeBuffer> _teeBuffer;
std::vector<FacetPipeline> _facets;
diff --git a/src/mongo/db/pipeline/document_source_find_and_modify_image_lookup.h b/src/mongo/db/pipeline/document_source_find_and_modify_image_lookup.h
index feccf0cab6f..3fe0c2f95bc 100644
--- a/src/mongo/db/pipeline/document_source_find_and_modify_image_lookup.h
+++ b/src/mongo/db/pipeline/document_source_find_and_modify_image_lookup.h
@@ -64,6 +64,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState pipeState) const final;
boost::optional<DistributedPlanLogic> distributedPlanLogic() final {
diff --git a/src/mongo/db/pipeline/document_source_geo_near.h b/src/mongo/db/pipeline/document_source_geo_near.h
index c2a2b838b81..17d677e1eca 100644
--- a/src/mongo/db/pipeline/document_source_geo_near.h
+++ b/src/mongo/db/pipeline/document_source_geo_near.h
@@ -81,6 +81,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
boost::intrusive_ptr<DocumentSource> optimize() final;
static boost::intrusive_ptr<DocumentSource> createFromBson(
diff --git a/src/mongo/db/pipeline/document_source_graph_lookup.h b/src/mongo/db/pipeline/document_source_graph_lookup.h
index e5522a8c979..e24da420f1a 100644
--- a/src/mongo/db/pipeline/document_source_graph_lookup.h
+++ b/src/mongo/db/pipeline/document_source_graph_lookup.h
@@ -102,6 +102,11 @@ public:
std::vector<Value>& array,
boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ void serializeToArray(std::vector<Value>& array,
+ SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ };
+
/**
* Returns the 'as' path, and possibly the fields modified by an absorbed $unwind.
*/
@@ -179,6 +184,10 @@ private:
MONGO_UNREACHABLE;
}
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
/**
* Prepares the query to execute on the 'from' collection wrapped in a $match by using the
* contents of '_frontier'.
diff --git a/src/mongo/db/pipeline/document_source_group_base.h b/src/mongo/db/pipeline/document_source_group_base.h
index eec015b4acb..9f70f58d5c7 100644
--- a/src/mongo/db/pipeline/document_source_group_base.h
+++ b/src/mongo/db/pipeline/document_source_group_base.h
@@ -55,6 +55,9 @@ public:
using GroupsMap = ValueUnorderedMap<Accumulators>;
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
boost::intrusive_ptr<DocumentSource> optimize() final;
DepsTracker::State getDependencies(DepsTracker* deps) const final;
void addVariableRefs(std::set<Variables::Id>* refs) const final;
diff --git a/src/mongo/db/pipeline/document_source_index_stats.h b/src/mongo/db/pipeline/document_source_index_stats.h
index 41675e76fe0..c0f15bde79b 100644
--- a/src/mongo/db/pipeline/document_source_index_stats.h
+++ b/src/mongo/db/pipeline/document_source_index_stats.h
@@ -77,6 +77,10 @@ public:
const char* getSourceName() const final;
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState pipeState) const final {
StageConstraints constraints(StreamType::kStreaming,
PositionRequirement::kFirst,
diff --git a/src/mongo/db/pipeline/document_source_internal_all_collection_stats.h b/src/mongo/db/pipeline/document_source_internal_all_collection_stats.h
index d9a081412f9..d0b805a04d7 100644
--- a/src/mongo/db/pipeline/document_source_internal_all_collection_stats.h
+++ b/src/mongo/db/pipeline/document_source_internal_all_collection_stats.h
@@ -85,6 +85,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState pipeState) const final {
StageConstraints constraints(StreamType::kStreaming,
PositionRequirement::kFirst,
@@ -114,6 +118,11 @@ public:
std::vector<Value>& array,
boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ void serializeToArray(std::vector<Value>& array,
+ SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ };
+
private:
GetNextResult doGetNext() final;
diff --git a/src/mongo/db/pipeline/document_source_internal_apply_oplog_update.h b/src/mongo/db/pipeline/document_source_internal_apply_oplog_update.h
index 807add29a8a..b8625c15191 100644
--- a/src/mongo/db/pipeline/document_source_internal_apply_oplog_update.h
+++ b/src/mongo/db/pipeline/document_source_internal_apply_oplog_update.h
@@ -85,6 +85,10 @@ private:
Value serialize(
boost::optional<ExplainOptions::Verbosity> explain = boost::none) const override;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
GetNextResult doGetNext() override;
BSONObj _oplogUpdate;
diff --git a/src/mongo/db/pipeline/document_source_internal_compute_geo_near_distance.h b/src/mongo/db/pipeline/document_source_internal_compute_geo_near_distance.h
index 3bc4d97aedd..f4637e05889 100644
--- a/src/mongo/db/pipeline/document_source_internal_compute_geo_near_distance.h
+++ b/src/mongo/db/pipeline/document_source_internal_compute_geo_near_distance.h
@@ -89,6 +89,10 @@ private:
Value serialize(
boost::optional<ExplainOptions::Verbosity> explain = boost::none) const override;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
GetNextResult doGetNext() override;
std::string _key;
diff --git a/src/mongo/db/pipeline/document_source_internal_convert_bucket_index_stats.h b/src/mongo/db/pipeline/document_source_internal_convert_bucket_index_stats.h
index 1d568eec41e..d87cc06fe92 100644
--- a/src/mongo/db/pipeline/document_source_internal_convert_bucket_index_stats.h
+++ b/src/mongo/db/pipeline/document_source_internal_convert_bucket_index_stats.h
@@ -79,6 +79,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
boost::optional<DistributedPlanLogic> distributedPlanLogic() final {
return boost::none;
};
diff --git a/src/mongo/db/pipeline/document_source_internal_inhibit_optimization.h b/src/mongo/db/pipeline/document_source_internal_inhibit_optimization.h
index d75cd7f8f24..d398100afd1 100644
--- a/src/mongo/db/pipeline/document_source_internal_inhibit_optimization.h
+++ b/src/mongo/db/pipeline/document_source_internal_inhibit_optimization.h
@@ -74,6 +74,10 @@ public:
private:
GetNextResult doGetNext() final;
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
};
} // namespace mongo
diff --git a/src/mongo/db/pipeline/document_source_internal_shard_filter.h b/src/mongo/db/pipeline/document_source_internal_shard_filter.h
index 9586ea098fe..8ae8c157bf9 100644
--- a/src/mongo/db/pipeline/document_source_internal_shard_filter.h
+++ b/src/mongo/db/pipeline/document_source_internal_shard_filter.h
@@ -67,6 +67,10 @@ public:
Value serialize(
boost::optional<ExplainOptions::Verbosity> explain = boost::none) const override;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
boost::optional<DistributedPlanLogic> distributedPlanLogic() override {
return boost::none;
}
diff --git a/src/mongo/db/pipeline/document_source_internal_shardserver_info.h b/src/mongo/db/pipeline/document_source_internal_shardserver_info.h
index 5162b0fb7da..4bf42b5dd14 100644
--- a/src/mongo/db/pipeline/document_source_internal_shardserver_info.h
+++ b/src/mongo/db/pipeline/document_source_internal_shardserver_info.h
@@ -105,6 +105,10 @@ private:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
bool _didEmit = false;
};
diff --git a/src/mongo/db/pipeline/document_source_internal_split_pipeline.h b/src/mongo/db/pipeline/document_source_internal_split_pipeline.h
index a72eae1dc8d..b0531f2a389 100644
--- a/src/mongo/db/pipeline/document_source_internal_split_pipeline.h
+++ b/src/mongo/db/pipeline/document_source_internal_split_pipeline.h
@@ -85,6 +85,10 @@ private:
GetNextResult doGetNext() final;
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
HostTypeRequirement _mergeType = HostTypeRequirement::kNone;
};
diff --git a/src/mongo/db/pipeline/document_source_internal_unpack_bucket.h b/src/mongo/db/pipeline/document_source_internal_unpack_bucket.h
index 7d3be11e85e..3e000d2a247 100644
--- a/src/mongo/db/pipeline/document_source_internal_unpack_bucket.h
+++ b/src/mongo/db/pipeline/document_source_internal_unpack_bucket.h
@@ -79,6 +79,11 @@ public:
std::vector<Value>& array,
boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ void serializeToArray(std::vector<Value>& array,
+ SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ };
+
/**
* Use 'serializeToArray' above.
*/
@@ -86,6 +91,10 @@ public:
MONGO_UNREACHABLE;
}
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
bool includeMetaField() const {
return _bucketUnpacker.includeMetaField();
}
diff --git a/src/mongo/db/pipeline/document_source_limit.h b/src/mongo/db/pipeline/document_source_limit.h
index 9dbc659117c..67c4e634efc 100644
--- a/src/mongo/db/pipeline/document_source_limit.h
+++ b/src/mongo/db/pipeline/document_source_limit.h
@@ -71,6 +71,10 @@ public:
Pipeline::SourceContainer* container) final;
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
DepsTracker::State getDependencies(DepsTracker* deps) const final {
return DepsTracker::State::SEE_NEXT; // This doesn't affect needed fields
}
diff --git a/src/mongo/db/pipeline/document_source_list_cached_and_active_users.h b/src/mongo/db/pipeline/document_source_list_cached_and_active_users.h
index cd63aa8ff9a..8dc487b7f35 100644
--- a/src/mongo/db/pipeline/document_source_list_cached_and_active_users.h
+++ b/src/mongo/db/pipeline/document_source_list_cached_and_active_users.h
@@ -91,6 +91,10 @@ public:
return Value(Document{{getSourceName(), Document{}}});
}
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState pipeState) const final {
StageConstraints constraints(StreamType::kStreaming,
PositionRequirement::kFirst,
diff --git a/src/mongo/db/pipeline/document_source_list_catalog.h b/src/mongo/db/pipeline/document_source_list_catalog.h
index cf8b85c8707..8eaee46975a 100644
--- a/src/mongo/db/pipeline/document_source_list_catalog.h
+++ b/src/mongo/db/pipeline/document_source_list_catalog.h
@@ -77,6 +77,10 @@ public:
const char* getSourceName() const final;
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState pipeState) const final {
StageConstraints constraints(StreamType::kStreaming,
PositionRequirement::kFirst,
diff --git a/src/mongo/db/pipeline/document_source_list_local_sessions.h b/src/mongo/db/pipeline/document_source_list_local_sessions.h
index 23f18c0ea6a..7416fe25512 100644
--- a/src/mongo/db/pipeline/document_source_list_local_sessions.h
+++ b/src/mongo/db/pipeline/document_source_list_local_sessions.h
@@ -105,6 +105,10 @@ public:
return Value(Document{{getSourceName(), _spec.toBSON()}});
}
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState pipeState) const final {
StageConstraints constraints(StreamType::kStreaming,
PositionRequirement::kFirst,
diff --git a/src/mongo/db/pipeline/document_source_list_sessions.h b/src/mongo/db/pipeline/document_source_list_sessions.h
index 9c3e4d10d68..b48c2954d1c 100644
--- a/src/mongo/db/pipeline/document_source_list_sessions.h
+++ b/src/mongo/db/pipeline/document_source_list_sessions.h
@@ -100,6 +100,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ };
+
StageConstraints constraints(Pipeline::SplitState pipeState) const final {
return {StreamType::kStreaming,
PositionRequirement::kFirst,
diff --git a/src/mongo/db/pipeline/document_source_lookup.h b/src/mongo/db/pipeline/document_source_lookup.h
index 0d8d7fbd583..15bb07263c2 100644
--- a/src/mongo/db/pipeline/document_source_lookup.h
+++ b/src/mongo/db/pipeline/document_source_lookup.h
@@ -127,6 +127,11 @@ public:
std::vector<Value>& array,
boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ void serializeToArray(std::vector<Value>& array,
+ SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ };
+
/**
* Returns the 'as' path, and possibly fields modified by an absorbed $unwind.
*/
@@ -309,6 +314,10 @@ private:
MONGO_UNREACHABLE;
}
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
GetNextResult unwindResult();
/**
diff --git a/src/mongo/db/pipeline/document_source_match.h b/src/mongo/db/pipeline/document_source_match.h
index 2601c8f72f1..bd26cc05235 100644
--- a/src/mongo/db/pipeline/document_source_match.h
+++ b/src/mongo/db/pipeline/document_source_match.h
@@ -129,6 +129,10 @@ public:
Value serialize(
boost::optional<ExplainOptions::Verbosity> explain = boost::none) const override;
+ Value serialize(SerializationOptions opts) const override {
+ MONGO_UNIMPLEMENTED;
+ }
+
/**
* Attempts to combine with any subsequent $match stages, joining the query objects with a
* $and and flattening top-level $and's in the process.
diff --git a/src/mongo/db/pipeline/document_source_merge.h b/src/mongo/db/pipeline/document_source_merge.h
index 81d4b6ce567..15b4b8c90cb 100644
--- a/src/mongo/db/pipeline/document_source_merge.h
+++ b/src/mongo/db/pipeline/document_source_merge.h
@@ -130,6 +130,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
/**
* Creates a new $merge stage from the given arguments.
*/
diff --git a/src/mongo/db/pipeline/document_source_mock.h b/src/mongo/db/pipeline/document_source_mock.h
index 39b3e17a265..5d0fb3e303b 100644
--- a/src/mongo/db/pipeline/document_source_mock.h
+++ b/src/mongo/db/pipeline/document_source_mock.h
@@ -81,6 +81,10 @@ public:
return Value(Document{{getSourceName(), Document()}});
}
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
const char* getSourceName() const override;
size_t size() const;
diff --git a/src/mongo/db/pipeline/document_source_operation_metrics.h b/src/mongo/db/pipeline/document_source_operation_metrics.h
index 0e853b40859..a4ac1511074 100644
--- a/src/mongo/db/pipeline/document_source_operation_metrics.h
+++ b/src/mongo/db/pipeline/document_source_operation_metrics.h
@@ -91,6 +91,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
void addVariableRefs(std::set<Variables::Id>* refs) const final {}
static boost::intrusive_ptr<DocumentSource> createFromBson(
diff --git a/src/mongo/db/pipeline/document_source_out.h b/src/mongo/db/pipeline/document_source_out.h
index 3ae3be2df42..99ae32a377b 100644
--- a/src/mongo/db/pipeline/document_source_out.h
+++ b/src/mongo/db/pipeline/document_source_out.h
@@ -95,6 +95,10 @@ public:
Value serialize(
boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final override;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
/**
* Creates a new $out stage from the given arguments.
*/
diff --git a/src/mongo/db/pipeline/document_source_plan_cache_stats.h b/src/mongo/db/pipeline/document_source_plan_cache_stats.h
index e8e87d4d468..81bce911e77 100644
--- a/src/mongo/db/pipeline/document_source_plan_cache_stats.h
+++ b/src/mongo/db/pipeline/document_source_plan_cache_stats.h
@@ -119,6 +119,11 @@ public:
std::vector<Value>& array,
boost::optional<ExplainOptions::Verbosity> explain = boost::none) const override;
+ void serializeToArray(std::vector<Value>& array,
+ SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ };
+
void addVariableRefs(std::set<Variables::Id>* refs) const final {}
private:
@@ -131,6 +136,10 @@ private:
MONGO_UNREACHABLE; // Should call serializeToArray instead.
}
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
// If running through mongos in a sharded cluster, stores the shard name so that it can be
// appended to each plan cache entry document.
std::string _shardName;
diff --git a/src/mongo/db/pipeline/document_source_queue.h b/src/mongo/db/pipeline/document_source_queue.h
index 6c3730d8b12..42b4227b612 100644
--- a/src/mongo/db/pipeline/document_source_queue.h
+++ b/src/mongo/db/pipeline/document_source_queue.h
@@ -57,6 +57,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const override;
+ Value serialize(SerializationOptions opts) const override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState pipeState) const override {
StageConstraints constraints{StreamType::kStreaming,
PositionRequirement::kFirst,
diff --git a/src/mongo/db/pipeline/document_source_redact.h b/src/mongo/db/pipeline/document_source_redact.h
index 7c2ba889c09..c6d5224931e 100644
--- a/src/mongo/db/pipeline/document_source_redact.h
+++ b/src/mongo/db/pipeline/document_source_redact.h
@@ -69,6 +69,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
boost::intrusive_ptr<Expression> getExpression() {
return _expression;
}
diff --git a/src/mongo/db/pipeline/document_source_sample.h b/src/mongo/db/pipeline/document_source_sample.h
index 418242014ef..a4af7d94b31 100644
--- a/src/mongo/db/pipeline/document_source_sample.h
+++ b/src/mongo/db/pipeline/document_source_sample.h
@@ -43,6 +43,10 @@ public:
}
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState pipeState) const final {
return {StreamType::kBlocking,
PositionRequirement::kNone,
diff --git a/src/mongo/db/pipeline/document_source_sample_from_random_cursor.h b/src/mongo/db/pipeline/document_source_sample_from_random_cursor.h
index f953f9b34ab..5f5d4da226a 100644
--- a/src/mongo/db/pipeline/document_source_sample_from_random_cursor.h
+++ b/src/mongo/db/pipeline/document_source_sample_from_random_cursor.h
@@ -43,6 +43,9 @@ public:
static constexpr StringData kStageName = "$sampleFromRandomCursor"_sd;
const char* getSourceName() const final;
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
DepsTracker::State getDependencies(DepsTracker* deps) const final;
StageConstraints constraints(Pipeline::SplitState pipeState) const final {
diff --git a/src/mongo/db/pipeline/document_source_sequential_document_cache.h b/src/mongo/db/pipeline/document_source_sequential_document_cache.h
index f49f699bbe5..139f60c3ff5 100644
--- a/src/mongo/db/pipeline/document_source_sequential_document_cache.h
+++ b/src/mongo/db/pipeline/document_source_sequential_document_cache.h
@@ -110,6 +110,10 @@ private:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
SequentialDocumentCache* _cache;
// This flag is set to prevent the cache stage from immediately serving from the cache after it
diff --git a/src/mongo/db/pipeline/document_source_set_variable_from_subpipeline.h b/src/mongo/db/pipeline/document_source_set_variable_from_subpipeline.h
index 1251ba2376d..3c978ed532e 100644
--- a/src/mongo/db/pipeline/document_source_set_variable_from_subpipeline.h
+++ b/src/mongo/db/pipeline/document_source_set_variable_from_subpipeline.h
@@ -113,6 +113,9 @@ protected:
private:
GetNextResult doGetNext() final;
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
std::unique_ptr<Pipeline, PipelineDeleter> _subPipeline;
Variables::Id _variableID;
// $setVariableFromSubPipeline sets the value of $$SEARCH_META only on the first call to
diff --git a/src/mongo/db/pipeline/document_source_set_window_fields.h b/src/mongo/db/pipeline/document_source_set_window_fields.h
index 92eade9b588..ec04e27af42 100644
--- a/src/mongo/db/pipeline/document_source_set_window_fields.h
+++ b/src/mongo/db/pipeline/document_source_set_window_fields.h
@@ -186,6 +186,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
DocumentSource::GetNextResult doGetNext();
void setSource(DocumentSource* source) final {
diff --git a/src/mongo/db/pipeline/document_source_single_document_transformation.h b/src/mongo/db/pipeline/document_source_single_document_transformation.h
index 7a9c92bcea3..e1dfb4401b0 100644
--- a/src/mongo/db/pipeline/document_source_single_document_transformation.h
+++ b/src/mongo/db/pipeline/document_source_single_document_transformation.h
@@ -63,6 +63,9 @@ public:
boost::intrusive_ptr<DocumentSource> optimize() final;
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
DepsTracker::State getDependencies(DepsTracker* deps) const final;
void addVariableRefs(std::set<Variables::Id>* refs) const final;
GetModPathsReturn getModifiedPaths() const final;
diff --git a/src/mongo/db/pipeline/document_source_skip.h b/src/mongo/db/pipeline/document_source_skip.h
index 2504ada64d7..d849fbef0fa 100644
--- a/src/mongo/db/pipeline/document_source_skip.h
+++ b/src/mongo/db/pipeline/document_source_skip.h
@@ -75,6 +75,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
boost::intrusive_ptr<DocumentSource> optimize() final;
DepsTracker::State getDependencies(DepsTracker* deps) const final {
diff --git a/src/mongo/db/pipeline/document_source_sort.h b/src/mongo/db/pipeline/document_source_sort.h
index 981e0f6aa21..104b0bdd621 100644
--- a/src/mongo/db/pipeline/document_source_sort.h
+++ b/src/mongo/db/pipeline/document_source_sort.h
@@ -74,6 +74,11 @@ public:
std::vector<Value>& array,
boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ void serializeToArray(std::vector<Value>& array,
+ SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ };
+
boost::intrusive_ptr<DocumentSource> clone(
const boost::intrusive_ptr<ExpressionContext>& newExpCtx) const final;
@@ -211,6 +216,10 @@ private:
MONGO_UNREACHABLE; // Should call serializeToArray instead.
}
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
/**
* Before returning anything, we have to consume all input and sort it. This method consumes all
* input and prepares the sorted stream '_output'.
diff --git a/src/mongo/db/pipeline/document_source_tee_consumer.h b/src/mongo/db/pipeline/document_source_tee_consumer.h
index 63c2fab9a25..275cd680ab4 100644
--- a/src/mongo/db/pipeline/document_source_tee_consumer.h
+++ b/src/mongo/db/pipeline/document_source_tee_consumer.h
@@ -83,6 +83,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
protected:
GetNextResult doGetNext() final;
void doDispose() final;
diff --git a/src/mongo/db/pipeline/document_source_telemetry.h b/src/mongo/db/pipeline/document_source_telemetry.h
index 5667f1e6e16..0e89484dfd4 100644
--- a/src/mongo/db/pipeline/document_source_telemetry.h
+++ b/src/mongo/db/pipeline/document_source_telemetry.h
@@ -109,6 +109,10 @@ public:
Value serialize(
boost::optional<ExplainOptions::Verbosity> explain = boost::none) const override;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
void addVariableRefs(std::set<Variables::Id>* refs) const final {}
private:
diff --git a/src/mongo/db/pipeline/document_source_test_optimizations.h b/src/mongo/db/pipeline/document_source_test_optimizations.h
index e8e2aab3c93..a2c28664c36 100644
--- a/src/mongo/db/pipeline/document_source_test_optimizations.h
+++ b/src/mongo/db/pipeline/document_source_test_optimizations.h
@@ -76,6 +76,9 @@ private:
virtual Value serialize(boost::optional<ExplainOptions::Verbosity>) const override {
MONGO_UNREACHABLE;
}
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
};
} // namespace mongo
diff --git a/src/mongo/db/pipeline/document_source_union_with.h b/src/mongo/db/pipeline/document_source_union_with.h
index d14cb5c9146..6be0d606ddb 100644
--- a/src/mongo/db/pipeline/document_source_union_with.h
+++ b/src/mongo/db/pipeline/document_source_union_with.h
@@ -192,6 +192,10 @@ private:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
void addViewDefinition(NamespaceString nss, std::vector<BSONObj> viewPipeline);
void logStartingSubPipeline(const std::vector<BSONObj>& serializedPipeline);
diff --git a/src/mongo/db/pipeline/document_source_unwind.h b/src/mongo/db/pipeline/document_source_unwind.h
index 240186455cd..d525eb951f2 100644
--- a/src/mongo/db/pipeline/document_source_unwind.h
+++ b/src/mongo/db/pipeline/document_source_unwind.h
@@ -45,6 +45,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain = boost::none) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
/**
* Returns the unwound path, and the 'includeArrayIndex' path, if specified.
*/
diff --git a/src/mongo/db/query/serialization_options.h b/src/mongo/db/query/serialization_options.h
index 0a69df8d38a..717b6c77d21 100644
--- a/src/mongo/db/query/serialization_options.h
+++ b/src/mongo/db/query/serialization_options.h
@@ -29,6 +29,7 @@
#pragma once
#include "mongo/base/string_data.h"
+#include "mongo/db/query/explain_options.h"
#include "mongo/util/assert_util.h"
#include <boost/optional.hpp>
#include <string>
@@ -94,6 +95,7 @@ struct SerializationOptions {
// For aggregation indicate whether we should use the more verbose serialization format.
bool explain = false;
+ boost::optional<ExplainOptions::Verbosity> verbosity = boost::none;
};
} // namespace mongo
diff --git a/src/mongo/db/s/document_source_analyze_shard_key_read_write_distribution.h b/src/mongo/db/s/document_source_analyze_shard_key_read_write_distribution.h
index d00328221f2..1c87787627e 100644
--- a/src/mongo/db/s/document_source_analyze_shard_key_read_write_distribution.h
+++ b/src/mongo/db/s/document_source_analyze_shard_key_read_write_distribution.h
@@ -120,6 +120,10 @@ public:
Value serialize(
boost::optional<ExplainOptions::Verbosity> explain = boost::none) const override;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
void addVariableRefs(std::set<Variables::Id>* refs) const final {}
static boost::intrusive_ptr<DocumentSource> createFromBson(
diff --git a/src/mongo/db/s/resharding/document_source_resharding_add_resume_id.h b/src/mongo/db/s/resharding/document_source_resharding_add_resume_id.h
index 668bd644a46..5ad7f52d988 100644
--- a/src/mongo/db/s/resharding/document_source_resharding_add_resume_id.h
+++ b/src/mongo/db/s/resharding/document_source_resharding_add_resume_id.h
@@ -57,6 +57,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState pipeState) const final;
boost::optional<DistributedPlanLogic> distributedPlanLogic() final {
diff --git a/src/mongo/db/s/resharding/document_source_resharding_iterate_transaction.h b/src/mongo/db/s/resharding/document_source_resharding_iterate_transaction.h
index f98e2d1eb73..9d24b219026 100644
--- a/src/mongo/db/s/resharding/document_source_resharding_iterate_transaction.h
+++ b/src/mongo/db/s/resharding/document_source_resharding_iterate_transaction.h
@@ -68,6 +68,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState pipeState) const final;
boost::optional<DistributedPlanLogic> distributedPlanLogic() final {
diff --git a/src/mongo/db/s/resharding/document_source_resharding_ownership_match.h b/src/mongo/db/s/resharding/document_source_resharding_ownership_match.h
index fc64a3ceef3..6dcce60abaf 100644
--- a/src/mongo/db/s/resharding/document_source_resharding_ownership_match.h
+++ b/src/mongo/db/s/resharding/document_source_resharding_ownership_match.h
@@ -62,6 +62,10 @@ public:
Value serialize(boost::optional<ExplainOptions::Verbosity> explain) const final;
+ Value serialize(SerializationOptions opts) const final override {
+ MONGO_UNIMPLEMENTED;
+ }
+
StageConstraints constraints(Pipeline::SplitState pipeState) const final;
boost::optional<DistributedPlanLogic> distributedPlanLogic() final {