diff options
Diffstat (limited to 'src/mongo/s')
27 files changed, 177 insertions, 186 deletions
diff --git a/src/mongo/s/SConscript b/src/mongo/s/SConscript index edf38cbde4e..74970615d7b 100644 --- a/src/mongo/s/SConscript +++ b/src/mongo/s/SConscript @@ -58,8 +58,8 @@ env.Library( '$BUILD_DIR/mongo/db/common', '$BUILD_DIR/mongo/db/matcher/expressions', '$BUILD_DIR/mongo/db/ops/update_common', - '$BUILD_DIR/mongo/db/query/lite_parsed_query', '$BUILD_DIR/mongo/db/query/query_planner', + '$BUILD_DIR/mongo/db/query/query_request', '$BUILD_DIR/mongo/db/repl/optime', '$BUILD_DIR/mongo/rpc/metadata', ] diff --git a/src/mongo/s/balancer/balancer.cpp b/src/mongo/s/balancer/balancer.cpp index d4d463ace64..d991be6eb83 100644 --- a/src/mongo/s/balancer/balancer.cpp +++ b/src/mongo/s/balancer/balancer.cpp @@ -41,7 +41,7 @@ #include "mongo/db/client.h" #include "mongo/db/namespace_string.h" #include "mongo/db/operation_context.h" -#include "mongo/db/query/lite_parsed_query.h" +#include "mongo/db/query/query_request.h" #include "mongo/s/balancer/balancer_chunk_selection_policy_impl.h" #include "mongo/s/balancer/balancer_configuration.h" #include "mongo/s/balancer/cluster_statistics_impl.h" @@ -164,7 +164,7 @@ void appendOperationDeadlineIfSet(OperationContext* txn, BSONObjBuilder* cmdBuil if (!maxTimeMsArg) { return; } - cmdBuilder->append(LiteParsedQuery::cmdOptionMaxTimeMS, *maxTimeMsArg); + cmdBuilder->append(QueryRequest::cmdOptionMaxTimeMS, *maxTimeMsArg); } /** diff --git a/src/mongo/s/balancer/balancer_configuration_test.cpp b/src/mongo/s/balancer/balancer_configuration_test.cpp index 5119b5180b7..217df4c5196 100644 --- a/src/mongo/s/balancer/balancer_configuration_test.cpp +++ b/src/mongo/s/balancer/balancer_configuration_test.cpp @@ -34,7 +34,7 @@ #include "mongo/bson/bsonmisc.h" #include "mongo/client/remote_command_targeter_mock.h" #include "mongo/db/namespace_string.h" -#include "mongo/db/query/lite_parsed_query.h" +#include "mongo/db/query/query_request.h" #include "mongo/executor/remote_command_request.h" #include "mongo/rpc/metadata/repl_set_metadata.h" #include "mongo/rpc/metadata/server_selection_metadata.h" @@ -71,8 +71,7 @@ protected: const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); ASSERT_EQ(nss.ns(), "config.settings"); - auto query = - assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(query->ns(), "config.settings"); ASSERT_EQ(query->getFilter(), BSON("_id" << key)); diff --git a/src/mongo/s/catalog/replset/catalog_manager_replica_set_add_shard_test.cpp b/src/mongo/s/catalog/replset/catalog_manager_replica_set_add_shard_test.cpp index 4bbdb9bcebd..54f414c79cb 100644 --- a/src/mongo/s/catalog/replset/catalog_manager_replica_set_add_shard_test.cpp +++ b/src/mongo/s/catalog/replset/catalog_manager_replica_set_add_shard_test.cpp @@ -35,7 +35,7 @@ #include "mongo/client/remote_command_targeter_factory_mock.h" #include "mongo/client/remote_command_targeter_mock.h" #include "mongo/db/commands.h" -#include "mongo/db/query/lite_parsed_query.h" +#include "mongo/db/query/query_request.h" #include "mongo/rpc/metadata/repl_set_metadata.h" #include "mongo/rpc/metadata/server_selection_metadata.h" #include "mongo/s/catalog/replset/catalog_manager_replica_set.h" @@ -189,7 +189,7 @@ protected: ASSERT_EQ(nss.toString(), DatabaseType::ConfigNS); auto query = - assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(query->ns(), DatabaseType::ConfigNS); ASSERT_EQ(query->getFilter(), BSON(DatabaseType::name(dbname))); @@ -338,7 +338,7 @@ TEST_F(AddShardTest, StandaloneGenerateName) { ASSERT_EQUALS(kReplSecondaryOkMetadata, request.metadata); const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); ASSERT_EQ(nss.toString(), ShardType::ConfigNS); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(query->ns(), ShardType::ConfigNS); diff --git a/src/mongo/s/catalog/replset/catalog_manager_replica_set_drop_coll_test.cpp b/src/mongo/s/catalog/replset/catalog_manager_replica_set_drop_coll_test.cpp index 01d83c3bf14..8f5b49aab7e 100644 --- a/src/mongo/s/catalog/replset/catalog_manager_replica_set_drop_coll_test.cpp +++ b/src/mongo/s/catalog/replset/catalog_manager_replica_set_drop_coll_test.cpp @@ -33,7 +33,6 @@ #include "mongo/bson/json.h" #include "mongo/client/remote_command_targeter_mock.h" #include "mongo/db/namespace_string.h" -#include "mongo/db/query/lite_parsed_query.h" #include "mongo/rpc/metadata/repl_set_metadata.h" #include "mongo/rpc/metadata/server_selection_metadata.h" #include "mongo/s/catalog/dist_lock_manager_mock.h" diff --git a/src/mongo/s/catalog/replset/catalog_manager_replica_set_remove_shard_test.cpp b/src/mongo/s/catalog/replset/catalog_manager_replica_set_remove_shard_test.cpp index c359b3f2874..8d3f9c1f21e 100644 --- a/src/mongo/s/catalog/replset/catalog_manager_replica_set_remove_shard_test.cpp +++ b/src/mongo/s/catalog/replset/catalog_manager_replica_set_remove_shard_test.cpp @@ -183,7 +183,7 @@ TEST_F(RemoveShardTest, RemoveShardStartDraining) { ASSERT_EQUALS(kReplSecondaryOkMetadata, request.metadata); const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(ShardType::ConfigNS, query->ns()); ASSERT_EQ(BSONObj(), query->getFilter()); @@ -355,7 +355,7 @@ TEST_F(RemoveShardTest, RemoveShardCompletion) { ASSERT_EQUALS(kReplSecondaryOkMetadata, request.metadata); const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(ShardType::ConfigNS, query->ns()); ASSERT_EQ(BSONObj(), query->getFilter()); diff --git a/src/mongo/s/catalog/replset/catalog_manager_replica_set_shard_collection_test.cpp b/src/mongo/s/catalog/replset/catalog_manager_replica_set_shard_collection_test.cpp index a87244bf615..cd41e90c3ed 100644 --- a/src/mongo/s/catalog/replset/catalog_manager_replica_set_shard_collection_test.cpp +++ b/src/mongo/s/catalog/replset/catalog_manager_replica_set_shard_collection_test.cpp @@ -98,8 +98,7 @@ public: const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); ASSERT_EQ(DatabaseType::ConfigNS, nss.ns()); - auto query = - assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(DatabaseType::ConfigNS, query->ns()); ASSERT_EQ(BSON(DatabaseType::name(expectedDb.getName())), query->getFilter()); @@ -163,8 +162,7 @@ public: const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); ASSERT_EQ(nss.ns(), ChunkType::ConfigNS); - auto query = - assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); BSONObj expectedQuery = BSON(ChunkType::ns(ns) << ChunkType::DEPRECATED_lastmod << GTE << Timestamp()); BSONObj expectedSort = BSON(ChunkType::DEPRECATED_lastmod() << 1); diff --git a/src/mongo/s/catalog/replset/catalog_manager_replica_set_test.cpp b/src/mongo/s/catalog/replset/catalog_manager_replica_set_test.cpp index 574a309c63b..b45914dfeba 100644 --- a/src/mongo/s/catalog/replset/catalog_manager_replica_set_test.cpp +++ b/src/mongo/s/catalog/replset/catalog_manager_replica_set_test.cpp @@ -35,7 +35,7 @@ #include "mongo/bson/json.h" #include "mongo/client/remote_command_targeter_mock.h" #include "mongo/db/commands.h" -#include "mongo/db/query/lite_parsed_query.h" +#include "mongo/db/query/query_request.h" #include "mongo/db/repl/read_concern_args.h" #include "mongo/executor/network_interface_mock.h" #include "mongo/executor/task_executor.h" @@ -99,30 +99,30 @@ TEST_F(CatalogManagerReplSetTest, GetCollectionExisting) { catalogManager()->getCollection(operationContext(), expectedColl.getNs().ns())); }); - onFindWithMetadataCommand([this, &expectedColl, newOpTime]( - const RemoteCommandRequest& request) { + onFindWithMetadataCommand( + [this, &expectedColl, newOpTime](const RemoteCommandRequest& request) { - ASSERT_EQUALS(kReplSecondaryOkMetadata, request.metadata); + ASSERT_EQUALS(kReplSecondaryOkMetadata, request.metadata); - const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); - ASSERT_EQ(nss.ns(), CollectionType::ConfigNS); + const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); + ASSERT_EQ(nss.ns(), CollectionType::ConfigNS); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); - // Ensure the query is correct - ASSERT_EQ(query->ns(), CollectionType::ConfigNS); - ASSERT_EQ(query->getFilter(), BSON(CollectionType::fullNs(expectedColl.getNs().ns()))); - ASSERT_EQ(query->getSort(), BSONObj()); - ASSERT_EQ(query->getLimit().get(), 1); + // Ensure the query is correct + ASSERT_EQ(query->ns(), CollectionType::ConfigNS); + ASSERT_EQ(query->getFilter(), BSON(CollectionType::fullNs(expectedColl.getNs().ns()))); + ASSERT_EQ(query->getSort(), BSONObj()); + ASSERT_EQ(query->getLimit().get(), 1); - checkReadConcern(request.cmdObj, Timestamp(0, 0), repl::OpTime::kUninitializedTerm); + checkReadConcern(request.cmdObj, Timestamp(0, 0), repl::OpTime::kUninitializedTerm); - ReplSetMetadata metadata(10, OpTime(), newOpTime, 100, OID(), 30, -1); - BSONObjBuilder builder; - metadata.writeToMetadata(&builder); + ReplSetMetadata metadata(10, OpTime(), newOpTime, 100, OID(), 30, -1); + BSONObjBuilder builder; + metadata.writeToMetadata(&builder); - return std::make_tuple(vector<BSONObj>{expectedColl.toBSON()}, builder.obj()); - }); + return std::make_tuple(vector<BSONObj>{expectedColl.toBSON()}, builder.obj()); + }); // Now wait for the getCollection call to return const auto collOpTimePair = future.timed_get(kFutureTimeout); @@ -170,7 +170,7 @@ TEST_F(CatalogManagerReplSetTest, GetDatabaseExisting) { ASSERT_EQUALS(kReplSecondaryOkMetadata, request.metadata); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(query->ns(), DatabaseType::ConfigNS); ASSERT_EQ(query->getFilter(), BSON(DatabaseType::name(expectedDb.getName()))); @@ -399,7 +399,7 @@ TEST_F(CatalogManagerReplSetTest, GetAllShardsValid) { const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); ASSERT_EQ(nss.ns(), ShardType::ConfigNS); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(query->ns(), ShardType::ConfigNS); ASSERT_EQ(query->getFilter(), BSONObj()); @@ -494,7 +494,7 @@ TEST_F(CatalogManagerReplSetTest, GetChunksForNSWithSortAndLimit) { const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); ASSERT_EQ(nss.ns(), ChunkType::ConfigNS); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(query->ns(), ChunkType::ConfigNS); ASSERT_EQ(query->getFilter(), chunksQuery); @@ -541,7 +541,7 @@ TEST_F(CatalogManagerReplSetTest, GetChunksForNSNoSortNoLimit) { const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); ASSERT_EQ(nss.ns(), ChunkType::ConfigNS); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(query->ns(), ChunkType::ConfigNS); ASSERT_EQ(query->getFilter(), chunksQuery); @@ -883,28 +883,28 @@ TEST_F(CatalogManagerReplSetTest, GetCollectionsValidResultsNoDb) { return collections; }); - onFindWithMetadataCommand([this, coll1, coll2, coll3, newOpTime]( - const RemoteCommandRequest& request) { - ASSERT_EQUALS(kReplSecondaryOkMetadata, request.metadata); + onFindWithMetadataCommand( + [this, coll1, coll2, coll3, newOpTime](const RemoteCommandRequest& request) { + ASSERT_EQUALS(kReplSecondaryOkMetadata, request.metadata); - const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); - ASSERT_EQ(nss.ns(), CollectionType::ConfigNS); + const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); + ASSERT_EQ(nss.ns(), CollectionType::ConfigNS); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); - ASSERT_EQ(query->ns(), CollectionType::ConfigNS); - ASSERT_EQ(query->getFilter(), BSONObj()); - ASSERT_EQ(query->getSort(), BSONObj()); + ASSERT_EQ(query->ns(), CollectionType::ConfigNS); + ASSERT_EQ(query->getFilter(), BSONObj()); + ASSERT_EQ(query->getSort(), BSONObj()); - checkReadConcern(request.cmdObj, Timestamp(0, 0), repl::OpTime::kUninitializedTerm); + checkReadConcern(request.cmdObj, Timestamp(0, 0), repl::OpTime::kUninitializedTerm); - ReplSetMetadata metadata(10, OpTime(), newOpTime, 100, OID(), 30, -1); - BSONObjBuilder builder; - metadata.writeToMetadata(&builder); + ReplSetMetadata metadata(10, OpTime(), newOpTime, 100, OID(), 30, -1); + BSONObjBuilder builder; + metadata.writeToMetadata(&builder); - return std::make_tuple(vector<BSONObj>{coll1.toBSON(), coll2.toBSON(), coll3.toBSON()}, - builder.obj()); - }); + return std::make_tuple(vector<BSONObj>{coll1.toBSON(), coll2.toBSON(), coll3.toBSON()}, + builder.obj()); + }); const auto& actualColls = future.timed_get(kFutureTimeout); ASSERT_EQ(3U, actualColls.size()); @@ -947,7 +947,7 @@ TEST_F(CatalogManagerReplSetTest, GetCollectionsValidResultsWithDb) { const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); ASSERT_EQ(nss.ns(), CollectionType::ConfigNS); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(query->ns(), CollectionType::ConfigNS); { @@ -995,7 +995,7 @@ TEST_F(CatalogManagerReplSetTest, GetCollectionsInvalidCollectionType) { ASSERT_EQUALS(kReplSecondaryOkMetadata, request.metadata); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(query->ns(), CollectionType::ConfigNS); { @@ -1041,7 +1041,7 @@ TEST_F(CatalogManagerReplSetTest, GetDatabasesForShardValid) { const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); ASSERT_EQ(nss.ns(), DatabaseType::ConfigNS); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(query->ns(), DatabaseType::ConfigNS); ASSERT_EQ(query->getFilter(), BSON(DatabaseType::primary(dbt1.getPrimary()))); @@ -1115,7 +1115,7 @@ TEST_F(CatalogManagerReplSetTest, GetTagsForCollection) { const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); ASSERT_EQ(nss.ns(), TagsType::ConfigNS); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(query->ns(), TagsType::ConfigNS); ASSERT_EQ(query->getFilter(), BSON(TagsType::ns("TestDB.TestColl"))); @@ -1201,7 +1201,7 @@ TEST_F(CatalogManagerReplSetTest, GetTagForChunkOneTagFound) { const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); ASSERT_EQ(nss.ns(), TagsType::ConfigNS); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(query->ns(), TagsType::ConfigNS); ASSERT_EQ(query->getFilter(), @@ -1246,7 +1246,7 @@ TEST_F(CatalogManagerReplSetTest, GetTagForChunkNoTagFound) { const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); ASSERT_EQ(nss.ns(), TagsType::ConfigNS); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(query->ns(), TagsType::ConfigNS); ASSERT_EQ(query->getFilter(), @@ -1288,7 +1288,7 @@ TEST_F(CatalogManagerReplSetTest, GetTagForChunkInvalidTagDoc) { const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); ASSERT_EQ(nss.ns(), TagsType::ConfigNS); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(query->ns(), TagsType::ConfigNS); ASSERT_EQ(query->getFilter(), @@ -1517,7 +1517,7 @@ TEST_F(CatalogManagerReplSetTest, createDatabaseSuccess) { ASSERT_EQUALS(kReplSecondaryOkMetadata, request.metadata); const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(ShardType::ConfigNS, query->ns()); ASSERT_EQ(BSONObj(), query->getFilter()); @@ -1679,7 +1679,7 @@ TEST_F(CatalogManagerReplSetTest, createDatabaseDBExists) { ASSERT_EQUALS(kReplSecondaryOkMetadata, request.metadata); const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); BSONObjBuilder queryBuilder; queryBuilder.appendRegex( @@ -1718,7 +1718,7 @@ TEST_F(CatalogManagerReplSetTest, createDatabaseDBExistsDifferentCase) { ASSERT_EQUALS(kReplSecondaryOkMetadata, request.metadata); const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); BSONObjBuilder queryBuilder; queryBuilder.appendRegex( @@ -1765,7 +1765,7 @@ TEST_F(CatalogManagerReplSetTest, createDatabaseNoShards) { onFindCommand([this](const RemoteCommandRequest& request) { ASSERT_EQUALS(kReplSecondaryOkMetadata, request.metadata); const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(ShardType::ConfigNS, query->ns()); ASSERT_EQ(BSONObj(), query->getFilter()); @@ -1804,7 +1804,7 @@ TEST_F(CatalogManagerReplSetTest, createDatabaseDuplicateKeyOnInsert) { ASSERT_EQUALS(configHost, request.target); ASSERT_EQUALS(kReplSecondaryOkMetadata, request.metadata); const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); - auto query = assertGet(LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false)); + auto query = assertGet(QueryRequest::makeFromFindCommand(nss, request.cmdObj, false)); ASSERT_EQ(ShardType::ConfigNS, query->ns()); ASSERT_EQ(BSONObj(), query->getFilter()); @@ -1959,7 +1959,7 @@ TEST_F(CatalogManagerReplSetTest, EnableShardingNoDBExists) { const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); ASSERT_EQ(DatabaseType::ConfigNS, nss.toString()); - auto queryResult = LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false); + auto queryResult = QueryRequest::makeFromFindCommand(nss, request.cmdObj, false); ASSERT_OK(queryResult.getStatus()); const auto& query = queryResult.getValue(); diff --git a/src/mongo/s/catalog/replset/catalog_manager_replica_set_write_retry_test.cpp b/src/mongo/s/catalog/replset/catalog_manager_replica_set_write_retry_test.cpp index 27554868a9b..2f00e9533f6 100644 --- a/src/mongo/s/catalog/replset/catalog_manager_replica_set_write_retry_test.cpp +++ b/src/mongo/s/catalog/replset/catalog_manager_replica_set_write_retry_test.cpp @@ -164,7 +164,7 @@ TEST_F(InsertRetryTest, DuplicateKeyErrorAfterNetworkErrorMatch) { onFindCommand([&](const RemoteCommandRequest& request) { ASSERT_EQ(request.target, kTestHosts[1]); auto query = - assertGet(LiteParsedQuery::makeFromFindCommand(kTestNamespace, request.cmdObj, false)); + assertGet(QueryRequest::makeFromFindCommand(kTestNamespace, request.cmdObj, false)); ASSERT_EQ(BSON("_id" << 1), query->getFilter()); return vector<BSONObj>{objToInsert}; @@ -199,7 +199,7 @@ TEST_F(InsertRetryTest, DuplicateKeyErrorAfterNetworkErrorNotFound) { onFindCommand([&](const RemoteCommandRequest& request) { ASSERT_EQ(request.target, kTestHosts[1]); auto query = - assertGet(LiteParsedQuery::makeFromFindCommand(kTestNamespace, request.cmdObj, false)); + assertGet(QueryRequest::makeFromFindCommand(kTestNamespace, request.cmdObj, false)); ASSERT_EQ(BSON("_id" << 1), query->getFilter()); return vector<BSONObj>(); @@ -234,7 +234,7 @@ TEST_F(InsertRetryTest, DuplicateKeyErrorAfterNetworkErrorMismatch) { onFindCommand([&](const RemoteCommandRequest& request) { ASSERT_EQ(request.target, kTestHosts[1]); auto query = - assertGet(LiteParsedQuery::makeFromFindCommand(kTestNamespace, request.cmdObj, false)); + assertGet(QueryRequest::makeFromFindCommand(kTestNamespace, request.cmdObj, false)); ASSERT_EQ(BSON("_id" << 1), query->getFilter()); return vector<BSONObj>{BSON("_id" << 1 << "Value" @@ -290,7 +290,7 @@ TEST_F(InsertRetryTest, DuplicateKeyErrorAfterWriteConcernFailureMatch) { onFindCommand([&](const RemoteCommandRequest& request) { ASSERT_EQ(request.target, kTestHosts[0]); auto query = - assertGet(LiteParsedQuery::makeFromFindCommand(kTestNamespace, request.cmdObj, false)); + assertGet(QueryRequest::makeFromFindCommand(kTestNamespace, request.cmdObj, false)); ASSERT_EQ(BSON("_id" << 1), query->getFilter()); return vector<BSONObj>{objToInsert}; diff --git a/src/mongo/s/chunk_manager.cpp b/src/mongo/s/chunk_manager.cpp index 5548ea4f642..c9f3af28227 100644 --- a/src/mongo/s/chunk_manager.cpp +++ b/src/mongo/s/chunk_manager.cpp @@ -483,10 +483,10 @@ shared_ptr<Chunk> ChunkManager::findIntersectingChunk(OperationContext* txn, void ChunkManager::getShardIdsForQuery(OperationContext* txn, const BSONObj& query, set<ShardId>* shardIds) const { - auto lpq = stdx::make_unique<LiteParsedQuery>(NamespaceString(_ns)); - lpq->setFilter(query); + auto qr = stdx::make_unique<QueryRequest>(NamespaceString(_ns)); + qr->setFilter(query); - auto statusWithCQ = CanonicalQuery::canonicalize(txn, std::move(lpq), ExtensionsCallbackNoop()); + auto statusWithCQ = CanonicalQuery::canonicalize(txn, std::move(qr), ExtensionsCallbackNoop()); uassertStatusOK(statusWithCQ.getStatus()); unique_ptr<CanonicalQuery> cq = std::move(statusWithCQ.getValue()); diff --git a/src/mongo/s/chunk_manager_targeter_test.cpp b/src/mongo/s/chunk_manager_targeter_test.cpp index 24d2398defa..14a346644eb 100644 --- a/src/mongo/s/chunk_manager_targeter_test.cpp +++ b/src/mongo/s/chunk_manager_targeter_test.cpp @@ -61,10 +61,10 @@ unique_ptr<CanonicalQuery> canonicalize(const char* queryStr) { BSONObj queryObj = fromjson(queryStr); const NamespaceString nss("test.foo"); - auto lpq = stdx::make_unique<LiteParsedQuery>(nss); - lpq->setFilter(queryObj); + auto qr = stdx::make_unique<QueryRequest>(nss); + qr->setFilter(queryObj); auto statusWithCQ = - CanonicalQuery::canonicalize(txn.get(), std::move(lpq), ExtensionsCallbackNoop()); + CanonicalQuery::canonicalize(txn.get(), std::move(qr), ExtensionsCallbackNoop()); ASSERT_OK(statusWithCQ.getStatus()); return std::move(statusWithCQ.getValue()); } diff --git a/src/mongo/s/client/shard_remote.cpp b/src/mongo/s/client/shard_remote.cpp index 9a31ee60424..1ed6abe2d41 100644 --- a/src/mongo/s/client/shard_remote.cpp +++ b/src/mongo/s/client/shard_remote.cpp @@ -42,7 +42,7 @@ #include "mongo/client/replica_set_monitor.h" #include "mongo/db/jsobj.h" #include "mongo/db/operation_context.h" -#include "mongo/db/query/lite_parsed_query.h" +#include "mongo/db/query/query_request.h" #include "mongo/db/repl/read_concern_args.h" #include "mongo/executor/task_executor_pool.h" #include "mongo/rpc/get_status_from_command_result.h" @@ -96,7 +96,7 @@ BSONObj appendMaxTimeToCmdObj(OperationContext* txn, const BSONObj& cmdObj) { Milliseconds maxTime = kConfigCommandTimeout; bool hasTxnMaxTime = txn->hasDeadline(); - bool hasUserMaxTime = !cmdObj[LiteParsedQuery::cmdOptionMaxTimeMS].eoo(); + bool hasUserMaxTime = !cmdObj[QueryRequest::cmdOptionMaxTimeMS].eoo(); if (hasTxnMaxTime) { maxTime = std::min(maxTime, duration_cast<Milliseconds>(txn->getRemainingMaxTimeMicros())); @@ -109,7 +109,7 @@ BSONObj appendMaxTimeToCmdObj(OperationContext* txn, const BSONObj& cmdObj) { } if (hasUserMaxTime) { - Milliseconds userMaxTime(cmdObj[LiteParsedQuery::cmdOptionMaxTimeMS].numberLong()); + Milliseconds userMaxTime(cmdObj[QueryRequest::cmdOptionMaxTimeMS].numberLong()); if (userMaxTime <= maxTime) { return cmdObj; } @@ -118,7 +118,7 @@ BSONObj appendMaxTimeToCmdObj(OperationContext* txn, const BSONObj& cmdObj) { BSONObjBuilder updatedCmdBuilder; if (hasUserMaxTime) { // Need to remove user provided maxTimeMS. BSONObjIterator cmdObjIter(cmdObj); - const char* maxTimeFieldName = LiteParsedQuery::cmdOptionMaxTimeMS; + const char* maxTimeFieldName = QueryRequest::cmdOptionMaxTimeMS; while (cmdObjIter.more()) { BSONElement e = cmdObjIter.next(); if (str::equals(e.fieldName(), maxTimeFieldName)) { @@ -130,7 +130,7 @@ BSONObj appendMaxTimeToCmdObj(OperationContext* txn, const BSONObj& cmdObj) { updatedCmdBuilder.appendElements(cmdObj); } - updatedCmdBuilder.append(LiteParsedQuery::cmdOptionMaxTimeMS, + updatedCmdBuilder.append(QueryRequest::cmdOptionMaxTimeMS, durationCount<Milliseconds>(maxTime)); return updatedCmdBuilder.obj(); } @@ -323,14 +323,14 @@ StatusWith<Shard::QueryResponse> ShardRemote::_exhaustiveFindOnConfig( bob.done().getObjectField(repl::ReadConcernArgs::kReadConcernFieldName).getOwned(); } - auto lpq = stdx::make_unique<LiteParsedQuery>(nss); - lpq->setFilter(query); - lpq->setSort(sort); - lpq->setReadConcern(readConcernObj); - lpq->setLimit(limit); + auto qr = stdx::make_unique<QueryRequest>(nss); + qr->setFilter(query); + qr->setSort(sort); + qr->setReadConcern(readConcernObj); + qr->setLimit(limit); BSONObjBuilder findCmdBuilder; - lpq->asFindCommand(&findCmdBuilder); + qr->asFindCommand(&findCmdBuilder); Microseconds maxTime = std::min(duration_cast<Microseconds>(kConfigCommandTimeout), txn->getRemainingMaxTimeMicros()); @@ -340,8 +340,7 @@ StatusWith<Shard::QueryResponse> ShardRemote::_exhaustiveFindOnConfig( maxTime = Milliseconds{1}; } - findCmdBuilder.append(LiteParsedQuery::cmdOptionMaxTimeMS, - durationCount<Milliseconds>(maxTime)); + findCmdBuilder.append(QueryRequest::cmdOptionMaxTimeMS, durationCount<Milliseconds>(maxTime)); Fetcher fetcher(Grid::get(txn)->getExecutorPool()->getFixedExecutor(), host.getValue(), diff --git a/src/mongo/s/commands/cluster_count_cmd.cpp b/src/mongo/s/commands/cluster_count_cmd.cpp index 32306c3c7e2..4bb96e6b086 100644 --- a/src/mongo/s/commands/cluster_count_cmd.cpp +++ b/src/mongo/s/commands/cluster_count_cmd.cpp @@ -144,7 +144,7 @@ public: } const std::initializer_list<StringData> passthroughFields = { - "hint", "$queryOptions", "readConcern", LiteParsedQuery::cmdOptionMaxTimeMS, + "hint", "$queryOptions", "readConcern", QueryRequest::cmdOptionMaxTimeMS, }; for (auto name : passthroughFields) { if (auto field = cmdObj[name]) { diff --git a/src/mongo/s/commands/cluster_explain.cpp b/src/mongo/s/commands/cluster_explain.cpp index 36fb17a0e61..e38a2d072b5 100644 --- a/src/mongo/s/commands/cluster_explain.cpp +++ b/src/mongo/s/commands/cluster_explain.cpp @@ -29,7 +29,6 @@ #include "mongo/platform/basic.h" #include "mongo/bson/bsonmisc.h" -#include "mongo/db/query/lite_parsed_query.h" #include "mongo/rpc/metadata/server_selection_metadata.h" #include "mongo/s/client/shard_registry.h" #include "mongo/s/commands/cluster_explain.h" diff --git a/src/mongo/s/commands/cluster_explain_cmd.cpp b/src/mongo/s/commands/cluster_explain_cmd.cpp index a60bd3c197d..eddac77e971 100644 --- a/src/mongo/s/commands/cluster_explain_cmd.cpp +++ b/src/mongo/s/commands/cluster_explain_cmd.cpp @@ -31,7 +31,6 @@ #include "mongo/client/dbclientinterface.h" #include "mongo/db/commands.h" #include "mongo/db/query/explain.h" -#include "mongo/db/query/lite_parsed_query.h" #include "mongo/rpc/metadata/server_selection_metadata.h" #include "mongo/s/query/cluster_find.h" diff --git a/src/mongo/s/commands/cluster_find_cmd.cpp b/src/mongo/s/commands/cluster_find_cmd.cpp index 2ff26bb1707..1bd898c2c37 100644 --- a/src/mongo/s/commands/cluster_find_cmd.cpp +++ b/src/mongo/s/commands/cluster_find_cmd.cpp @@ -111,15 +111,15 @@ public: str::stream() << "Invalid collection name: " << nss.ns()}; } - // Parse the command BSON to a LiteParsedQuery. + // Parse the command BSON to a QueryRequest. bool isExplain = true; - auto lpq = LiteParsedQuery::makeFromFindCommand(std::move(nss), cmdObj, isExplain); - if (!lpq.isOK()) { - return lpq.getStatus(); + auto qr = QueryRequest::makeFromFindCommand(std::move(nss), cmdObj, isExplain); + if (!qr.isOK()) { + return qr.getStatus(); } return Strategy::explainFind( - txn, cmdObj, *lpq.getValue(), verbosity, serverSelectionMetadata, out); + txn, cmdObj, *qr.getValue(), verbosity, serverSelectionMetadata, out); } bool run(OperationContext* txn, @@ -139,13 +139,13 @@ public: } const bool isExplain = false; - auto lpq = LiteParsedQuery::makeFromFindCommand(nss, cmdObj, isExplain); - if (!lpq.isOK()) { - return appendCommandStatus(result, lpq.getStatus()); + auto qr = QueryRequest::makeFromFindCommand(nss, cmdObj, isExplain); + if (!qr.isOK()) { + return appendCommandStatus(result, qr.getStatus()); } auto cq = - CanonicalQuery::canonicalize(txn, std::move(lpq.getValue()), ExtensionsCallbackNoop()); + CanonicalQuery::canonicalize(txn, std::move(qr.getValue()), ExtensionsCallbackNoop()); if (!cq.isOK()) { return appendCommandStatus(result, cq.getStatus()); } diff --git a/src/mongo/s/commands/cluster_map_reduce_cmd.cpp b/src/mongo/s/commands/cluster_map_reduce_cmd.cpp index 352d5969927..cd4e887a979 100644 --- a/src/mongo/s/commands/cluster_map_reduce_cmd.cpp +++ b/src/mongo/s/commands/cluster_map_reduce_cmd.cpp @@ -94,7 +94,7 @@ BSONObj fixForShards(const BSONObj& orig, if (fn == bypassDocumentValidationCommandOption() || fn == "map" || fn == "mapreduce" || fn == "mapReduce" || fn == "mapparams" || fn == "reduce" || fn == "query" || fn == "sort" || fn == "scope" || fn == "verbose" || fn == "$queryOptions" || - fn == "readConcern" || fn == LiteParsedQuery::cmdOptionMaxTimeMS) { + fn == "readConcern" || fn == QueryRequest::cmdOptionMaxTimeMS) { b.append(e); } else if (fn == "out" || fn == "finalize" || fn == "writeConcern") { // We don't want to copy these @@ -406,7 +406,7 @@ public: BSONObj aggCounts = aggCountsB.done(); finalCmd.append("counts", aggCounts); - if (auto elem = cmdObj[LiteParsedQuery::cmdOptionMaxTimeMS]) + if (auto elem = cmdObj[QueryRequest::cmdOptionMaxTimeMS]) finalCmd.append(elem); if (auto elem = cmdObj[bypassDocumentValidationCommandOption()]) finalCmd.append(elem); diff --git a/src/mongo/s/commands/cluster_pipeline_cmd.cpp b/src/mongo/s/commands/cluster_pipeline_cmd.cpp index e4e3dde7fbf..8fb7a896f89 100644 --- a/src/mongo/s/commands/cluster_pipeline_cmd.cpp +++ b/src/mongo/s/commands/cluster_pipeline_cmd.cpp @@ -165,7 +165,7 @@ public: } const std::initializer_list<StringData> fieldsToPropagateToShards = { - "$queryOptions", "readConcern", LiteParsedQuery::cmdOptionMaxTimeMS, + "$queryOptions", "readConcern", QueryRequest::cmdOptionMaxTimeMS, }; for (auto&& field : fieldsToPropagateToShards) { commandBuilder[field] = Value(cmdObj[field]); @@ -225,9 +225,9 @@ public: mergeCmd["$queryOptions"] = Value(cmdObj["$queryOptions"]); } - if (cmdObj.hasField(LiteParsedQuery::cmdOptionMaxTimeMS)) { - mergeCmd[LiteParsedQuery::cmdOptionMaxTimeMS] = - Value(cmdObj[LiteParsedQuery::cmdOptionMaxTimeMS]); + if (cmdObj.hasField(QueryRequest::cmdOptionMaxTimeMS)) { + mergeCmd[QueryRequest::cmdOptionMaxTimeMS] = + Value(cmdObj[QueryRequest::cmdOptionMaxTimeMS]); } mergeCmd.setField("writeConcern", Value(cmdObj["writeConcern"])); diff --git a/src/mongo/s/commands/commands_public.cpp b/src/mongo/s/commands/commands_public.cpp index a2215e527a4..4e7993a97ee 100644 --- a/src/mongo/s/commands/commands_public.cpp +++ b/src/mongo/s/commands/commands_public.cpp @@ -42,7 +42,6 @@ #include "mongo/db/commands/copydb.h" #include "mongo/db/commands/rename_collection.h" #include "mongo/db/lasterror.h" -#include "mongo/db/query/lite_parsed_query.h" #include "mongo/executor/task_executor_pool.h" #include "mongo/rpc/get_status_from_command_result.h" #include "mongo/s/catalog/catalog_cache.h" diff --git a/src/mongo/s/commands/strategy.cpp b/src/mongo/s/commands/strategy.cpp index 214b0568849..fcba8883592 100644 --- a/src/mongo/s/commands/strategy.cpp +++ b/src/mongo/s/commands/strategy.cpp @@ -49,7 +49,7 @@ #include "mongo/db/namespace_string.h" #include "mongo/db/query/find_common.h" #include "mongo/db/query/getmore_request.h" -#include "mongo/db/query/lite_parsed_query.h" +#include "mongo/db/query/query_request.h" #include "mongo/db/server_parameters.h" #include "mongo/db/stats/counters.h" #include "mongo/rpc/metadata/server_selection_metadata.h" @@ -144,8 +144,8 @@ void Strategy::queryOp(OperationContext* txn, Request& request) { ReadPreferenceSetting readPreference(readPreferenceOption, TagSet()); BSONElement rpElem; - auto readPrefExtractStatus = bsonExtractTypedField( - q.query, LiteParsedQuery::kWrappedReadPrefField, mongo::Object, &rpElem); + auto readPrefExtractStatus = + bsonExtractTypedField(q.query, QueryRequest::kWrappedReadPrefField, mongo::Object, &rpElem); if (readPrefExtractStatus.isOK()) { auto parsedRps = ReadPreferenceSetting::fromBSON(rpElem.Obj()); @@ -160,9 +160,9 @@ void Strategy::queryOp(OperationContext* txn, Request& request) { // If the $explain flag was set, we must run the operation on the shards as an explain command // rather than a find command. - if (canonicalQuery.getValue()->getParsed().isExplain()) { - const LiteParsedQuery& lpq = canonicalQuery.getValue()->getParsed(); - BSONObj findCommand = lpq.asFindCommand(); + if (canonicalQuery.getValue()->getQueryRequest().isExplain()) { + const QueryRequest& qr = canonicalQuery.getValue()->getQueryRequest(); + BSONObj findCommand = qr.asFindCommand(); // We default to allPlansExecution verbosity. auto verbosity = ExplainCommon::EXEC_ALL_PLANS; @@ -172,7 +172,7 @@ void Strategy::queryOp(OperationContext* txn, Request& request) { BSONObjBuilder explainBuilder; uassertStatusOK( - Strategy::explainFind(txn, findCommand, lpq, verbosity, metadata, &explainBuilder)); + Strategy::explainFind(txn, findCommand, qr, verbosity, metadata, &explainBuilder)); BSONObj explainObj = explainBuilder.done(); replyToQuery(0, // query result flags @@ -507,7 +507,7 @@ void Strategy::writeOp(OperationContext* txn, int op, Request& request) { Status Strategy::explainFind(OperationContext* txn, const BSONObj& findCommand, - const LiteParsedQuery& lpq, + const QueryRequest& qr, ExplainCommon::Verbosity verbosity, const rpc::ServerSelectionMetadata& serverSelectionMetadata, BSONObjBuilder* out) { @@ -521,11 +521,11 @@ Status Strategy::explainFind(OperationContext* txn, std::vector<Strategy::CommandResult> shardResults; Strategy::commandOp(txn, - lpq.nss().db().toString(), + qr.nss().db().toString(), explainCmdBob.obj(), options, - lpq.nss().toString(), - lpq.getFilter(), + qr.nss().toString(), + qr.getFilter(), &shardResults); long long millisElapsed = timer.millis(); diff --git a/src/mongo/s/commands/strategy.h b/src/mongo/s/commands/strategy.h index ebd9e36c520..f45031e2e0f 100644 --- a/src/mongo/s/commands/strategy.h +++ b/src/mongo/s/commands/strategy.h @@ -36,9 +36,9 @@ namespace mongo { -class LiteParsedQuery; class OperationContext; class QueryMessage; +class QueryRequest; class Request; namespace rpc { @@ -68,7 +68,7 @@ public: */ static Status explainFind(OperationContext* txn, const BSONObj& findCommand, - const LiteParsedQuery& lpq, + const QueryRequest& qr, ExplainCommon::Verbosity verbosity, const rpc::ServerSelectionMetadata& serverSelectionMetadata, BSONObjBuilder* out); diff --git a/src/mongo/s/query/SConscript b/src/mongo/s/query/SConscript index ae3d0c3e786..d2f2a03f3ed 100644 --- a/src/mongo/s/query/SConscript +++ b/src/mongo/s/query/SConscript @@ -87,7 +87,7 @@ env.CppUnitTest( LIBDEPS=[ 'async_results_merger', '$BUILD_DIR/mongo/db/auth/authorization_manager_mock_init', - '$BUILD_DIR/mongo/db/query/lite_parsed_query', + '$BUILD_DIR/mongo/db/query/query_request', '$BUILD_DIR/mongo/db/service_context_noop_init', '$BUILD_DIR/mongo/executor/thread_pool_task_executor_test_fixture', '$BUILD_DIR/mongo/s/mongoscore', diff --git a/src/mongo/s/query/async_results_merger_test.cpp b/src/mongo/s/query/async_results_merger_test.cpp index 7159d6c0271..fc5a8989a61 100644 --- a/src/mongo/s/query/async_results_merger_test.cpp +++ b/src/mongo/s/query/async_results_merger_test.cpp @@ -35,7 +35,7 @@ #include "mongo/db/json.h" #include "mongo/db/query/cursor_response.h" #include "mongo/db/query/getmore_request.h" -#include "mongo/db/query/lite_parsed_query.h" +#include "mongo/db/query/query_request.h" #include "mongo/executor/network_interface_mock.h" #include "mongo/executor/task_executor.h" #include "mongo/executor/thread_pool_task_executor_test_fixture.h" @@ -105,17 +105,17 @@ protected: boost::optional<long long> getMoreBatchSize = boost::none, ReadPreferenceSetting readPref = ReadPreferenceSetting(ReadPreference::PrimaryOnly)) { const bool isExplain = true; - const auto lpq = - unittest::assertGet(LiteParsedQuery::makeFromFindCommand(_nss, findCmd, isExplain)); + const auto qr = + unittest::assertGet(QueryRequest::makeFromFindCommand(_nss, findCmd, isExplain)); ClusterClientCursorParams params = ClusterClientCursorParams(_nss, readPref); - params.sort = lpq->getSort(); - params.limit = lpq->getLimit(); - params.batchSize = getMoreBatchSize ? getMoreBatchSize : lpq->getBatchSize(); - params.skip = lpq->getSkip(); - params.isTailable = lpq->isTailable(); - params.isAwaitData = lpq->isAwaitData(); - params.isAllowPartialResults = lpq->isAllowPartialResults(); + params.sort = qr->getSort(); + params.limit = qr->getLimit(); + params.batchSize = getMoreBatchSize ? getMoreBatchSize : qr->getBatchSize(); + params.skip = qr->getSkip(); + params.isTailable = qr->isTailable(); + params.isAwaitData = qr->isAwaitData(); + params.isAllowPartialResults = qr->isAllowPartialResults(); for (const auto& shardId : shardIds) { params.remotes.emplace_back(shardId, findCmd); diff --git a/src/mongo/s/query/cluster_find.cpp b/src/mongo/s/query/cluster_find.cpp index 18f44d9e510..7163f76281e 100644 --- a/src/mongo/s/query/cluster_find.cpp +++ b/src/mongo/s/query/cluster_find.cpp @@ -74,75 +74,75 @@ static const BSONObj kSortKeyMetaProjection = BSON("$meta" static const int kPerDocumentOverheadBytesUpperBound = 10; /** - * Given the LiteParsedQuery 'lpq' being executed by mongos, returns a copy of the query which is + * Given the QueryRequest 'qr' being executed by mongos, returns a copy of the query which is * suitable for forwarding to the targeted hosts. */ -StatusWith<std::unique_ptr<LiteParsedQuery>> transformQueryForShards(const LiteParsedQuery& lpq) { +StatusWith<std::unique_ptr<QueryRequest>> transformQueryForShards(const QueryRequest& qr) { // If there is a limit, we forward the sum of the limit and the skip. boost::optional<long long> newLimit; - if (lpq.getLimit()) { + if (qr.getLimit()) { long long newLimitValue; - if (mongoSignedAddOverflow64(*lpq.getLimit(), lpq.getSkip().value_or(0), &newLimitValue)) { + if (mongoSignedAddOverflow64(*qr.getLimit(), qr.getSkip().value_or(0), &newLimitValue)) { return Status( ErrorCodes::Overflow, str::stream() << "sum of limit and skip cannot be represented as a 64-bit integer, limit: " - << *lpq.getLimit() + << *qr.getLimit() << ", skip: " - << lpq.getSkip().value_or(0)); + << qr.getSkip().value_or(0)); } newLimit = newLimitValue; } // Similarly, if nToReturn is set, we forward the sum of nToReturn and the skip. boost::optional<long long> newNToReturn; - if (lpq.getNToReturn()) { + if (qr.getNToReturn()) { // !wantMore and ntoreturn mean the same as !wantMore and limit, so perform the conversion. - if (!lpq.wantMore()) { + if (!qr.wantMore()) { long long newLimitValue; if (mongoSignedAddOverflow64( - *lpq.getNToReturn(), lpq.getSkip().value_or(0), &newLimitValue)) { + *qr.getNToReturn(), qr.getSkip().value_or(0), &newLimitValue)) { return Status(ErrorCodes::Overflow, str::stream() << "sum of ntoreturn and skip cannot be represented as a 64-bit " "integer, ntoreturn: " - << *lpq.getNToReturn() + << *qr.getNToReturn() << ", skip: " - << lpq.getSkip().value_or(0)); + << qr.getSkip().value_or(0)); } newLimit = newLimitValue; } else { long long newNToReturnValue; if (mongoSignedAddOverflow64( - *lpq.getNToReturn(), lpq.getSkip().value_or(0), &newNToReturnValue)) { + *qr.getNToReturn(), qr.getSkip().value_or(0), &newNToReturnValue)) { return Status(ErrorCodes::Overflow, str::stream() << "sum of ntoreturn and skip cannot be represented as a 64-bit " "integer, ntoreturn: " - << *lpq.getNToReturn() + << *qr.getNToReturn() << ", skip: " - << lpq.getSkip().value_or(0)); + << qr.getSkip().value_or(0)); } newNToReturn = newNToReturnValue; } } // If there is a sort other than $natural, we send a sortKey meta-projection to the remote node. - BSONObj newProjection = lpq.getProj(); - if (!lpq.getSort().isEmpty() && !lpq.getSort()["$natural"]) { + BSONObj newProjection = qr.getProj(); + if (!qr.getSort().isEmpty() && !qr.getSort()["$natural"]) { BSONObjBuilder projectionBuilder; - projectionBuilder.appendElements(lpq.getProj()); + projectionBuilder.appendElements(qr.getProj()); projectionBuilder.append(ClusterClientCursorParams::kSortKeyField, kSortKeyMetaProjection); newProjection = projectionBuilder.obj(); } - auto newLPQ = stdx::make_unique<LiteParsedQuery>(lpq); - newLPQ->setProj(newProjection); - newLPQ->setSkip(boost::none); - newLPQ->setLimit(newLimit); - newLPQ->setNToReturn(newNToReturn); - invariantOK(newLPQ->validate()); - return std::move(newLPQ); + auto newQR = stdx::make_unique<QueryRequest>(qr); + newQR->setProj(newProjection); + newQR->setSkip(boost::none); + newQR->setLimit(newLimit); + newQR->setNToReturn(newNToReturn); + invariantOK(newQR->validate()); + return std::move(newQR); } StatusWith<CursorId> runQueryWithoutRetrying(OperationContext* txn, @@ -161,7 +161,7 @@ StatusWith<CursorId> runQueryWithoutRetrying(OperationContext* txn, invariant(chunkManager); std::set<ShardId> shardIds; - chunkManager->getShardIdsForQuery(txn, query.getParsed().getFilter(), &shardIds); + chunkManager->getShardIdsForQuery(txn, query.getQueryRequest().getFilter(), &shardIds); for (auto id : shardIds) { auto shard = shardRegistry->getShard(txn, id); @@ -174,12 +174,12 @@ StatusWith<CursorId> runQueryWithoutRetrying(OperationContext* txn, } ClusterClientCursorParams params(query.nss(), readPref); - params.limit = query.getParsed().getLimit(); - params.batchSize = query.getParsed().getEffectiveBatchSize(); - params.skip = query.getParsed().getSkip(); - params.isTailable = query.getParsed().isTailable(); - params.isAwaitData = query.getParsed().isAwaitData(); - params.isAllowPartialResults = query.getParsed().isAllowPartialResults(); + params.limit = query.getQueryRequest().getLimit(); + params.batchSize = query.getQueryRequest().getEffectiveBatchSize(); + params.skip = query.getQueryRequest().getSkip(); + params.isTailable = query.getQueryRequest().isTailable(); + params.isAwaitData = query.getQueryRequest().isAwaitData(); + params.isAllowPartialResults = query.getQueryRequest().isAllowPartialResults(); // This is the batchSize passed to each subsequent getMore command issued by the cursor. We // usually use the batchSize associated with the initial find, but as it is illegal to send a @@ -191,16 +191,16 @@ StatusWith<CursorId> runQueryWithoutRetrying(OperationContext* txn, // $natural sort is actually a hint to use a collection scan, and shouldn't be treated like a // sort on mongos. Including a $natural anywhere in the sort spec results in the whole sort // being considered a hint to use a collection scan. - if (!query.getParsed().getSort().hasField("$natural")) { - params.sort = FindCommon::transformSortSpec(query.getParsed().getSort()); + if (!query.getQueryRequest().getSort().hasField("$natural")) { + params.sort = FindCommon::transformSortSpec(query.getQueryRequest().getSort()); } // Tailable cursors can't have a sort, which should have already been validated. invariant(params.sort.isEmpty() || !params.isTailable); - const auto lpqToForward = transformQueryForShards(query.getParsed()); - if (!lpqToForward.isOK()) { - return lpqToForward.getStatus(); + const auto qrToForward = transformQueryForShards(query.getQueryRequest()); + if (!qrToForward.isOK()) { + return qrToForward.getStatus(); } // Use read pref to target a particular host from each shard. Also construct the find command @@ -210,7 +210,7 @@ StatusWith<CursorId> runQueryWithoutRetrying(OperationContext* txn, // Build the find command, and attach shard version if necessary. BSONObjBuilder cmdBuilder; - lpqToForward.getValue()->asFindCommand(&cmdBuilder); + qrToForward.getValue()->asFindCommand(&cmdBuilder); if (chunkManager) { ChunkVersion version(chunkManager->getVersion(shard->getId())); @@ -228,7 +228,7 @@ StatusWith<CursorId> runQueryWithoutRetrying(OperationContext* txn, auto cursorState = ClusterCursorManager::CursorState::NotExhausted; int bytesBuffered = 0; - while (!FindCommon::enoughForFirstBatch(query.getParsed(), results->size())) { + while (!FindCommon::enoughForFirstBatch(query.getQueryRequest(), results->size())) { auto next = ccc->next(); if (!next.isOK()) { return next.getStatus(); @@ -258,7 +258,7 @@ StatusWith<CursorId> runQueryWithoutRetrying(OperationContext* txn, results->push_back(std::move(*next.getValue())); } - if (!query.getParsed().wantMore() && !ccc->isTailable()) { + if (!query.getQueryRequest().wantMore() && !ccc->isTailable()) { cursorState = ClusterCursorManager::CursorState::Exhausted; } @@ -272,7 +272,7 @@ StatusWith<CursorId> runQueryWithoutRetrying(OperationContext* txn, auto cursorManager = grid.getCursorManager(); const auto cursorType = chunkManager ? ClusterCursorManager::CursorType::NamespaceSharded : ClusterCursorManager::CursorType::NamespaceNotSharded; - const auto cursorLifetime = query.getParsed().isNoCursorTimeout() + const auto cursorLifetime = query.getQueryRequest().isNoCursorTimeout() ? ClusterCursorManager::CursorLifetime::Immortal : ClusterCursorManager::CursorLifetime::Mortal; return cursorManager->registerCursor( @@ -290,12 +290,12 @@ StatusWith<CursorId> ClusterFind::runQuery(OperationContext* txn, invariant(results); // Projection on the reserved sort key field is illegal in mongos. - if (query.getParsed().getProj().hasField(ClusterClientCursorParams::kSortKeyField)) { + if (query.getQueryRequest().getProj().hasField(ClusterClientCursorParams::kSortKeyField)) { return {ErrorCodes::BadValue, str::stream() << "Projection contains illegal field '" << ClusterClientCursorParams::kSortKeyField << "': " - << query.getParsed().getProj()}; + << query.getQueryRequest().getProj()}; } auto dbConfig = grid.catalogCache()->getDatabase(txn, query.nss().db().toString()); @@ -417,14 +417,13 @@ StatusWith<ReadPreferenceSetting> ClusterFind::extractUnwrappedReadPref(const BS const bool isSlaveOk) { BSONElement queryOptionsElt; auto status = bsonExtractTypedField( - cmdObj, LiteParsedQuery::kUnwrappedReadPrefField, BSONType::Object, &queryOptionsElt); + cmdObj, QueryRequest::kUnwrappedReadPrefField, BSONType::Object, &queryOptionsElt); if (status.isOK()) { // There must be a nested object containing the read preference if there is a queryOptions // field. BSONObj queryOptionsObj = queryOptionsElt.Obj(); - invariant(queryOptionsObj[LiteParsedQuery::kWrappedReadPrefField].type() == - BSONType::Object); - BSONObj readPrefObj = queryOptionsObj[LiteParsedQuery::kWrappedReadPrefField].Obj(); + invariant(queryOptionsObj[QueryRequest::kWrappedReadPrefField].type() == BSONType::Object); + BSONObj readPrefObj = queryOptionsObj[QueryRequest::kWrappedReadPrefField].Obj(); auto readPref = ReadPreferenceSetting::fromBSON(readPrefObj); if (!readPref.isOK()) { diff --git a/src/mongo/s/set_shard_version_request.cpp b/src/mongo/s/set_shard_version_request.cpp index f6afef3b4e4..b21c4423a84 100644 --- a/src/mongo/s/set_shard_version_request.cpp +++ b/src/mongo/s/set_shard_version_request.cpp @@ -34,7 +34,7 @@ #include "mongo/bson/bsonobj.h" #include "mongo/bson/bsonobjbuilder.h" #include "mongo/bson/util/bson_extract.h" -#include "mongo/db/query/lite_parsed_query.h" +#include "mongo/db/query/query_request.h" #include "mongo/util/assert_util.h" #include "mongo/util/mongoutils/str.h" @@ -218,7 +218,7 @@ BSONObj SetShardVersionRequest::toBSON() const { if (_init) { // Always include a 30 second timeout on sharding state initialization, to work around // SERVER-21458. - cmdBuilder.append(LiteParsedQuery::cmdOptionMaxTimeMS, 30000); + cmdBuilder.append(QueryRequest::cmdOptionMaxTimeMS, 30000); } else { _version.get().appendForSetShardVersion(&cmdBuilder); } diff --git a/src/mongo/s/shard_key_pattern.cpp b/src/mongo/s/shard_key_pattern.cpp index 607f2fc2a42..3ec6bd8809e 100644 --- a/src/mongo/s/shard_key_pattern.cpp +++ b/src/mongo/s/shard_key_pattern.cpp @@ -270,10 +270,10 @@ StatusWith<BSONObj> ShardKeyPattern::extractShardKeyFromQuery(OperationContext* if (!isValid()) return StatusWith<BSONObj>(BSONObj()); - auto lpq = stdx::make_unique<LiteParsedQuery>(NamespaceString("")); - lpq->setFilter(basicQuery); + auto qr = stdx::make_unique<QueryRequest>(NamespaceString("")); + qr->setFilter(basicQuery); - auto statusWithCQ = CanonicalQuery::canonicalize(txn, std::move(lpq), ExtensionsCallbackNoop()); + auto statusWithCQ = CanonicalQuery::canonicalize(txn, std::move(qr), ExtensionsCallbackNoop()); if (!statusWithCQ.isOK()) { return StatusWith<BSONObj>(statusWithCQ.getStatus()); } diff --git a/src/mongo/s/sharding_test_fixture.cpp b/src/mongo/s/sharding_test_fixture.cpp index 3c6660fcc61..60347c00b03 100644 --- a/src/mongo/s/sharding_test_fixture.cpp +++ b/src/mongo/s/sharding_test_fixture.cpp @@ -39,7 +39,7 @@ #include "mongo/db/client.h" #include "mongo/db/commands.h" #include "mongo/db/namespace_string.h" -#include "mongo/db/query/lite_parsed_query.h" +#include "mongo/db/query/query_request.h" #include "mongo/db/repl/read_concern_args.h" #include "mongo/db/service_context_noop.h" #include "mongo/executor/network_interface_mock.h" @@ -283,7 +283,7 @@ void ShardingTestFixture::expectGetShards(const std::vector<ShardType>& shards) const NamespaceString nss(request.dbname, request.cmdObj.firstElement().String()); ASSERT_EQ(nss.toString(), ShardType::ConfigNS); - auto queryResult = LiteParsedQuery::makeFromFindCommand(nss, request.cmdObj, false); + auto queryResult = QueryRequest::makeFromFindCommand(nss, request.cmdObj, false); ASSERT_OK(queryResult.getStatus()); const auto& query = queryResult.getValue(); |