summaryrefslogtreecommitdiff
path: root/src/mongo/db/fle_crud.h
diff options
context:
space:
mode:
authorNicholas Zolnierz <nicholas.zolnierz@mongodb.com>2022-04-07 09:26:26 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-04-08 15:02:57 +0000
commitaa161f1ab02effb4227e2a280b676355c939548b (patch)
tree6202fe2814293df16550e1a5227e0fab1618e708 /src/mongo/db/fle_crud.h
parentf881618f7f0b2577c1cee72e0c979d6c497aa7c3 (diff)
downloadmongo-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.h23
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,