diff options
author | Irina Yatsenko <irina.yatsenko@mongodb.com> | 2021-11-22 16:07:42 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-11-22 16:42:11 +0000 |
commit | 72f6b0659b7b3c88fb78543e69b6374a091e107e (patch) | |
tree | 000c5e46da552d8c1dc132be9952f40a33b8d493 /src/mongo/db/query/sbe_stage_builder_accumulator.cpp | |
parent | d04cc1b5ab4b8cf36d4b7db224295e5e8af9bdab (diff) | |
download | mongo-72f6b0659b7b3c88fb78543e69b6374a091e107e.tar.gz |
SERVER-61652 Make addToSet in SBE to be collation aware
Diffstat (limited to 'src/mongo/db/query/sbe_stage_builder_accumulator.cpp')
-rw-r--r-- | src/mongo/db/query/sbe_stage_builder_accumulator.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/mongo/db/query/sbe_stage_builder_accumulator.cpp b/src/mongo/db/query/sbe_stage_builder_accumulator.cpp index 34ee3de9422..f24668fb1f5 100644 --- a/src/mongo/db/query/sbe_stage_builder_accumulator.cpp +++ b/src/mongo/db/query/sbe_stage_builder_accumulator.cpp @@ -309,7 +309,13 @@ std::pair<std::vector<std::unique_ptr<sbe::EExpression>>, EvalStage> buildAccumu EvalStage inputStage, PlanNodeId planNodeId) { std::vector<std::unique_ptr<sbe::EExpression>> aggs; - aggs.push_back(makeFunction("addToSet", std::move(arg))); + auto collatorSlot = state.env->getSlotIfExists("collator"_sd); + if (collatorSlot) { + aggs.push_back(makeFunction( + "collAddToSet"_sd, sbe::makeE<sbe::EVariable>(*collatorSlot), std::move(arg))); + } else { + aggs.push_back(makeFunction("addToSet", std::move(arg))); + } return {std::move(aggs), std::move(inputStage)}; } |