summaryrefslogtreecommitdiff
path: root/src/mongo/db/exec/inclusion_projection_executor.cpp
diff options
context:
space:
mode:
authorLucas de Castro Borges <lucas@gnuabordo.com.br>2025-02-18 17:02:53 -0300
committerLucas de Castro Borges <lucas@gnuabordo.com.br>2025-02-18 17:02:53 -0300
commit959575a5ca598bf5f37fb5cebe7ed1d80d3d71f7 (patch)
treeacc8d60aedb12b70048e676e8a7349deb0010db8 /src/mongo/db/exec/inclusion_projection_executor.cpp
parent76588293975fc059cf076779e4283e6ffaf8afff (diff)
New upstream version 6.0.20upstream
Diffstat (limited to 'src/mongo/db/exec/inclusion_projection_executor.cpp')
-rw-r--r--src/mongo/db/exec/inclusion_projection_executor.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/mongo/db/exec/inclusion_projection_executor.cpp b/src/mongo/db/exec/inclusion_projection_executor.cpp
index 35828091f16..d06cedf61b6 100644
--- a/src/mongo/db/exec/inclusion_projection_executor.cpp
+++ b/src/mongo/db/exec/inclusion_projection_executor.cpp
@@ -67,7 +67,7 @@ void FastPathEligibleInclusionNode::_applyProjections(BSONObj bson, BSONObjBuild
const auto bsonElement{it.next()};
const auto fieldName{bsonElement.fieldNameStringData()};
- if (_projectedFields.find(fieldName) != _projectedFields.end()) {
+ if (_projectedFieldsSet.find(fieldName) != _projectedFieldsSet.end()) {
bob->append(bsonElement);
--nFieldsNeeded;
} else if (auto childIt = _children.find(fieldName); childIt != _children.end()) {
@@ -219,11 +219,12 @@ std::pair<BSONObj, bool> InclusionNode::extractComputedProjectionsInProject(
for (const auto& expressionSpec : addFieldsExpressions) {
auto&& fieldName = std::get<0>(expressionSpec).toString();
auto oldExpr = std::get<1>(expressionSpec);
- oldExpr->serialize(false).addToBsonObj(&bb, fieldName);
+ oldExpr->serialize().addToBsonObj(&bb, fieldName);
if (std::get<2>(expressionSpec)) {
// Replace the expression with an inclusion projected field.
- _projectedFields.insert(fieldName);
+ auto it = _projectedFields.insert(_projectedFields.end(), fieldName);
+ _projectedFieldsSet.insert(StringData(*it));
_expressions.erase(fieldName);
// Only computed projections at the beginning of the list were marked to become
// projected fields. The new projected field is at the beginning of the
@@ -302,7 +303,7 @@ std::pair<BSONObj, bool> InclusionNode::extractComputedProjectionsInAddFields(
for (const auto& expressionSpec : addFieldsExpressions) {
auto&& fieldName = expressionSpec.first.toString();
auto expr = expressionSpec.second;
- expr->serialize(false).addToBsonObj(&bb, fieldName);
+ expr->serialize().addToBsonObj(&bb, fieldName);
// Remove the expression from this inclusion node.
_expressions.erase(fieldName);