diff options
author | Ruoxin Xu <ruoxin.xu@mongodb.com> | 2021-02-02 21:03:25 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-02-17 11:23:05 +0000 |
commit | 5ada96cbe318734f9c7dfa26dea3f28dbe4627bf (patch) | |
tree | 5a63211f065b1e40e5eeeb239d241355e1720ffa /src/mongo/client/dbclient_cursor.cpp | |
parent | d4ff82a11019aef87701db9053499461601e75d6 (diff) | |
download | mongo-5ada96cbe318734f9c7dfa26dea3f28dbe4627bf.tar.gz |
SERVER-53060 Remove QueryRequest class
Diffstat (limited to 'src/mongo/client/dbclient_cursor.cpp')
-rw-r--r-- | src/mongo/client/dbclient_cursor.cpp | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/src/mongo/client/dbclient_cursor.cpp b/src/mongo/client/dbclient_cursor.cpp index 999a382b6ff..4dab6959f26 100644 --- a/src/mongo/client/dbclient_cursor.cpp +++ b/src/mongo/client/dbclient_cursor.cpp @@ -47,7 +47,7 @@ #include "mongo/db/pipeline/aggregation_request_helper.h" #include "mongo/db/query/cursor_response.h" #include "mongo/db/query/getmore_request.h" -#include "mongo/db/query/query_request.h" +#include "mongo/db/query/query_request_helper.h" #include "mongo/logv2/log.h" #include "mongo/rpc/factory.h" #include "mongo/rpc/get_status_from_command_result.h" @@ -120,43 +120,46 @@ Message DBClientCursor::_assembleInit() { } else if (_useFindCommand) { // The caller supplies a 'query' object which may have $-prefixed directives in the format // expected for a legacy OP_QUERY. Therefore, we use the legacy parsing code supplied by - // QueryRequest. When actually issuing the request to the remote node, we will assemble a - // find command. - auto qr = QueryRequest::fromLegacyQuery(_nsOrUuid, - query, - fieldsToReturn ? *fieldsToReturn : BSONObj(), - nToSkip, - nextBatchSize(), - opts); - if (qr.isOK() && !qr.getValue()->isExplain()) { + // query_request_helper. When actually issuing the request to the remote node, we will + // assemble a find command. + bool explain = false; + auto findCommand = + query_request_helper::fromLegacyQuery(_nsOrUuid, + query, + fieldsToReturn ? *fieldsToReturn : BSONObj(), + nToSkip, + nextBatchSize(), + opts, + &explain); + if (findCommand.isOK() && !explain) { if (query.getBoolField("$readOnce")) { // Legacy queries don't handle readOnce. - qr.getValue()->setReadOnce(true); + findCommand.getValue()->setReadOnce(true); } if (query.getBoolField(FindCommand::kRequestResumeTokenFieldName)) { // Legacy queries don't handle requestResumeToken. - qr.getValue()->setRequestResumeToken(true); + findCommand.getValue()->setRequestResumeToken(true); } if (query.hasField(FindCommand::kResumeAfterFieldName)) { // Legacy queries don't handle resumeAfter. - qr.getValue()->setResumeAfter( + findCommand.getValue()->setResumeAfter( query.getObjectField(FindCommand::kResumeAfterFieldName)); } if (auto replTerm = query[FindCommand::kTermFieldName]) { // Legacy queries don't handle term. - qr.getValue()->setReplicationTerm(replTerm.numberLong()); + findCommand.getValue()->setTerm(replTerm.numberLong()); } // Legacy queries don't handle readConcern. // We prioritize the readConcern parsed from the query object over '_readConcernObj'. if (auto readConcern = query[repl::ReadConcernArgs::kReadConcernFieldName]) { - qr.getValue()->setReadConcern(readConcern.Obj()); + findCommand.getValue()->setReadConcern(readConcern.Obj()); } else if (_readConcernObj) { - qr.getValue()->setReadConcern(*_readConcernObj); + findCommand.getValue()->setReadConcern(_readConcernObj); } - BSONObj cmd = qr.getValue()->asFindCommand(); + BSONObj cmd = findCommand.getValue()->toBSON(BSONObj()); if (auto readPref = query["$readPreference"]) { - // QueryRequest doesn't handle $readPreference. + // FindCommand doesn't handle $readPreference. cmd = BSONObjBuilder(std::move(cmd)).append(readPref).obj(); } return assembleCommandRequest(_client, ns.db(), opts, std::move(cmd)); @@ -165,7 +168,7 @@ Message DBClientCursor::_assembleInit() { // Legacy OP_QUERY request does not support UUIDs. if (_nsOrUuid.uuid()) { // If there was a problem building the query request, report that. - uassertStatusOK(qr.getStatus()); + uassertStatusOK(findCommand.getStatus()); // Otherwise it must have been explain. uasserted(50937, "Query by UUID is not supported for explain queries."); } |