-
Type:
Task
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Query Execution
-
Fully Compatible
-
QE 2026-06-22
-
None
-
None
-
None
-
None
-
None
-
None
-
None
The Express single-document lookup executor (SPM-4535) is wired into the change-stream
pipeline (SERVER-128414), which links it into binaries that pull change_stream_pipeline
but not query_exec, notably the enterprise mongocryptd_with_debug. Those binaries
fail to link with undefined symbols (makeExpressExecutorForFindById,
makeExpressExecutorForFindByClusteredId, ProjectionStageSimple::transform), because
the Express plan executor and its helpers are compiled directly into the query_exec
monolith.
A direct query_exec dependency cannot be added, because it forms a
query_exec -> change_stream_pipeline -> express -> query_exec cycle.
This ticket moves the Express plan executor into its own library that sits below both
query_exec and the single-document lookup executor:
- New //src/mongo/db/exec/express:express_executor library holding express_plan.cpp,
plan_executor_express.cpp and plan_explainer_express.cpp, moved out of the query_exec
source list. query_exec now depends on this library. - ProjectionStageSimple::transform becomes a header-inline template, so it links at each
call site instead of relying on an out-of-line explicit instantiation owned by
query_exec.
No behavior change. This is a pure build and layering refactor, verified by an aarch64-opt
build of install-dist-test and mongocryptd_with_debug.
Prerequisite for SERVER-128413 and SERVER-128414 (Express wired live); lands beneath them in
the stack.
- is related to
-
SERVER-128413 Implement ExpressSingleDocumentLookupExecutor for change-stream updateLookup
-
- Closed
-
-
SERVER-128414 Wire ExpressSingleDocumentLookupExecutor live behind featureFlagChangeStreamOptimizedUpdateLookup
-
- Closed
-