diff options
Diffstat (limited to 'src/mongo/db/commands')
-rw-r--r-- | src/mongo/db/commands/cqf/cqf_aggregate.cpp | 10 | ||||
-rw-r--r-- | src/mongo/db/commands/index_filter_commands.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/commands/plan_cache_commands_test.cpp | 10 | ||||
-rw-r--r-- | src/mongo/db/commands/run_aggregate.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/commands/user_management_commands.cpp | 7 |
5 files changed, 19 insertions, 12 deletions
diff --git a/src/mongo/db/commands/cqf/cqf_aggregate.cpp b/src/mongo/db/commands/cqf/cqf_aggregate.cpp index 26f6bcf5cff..516a3f9ca2e 100644 --- a/src/mongo/db/commands/cqf/cqf_aggregate.cpp +++ b/src/mongo/db/commands/cqf/cqf_aggregate.cpp @@ -184,12 +184,16 @@ static opt::unordered_map<std::string, optimizer::IndexDefinition> buildIndexSpe // TODO: simplify expression. - PartialSchemaReqConversion conversion = convertExprToPartialSchemaReq(exprABT); - if (!conversion._success || conversion._hasEmptyInterval) { + auto conversion = convertExprToPartialSchemaReq(exprABT, true /*isFilterContext*/); + if (!conversion || conversion->_hasEmptyInterval) { // Unsatisfiable partial index filter? continue; } - partialIndexReqMap = std::move(conversion._reqMap); + tassert(6624257, + "Should not be seeing a partial index filter where we need to over-approximate", + !conversion->_retainPredicate); + + partialIndexReqMap = std::move(conversion->_reqMap); } // For now we assume distribution is Centralized. diff --git a/src/mongo/db/commands/index_filter_commands.cpp b/src/mongo/db/commands/index_filter_commands.cpp index f040bd9eea3..5deb5ecd339 100644 --- a/src/mongo/db/commands/index_filter_commands.cpp +++ b/src/mongo/db/commands/index_filter_commands.cpp @@ -99,7 +99,7 @@ void removePlanCacheEntriesByIndexFilterKeys(const stdx::unordered_set<uint32_t> sbe::PlanCache* planCache) { planCache->removeIf([&](const sbe::PlanCacheKey& key, const sbe::PlanCacheEntry& entry) { return indexFilterKeys.contains(entry.indexFilterKey) && - key.getCollectionUuid() == collectionUuid; + key.getMainCollectionState().uuid == collectionUuid; }); } } // namespace diff --git a/src/mongo/db/commands/plan_cache_commands_test.cpp b/src/mongo/db/commands/plan_cache_commands_test.cpp index 4ef229c36f4..3495ee127d6 100644 --- a/src/mongo/db/commands/plan_cache_commands_test.cpp +++ b/src/mongo/db/commands/plan_cache_commands_test.cpp @@ -40,7 +40,7 @@ namespace { static const NamespaceString nss{"test.collection"_sd}; -PlanCacheKey makeKey(const CanonicalQuery& cq) { +PlanCacheKey makeClassicKey(const CanonicalQuery& cq) { CollectionMock coll(nss); return plan_cache_key_factory::make<PlanCacheKey>(cq, &coll); } @@ -106,7 +106,7 @@ TEST(PlanCacheCommandsTest, CanCanonicalizeWithValidQuery) { plan_cache_commands::canonicalize(opCtx.get(), nss.ns(), fromjson("{query: {b: 3, a: 4}}")); ASSERT_OK(statusWithCQ.getStatus()); std::unique_ptr<CanonicalQuery> equivQuery = std::move(statusWithCQ.getValue()); - ASSERT_EQUALS(makeKey(*query), makeKey(*equivQuery)); + ASSERT_EQUALS(makeClassicKey(*query), makeClassicKey(*equivQuery)); } TEST(PlanCacheCommandsTest, SortQueryResultsInDifferentPlanCacheKeyFromUnsorted) { @@ -124,7 +124,7 @@ TEST(PlanCacheCommandsTest, SortQueryResultsInDifferentPlanCacheKeyFromUnsorted) opCtx.get(), nss.ns(), fromjson("{query: {a: 1, b: 1}, sort: {a: 1, b: 1}}")); ASSERT_OK(statusWithCQ.getStatus()); std::unique_ptr<CanonicalQuery> sortQuery = std::move(statusWithCQ.getValue()); - ASSERT_NOT_EQUALS(makeKey(*query), makeKey(*sortQuery)); + ASSERT_NOT_EQUALS(makeClassicKey(*query), makeClassicKey(*sortQuery)); } // Regression test for SERVER-17158. @@ -143,7 +143,7 @@ TEST(PlanCacheCommandsTest, SortsAreProperlyDelimitedInPlanCacheKey) { opCtx.get(), nss.ns(), fromjson("{query: {a: 1, b: 1}, sort: {aab: 1}}")); ASSERT_OK(statusWithCQ.getStatus()); std::unique_ptr<CanonicalQuery> sortQuery2 = std::move(statusWithCQ.getValue()); - ASSERT_NOT_EQUALS(makeKey(*sortQuery1), makeKey(*sortQuery2)); + ASSERT_NOT_EQUALS(makeClassicKey(*sortQuery1), makeClassicKey(*sortQuery2)); } TEST(PlanCacheCommandsTest, ProjectQueryResultsInDifferentPlanCacheKeyFromUnprojected) { @@ -160,7 +160,7 @@ TEST(PlanCacheCommandsTest, ProjectQueryResultsInDifferentPlanCacheKeyFromUnproj opCtx.get(), nss.ns(), fromjson("{query: {a: 1, b: 1}, projection: {_id: 0, a: 1}}")); ASSERT_OK(statusWithCQ.getStatus()); std::unique_ptr<CanonicalQuery> projectionQuery = std::move(statusWithCQ.getValue()); - ASSERT_NOT_EQUALS(makeKey(*query), makeKey(*projectionQuery)); + ASSERT_NOT_EQUALS(makeClassicKey(*query), makeClassicKey(*projectionQuery)); } } // namespace diff --git a/src/mongo/db/commands/run_aggregate.cpp b/src/mongo/db/commands/run_aggregate.cpp index 6230b6da99d..42053578913 100644 --- a/src/mongo/db/commands/run_aggregate.cpp +++ b/src/mongo/db/commands/run_aggregate.cpp @@ -1031,7 +1031,7 @@ Status runAggregate(OperationContext* opCtx, // yet. invariant(ctx); Explain::explainStages(explainExecutor, - ctx->getCollection(), + collections, *(expCtx->explain), BSON("optimizedPipeline" << true), cmdObj, diff --git a/src/mongo/db/commands/user_management_commands.cpp b/src/mongo/db/commands/user_management_commands.cpp index d1bfe34e501..63bfeb73a03 100644 --- a/src/mongo/db/commands/user_management_commands.cpp +++ b/src/mongo/db/commands/user_management_commands.cpp @@ -1461,8 +1461,11 @@ UsersInfoReply CmdUMCTyped<UsersInfoCommand, UMCInfoParams>::Invocation::typedRu CommandHelpers::appendSimpleCommandStatus(bodyBuilder, true); bodyBuilder.doneFast(); auto response = CursorResponse::parseFromBSONThrowing(replyBuilder.releaseBody()); - DBClientCursor cursor( - &client, response.getNSS(), response.getCursorId(), 0, 0, response.releaseBatch()); + DBClientCursor cursor(&client, + response.getNSS(), + response.getCursorId(), + false /*isExhaust*/, + response.releaseBatch()); while (cursor.more()) { users.push_back(cursor.next().getOwned()); |