diff options
author | Militsa Sotirova <militsa.sotirova@mongodb.com> | 2022-09-14 18:00:53 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-09-14 20:26:03 +0000 |
commit | 7522eca50c6ce4792cd0ebc9a2a4bb65e3729642 (patch) | |
tree | 623b66f2b06eea1bef64c4a55ce81a30b0839cf7 /src | |
parent | dd9d37fa07a7af46ac4ee8dabeb235dc9571afb0 (diff) | |
download | mongo-7522eca50c6ce4792cd0ebc9a2a4bb65e3729642.tar.gz |
SERVER-68692 add support for limit and skip queries in ABT translation
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/db/pipeline/abt/canonical_query_translation.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/mongo/db/pipeline/abt/canonical_query_translation.cpp b/src/mongo/db/pipeline/abt/canonical_query_translation.cpp index 066f060d81f..87c13355f37 100644 --- a/src/mongo/db/pipeline/abt/canonical_query_translation.cpp +++ b/src/mongo/db/pipeline/abt/canonical_query_translation.cpp @@ -59,8 +59,17 @@ ABT translateCanonicalQueryToABT(const Metadata& metadata, translateProjection(ctx, scanProjName, canonicalQuery.getExpCtx(), proj); } - // TODO SERVER-68692: Support limit. - // TODO SERVER-68693: Support skip. + auto skipAmount = canonicalQuery.getFindCommandRequest().getSkip(); + auto limitAmount = canonicalQuery.getFindCommandRequest().getLimit(); + + if (limitAmount || skipAmount) { + ctx.setNode<LimitSkipNode>( + std::move(ctx.getNode()._rootProjection), + properties::LimitSkipRequirement( + limitAmount.value_or(properties::LimitSkipRequirement::kMaxVal), + skipAmount.value_or(0)), + std::move(ctx.getNode()._node)); + } return make<RootNode>(properties::ProjectionRequirement{ProjectionNameVector{ std::move(ctx.getNode()._rootProjection)}}, |