diff options
author | Nicholas Zolnierz <nicholas.zolnierz@mongodb.com> | 2022-04-07 09:26:26 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-04-08 15:02:57 +0000 |
commit | aa161f1ab02effb4227e2a280b676355c939548b (patch) | |
tree | 6202fe2814293df16550e1a5227e0fab1618e708 /src/mongo/db/fle_crud.h | |
parent | f881618f7f0b2577c1cee72e0c979d6c497aa7c3 (diff) | |
download | mongo-aa161f1ab02effb4227e2a280b676355c939548b.tar.gz |
SERVER-65134 Support FLE rewrite for explain of findAndModify command
Diffstat (limited to 'src/mongo/db/fle_crud.h')
-rw-r--r-- | src/mongo/db/fle_crud.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/mongo/db/fle_crud.h b/src/mongo/db/fle_crud.h index 13e53f3406d..d1499ccb669 100644 --- a/src/mongo/db/fle_crud.h +++ b/src/mongo/db/fle_crud.h @@ -149,12 +149,18 @@ FLEBatchResult processFLEFindAndModify(OperationContext* opCtx, const BSONObj& cmdObj, BSONObjBuilder& result); +write_ops::FindAndModifyCommandRequest processFLEFindAndModifyExplainMongos( + OperationContext* opCtx, const write_ops::FindAndModifyCommandRequest& findAndModifyRequest); + /** * Process a findAndModify request from a replica set. */ write_ops::FindAndModifyCommandReply processFLEFindAndModify( OperationContext* opCtx, const write_ops::FindAndModifyCommandRequest& findAndModifyRequest); +write_ops::FindAndModifyCommandRequest processFLEFindAndModifyExplainMongod( + OperationContext* opCtx, const write_ops::FindAndModifyCommandRequest& findAndModifyRequest); + /** * Process a find command from mongos. */ @@ -418,6 +424,11 @@ write_ops::FindAndModifyCommandReply processFindAndModify( FLEQueryInterface* queryImpl, const write_ops::FindAndModifyCommandRequest& findAndModifyRequest); +write_ops::FindAndModifyCommandRequest processFindAndModifyExplain( + boost::intrusive_ptr<ExpressionContext> expCtx, + FLEQueryInterface* queryImpl, + const write_ops::FindAndModifyCommandRequest& findAndModifyRequest); + /** * Callback function to get a TransactionWithRetries with the appropiate Executor */ @@ -433,10 +444,18 @@ write_ops::DeleteCommandReply processDelete(OperationContext* opCtx, const write_ops::DeleteCommandRequest& deleteRequest, GetTxnCallback getTxns); -StatusWith<write_ops::FindAndModifyCommandReply> processFindAndModifyRequest( +template <typename ReplyType> +using ProcessFindAndModifyCallback = + std::function<ReplyType(boost::intrusive_ptr<ExpressionContext> expCtx, + FLEQueryInterface* queryImpl, + const write_ops::FindAndModifyCommandRequest& findAndModifyRequest)>; + +template <typename ReplyType> +StatusWith<ReplyType> processFindAndModifyRequest( OperationContext* opCtx, const write_ops::FindAndModifyCommandRequest& findAndModifyRequest, - GetTxnCallback getTxns); + GetTxnCallback getTxns, + ProcessFindAndModifyCallback<ReplyType> processCallback = processFindAndModify); write_ops::UpdateCommandReply processUpdate(OperationContext* opCtx, |