From 23b37076f3c22bc2256aaa7f6e98bc9d0c015890 Mon Sep 17 00:00:00 2001 From: joshua <80741223+jlap199@users.noreply.github.com> Date: Thu, 9 Mar 2023 02:29:32 +0000 Subject: SERVER-74712 Add unimplemented document source serializers --- src/mongo/db/pipeline/document_source.cpp | 7 +++++++ src/mongo/db/pipeline/document_source.h | 21 +++++++++++++++++++++ src/mongo/db/pipeline/document_source_bucket_auto.h | 4 ++++ .../document_source_change_stream_add_post_image.h | 4 ++++ .../document_source_change_stream_add_pre_image.h | 4 ++++ ...document_source_change_stream_check_invalidate.h | 4 ++++ ...cument_source_change_stream_check_resumability.h | 4 ++++ ...ent_source_change_stream_check_topology_change.h | 4 ++++ ...urce_change_stream_ensure_resume_token_present.h | 4 ++++ ...nt_source_change_stream_handle_topology_change.h | 4 ++++ .../document_source_change_stream_oplog_match.h | 4 ++++ ...ocument_source_change_stream_split_large_event.h | 4 ++++ .../document_source_change_stream_transform.h | 4 ++++ ...cument_source_change_stream_unwind_transaction.h | 4 ++++ src/mongo/db/pipeline/document_source_coll_stats.h | 4 ++++ src/mongo/db/pipeline/document_source_current_op.h | 4 ++++ src/mongo/db/pipeline/document_source_cursor.h | 4 ++++ src/mongo/db/pipeline/document_source_densify.h | 4 ++++ src/mongo/db/pipeline/document_source_exchange.h | 4 ++++ src/mongo/db/pipeline/document_source_facet.h | 4 ++++ .../document_source_find_and_modify_image_lookup.h | 4 ++++ src/mongo/db/pipeline/document_source_geo_near.h | 4 ++++ .../db/pipeline/document_source_graph_lookup.h | 9 +++++++++ src/mongo/db/pipeline/document_source_group_base.h | 3 +++ src/mongo/db/pipeline/document_source_index_stats.h | 4 ++++ .../document_source_internal_all_collection_stats.h | 9 +++++++++ .../document_source_internal_apply_oplog_update.h | 4 ++++ ...ment_source_internal_compute_geo_near_distance.h | 4 ++++ ...ent_source_internal_convert_bucket_index_stats.h | 4 ++++ .../document_source_internal_inhibit_optimization.h | 4 ++++ .../document_source_internal_shard_filter.h | 4 ++++ .../document_source_internal_shardserver_info.h | 4 ++++ .../document_source_internal_split_pipeline.h | 4 ++++ .../document_source_internal_unpack_bucket.h | 9 +++++++++ src/mongo/db/pipeline/document_source_limit.h | 4 ++++ .../document_source_list_cached_and_active_users.h | 4 ++++ .../db/pipeline/document_source_list_catalog.h | 4 ++++ .../pipeline/document_source_list_local_sessions.h | 4 ++++ .../db/pipeline/document_source_list_sessions.h | 4 ++++ src/mongo/db/pipeline/document_source_lookup.h | 9 +++++++++ src/mongo/db/pipeline/document_source_match.h | 4 ++++ src/mongo/db/pipeline/document_source_merge.h | 4 ++++ src/mongo/db/pipeline/document_source_mock.h | 4 ++++ .../db/pipeline/document_source_operation_metrics.h | 4 ++++ src/mongo/db/pipeline/document_source_out.h | 4 ++++ .../db/pipeline/document_source_plan_cache_stats.h | 9 +++++++++ src/mongo/db/pipeline/document_source_queue.h | 4 ++++ src/mongo/db/pipeline/document_source_redact.h | 4 ++++ src/mongo/db/pipeline/document_source_sample.h | 4 ++++ .../document_source_sample_from_random_cursor.h | 3 +++ .../document_source_sequential_document_cache.h | 4 ++++ .../document_source_set_variable_from_subpipeline.h | 3 +++ .../db/pipeline/document_source_set_window_fields.h | 4 ++++ ...document_source_single_document_transformation.h | 3 +++ src/mongo/db/pipeline/document_source_skip.h | 4 ++++ src/mongo/db/pipeline/document_source_sort.h | 9 +++++++++ .../db/pipeline/document_source_tee_consumer.h | 4 ++++ src/mongo/db/pipeline/document_source_telemetry.h | 4 ++++ .../pipeline/document_source_test_optimizations.h | 3 +++ src/mongo/db/pipeline/document_source_union_with.h | 4 ++++ src/mongo/db/pipeline/document_source_unwind.h | 4 ++++ src/mongo/db/query/serialization_options.h | 2 ++ ...urce_analyze_shard_key_read_write_distribution.h | 4 ++++ .../document_source_resharding_add_resume_id.h | 4 ++++ ...document_source_resharding_iterate_transaction.h | 4 ++++ .../document_source_resharding_ownership_match.h | 4 ++++ 66 files changed, 307 insertions(+) (limited to 'src/mongo/db') 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& array, } } +void DocumentSource::serializeToArray(vector& array, SerializationOptions opts) const { + Value entry = serialize(opts); + if (!entry.missing()) { + array.push_back(entry); + } +} + namespace { std::list> throwOnParse( BSONElement spec, const boost::intrusive_ptr& 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,11 +444,21 @@ 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& array, boost::optional explain = boost::none) const; + /** + * In the default case, serializes the DocumentSource and adds it to the std::vector. + * + * 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& 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 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 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* 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 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 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 explain) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + void addVariableRefs(std::set* refs) const final {} static boost::intrusive_ptr 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 explain) const override; + Value serialize(SerializationOptions opts) const override { + MONGO_UNIMPLEMENTED; + } + void addVariableRefs(std::set* refs) const final {} static boost::intrusive_ptr 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 explain) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + void addVariableRefs(std::set* 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 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 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 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 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 explain) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + StageConstraints constraints(Pipeline::SplitState pipeState) const final; boost::optional 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 explain) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + StageConstraints constraints(Pipeline::SplitState pipeState) const final; boost::optional 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 explain = boost::none) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + void addVariableRefs(std::set* refs) const final {} static boost::intrusive_ptr 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 explain = boost::none) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + void addVariableRefs(std::set* 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 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 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 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 explain = boost::none) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + boost::intrusive_ptr _teeBuffer; std::vector _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 explain) const; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + StageConstraints constraints(Pipeline::SplitState pipeState) const final; boost::optional 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 explain = boost::none) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + boost::intrusive_ptr optimize() final; static boost::intrusive_ptr 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& array, boost::optional explain = boost::none) const final; + void serializeToArray(std::vector& 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; Value serialize(boost::optional explain = boost::none) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } boost::intrusive_ptr optimize() final; DepsTracker::State getDependencies(DepsTracker* deps) const final; void addVariableRefs(std::set* 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 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 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& array, boost::optional explain = boost::none) const final; + void serializeToArray(std::vector& 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 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 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 explain = boost::none) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + boost::optional 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 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 explain = boost::none) const override; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + boost::optional 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 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 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& array, boost::optional explain = boost::none) const final; + void serializeToArray(std::vector& 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 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 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 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& array, boost::optional explain = boost::none) const final; + void serializeToArray(std::vector& 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 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 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 explain = boost::none) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + void addVariableRefs(std::set* refs) const final {} static boost::intrusive_ptr 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 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& array, boost::optional explain = boost::none) const override; + void serializeToArray(std::vector& array, + SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + }; + void addVariableRefs(std::set* 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 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 explain = boost::none) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + boost::intrusive_ptr 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 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 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 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 explain = boost::none) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } std::unique_ptr _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 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 optimize() final; Value serialize(boost::optional 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* 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 explain = boost::none) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + boost::intrusive_ptr 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& array, boost::optional explain = boost::none) const final; + void serializeToArray(std::vector& array, + SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + }; + boost::intrusive_ptr clone( const boost::intrusive_ptr& 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 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 explain = boost::none) const override; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + void addVariableRefs(std::set* 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) 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 explain = boost::none) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + void addViewDefinition(NamespaceString nss, std::vector viewPipeline); void logStartingSubPipeline(const std::vector& 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 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 #include @@ -94,6 +95,7 @@ struct SerializationOptions { // For aggregation indicate whether we should use the more verbose serialization format. bool explain = false; + boost::optional 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 explain = boost::none) const override; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + void addVariableRefs(std::set* refs) const final {} static boost::intrusive_ptr 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 explain) const; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + StageConstraints constraints(Pipeline::SplitState pipeState) const final; boost::optional 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 explain) const; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + StageConstraints constraints(Pipeline::SplitState pipeState) const final; boost::optional 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 explain) const final; + Value serialize(SerializationOptions opts) const final override { + MONGO_UNIMPLEMENTED; + } + StageConstraints constraints(Pipeline::SplitState pipeState) const final; boost::optional distributedPlanLogic() final { -- cgit v1.2.1