summaryrefslogtreecommitdiff
path: root/src/mongo/db/query/sbe_stage_builder_accumulator.cpp
diff options
context:
space:
mode:
authorIrina Yatsenko <irina.yatsenko@mongodb.com>2021-11-22 16:07:42 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-11-22 16:42:11 +0000
commit72f6b0659b7b3c88fb78543e69b6374a091e107e (patch)
tree000c5e46da552d8c1dc132be9952f40a33b8d493 /src/mongo/db/query/sbe_stage_builder_accumulator.cpp
parentd04cc1b5ab4b8cf36d4b7db224295e5e8af9bdab (diff)
downloadmongo-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.cpp8
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)};
}