ExpressionContext::ExpressionContext(OperationContext* opCtx, const AggregationRequest& request, std::unique_ptr<CollatorInterface> collator, std::shared_ptr<MongoProcessInterface> processInterface, StringMap<ResolvedNamespace> resolvedNamespaces, boost::optional<UUID> collUUID) : ExpressionContext(opCtx, collator.get()) { explain = request.getExplain(); comment = request.getComment(); fromMongos = request.isFromMongos(); needsMerge = request.needsMerge(); mergeByPBRT = request.mergeByPBRT(); allowDiskUse = request.shouldAllowDiskUse(); bypassDocumentValidation = request.shouldBypassDocumentValidation(); ns = request.getNamespaceString(); mongoProcessInterface = std::move(processInterface); collation = request.getCollation(); _ownedCollator = std::move(collator); _resolvedNamespaces = std::move(resolvedNamespaces); uuid = std::move(collUUID); if (request.getRuntimeConstants()) { variables.setRuntimeConstants(request.getRuntimeConstants().get()); } else { variables.generateRuntimeConstants(opCtx); } }
ExpressionContext::ExpressionContext(OperationContext* opCtx, const AggregationRequest& request, std::unique_ptr<CollatorInterface> collator, StringMap<ResolvedNamespace> resolvedNamespaces) : isExplain(request.isExplain()), inShard(request.isFromRouter()), extSortAllowed(request.shouldAllowDiskUse()), bypassDocumentValidation(request.shouldBypassDocumentValidation()), ns(request.getNamespaceString()), opCtx(opCtx), collation(request.getCollation()), _collator(std::move(collator)), _documentComparator(_collator.get()), _valueComparator(_collator.get()), _resolvedNamespaces(std::move(resolvedNamespaces)) {}