summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/document_source_bucket.cpp
diff options
context:
space:
mode:
authorLucas de Castro Borges <lucas@gnuabordo.com.br>2025-02-11 15:07:35 -0300
committerLucas de Castro Borges <lucas@gnuabordo.com.br>2025-02-11 15:07:35 -0300
commit4cb8841196d0625dfa3825aa326f071cd27c7b8b (patch)
tree1682a647d4463397c119183369ae6f750d5fdcff /src/mongo/db/pipeline/document_source_bucket.cpp
parentaa03c6362cbaa767638e6eed9b031d86dd2643d1 (diff)
parent8f0827553e09872941945a093b647a4211a9db7f (diff)
Update upstream source from tag 'upstream/6.0.0'master
Update to upstream version '6.0.0' with Debian dir 5604a80ec1c96ca76f25f40d78e6ef855abec322
Diffstat (limited to 'src/mongo/db/pipeline/document_source_bucket.cpp')
-rw-r--r--src/mongo/db/pipeline/document_source_bucket.cpp20
1 files changed, 6 insertions, 14 deletions
diff --git a/src/mongo/db/pipeline/document_source_bucket.cpp b/src/mongo/db/pipeline/document_source_bucket.cpp
index acf56f771b9..4de8daee491 100644
--- a/src/mongo/db/pipeline/document_source_bucket.cpp
+++ b/src/mongo/db/pipeline/document_source_bucket.cpp
@@ -71,12 +71,6 @@ list<intrusive_ptr<DocumentSource>> DocumentSourceBucket::createFromBson(
BSONElement groupByField;
Value defaultValue;
- // Validating the input boundaries and default value requires a correct collation. We may not
- // have this at parse time if we are not parsing for the purpose of executing the queries (see
- // SERVER-87166), so we should skip the validation for that case.
- const bool shouldValidateInputRanges =
- pExpCtx->mongoProcessInterface->isExpectedToExecuteQueries();
-
bool outputFieldSpecified = false;
for (auto&& argument : bucketObj) {
const auto argName = argument.fieldNameStringData();
@@ -84,10 +78,10 @@ list<intrusive_ptr<DocumentSource>> DocumentSourceBucket::createFromBson(
groupByField = argument;
const bool groupByIsExpressionInObject = groupByField.type() == BSONType::Object &&
- groupByField.embeddedObject().firstElementFieldNameStringData().startsWith("$");
+ groupByField.embeddedObject().firstElementFieldName()[0] == '$';
- const bool groupByIsPrefixedPath = groupByField.type() == BSONType::String &&
- groupByField.valueStringData().startsWith("$");
+ const bool groupByIsPrefixedPath =
+ groupByField.type() == BSONType::String && groupByField.valueStringData()[0] == '$';
uassert(40202,
str::stream() << "The $bucket 'groupBy' field must be defined as a $-prefixed "
"path or an expression, but found: "
@@ -135,8 +129,7 @@ list<intrusive_ptr<DocumentSource>> DocumentSourceBucket::createFromBson(
<< "The 'boundaries' option to $bucket must be sorted, but elements "
<< i - 1 << " and " << i << " are not in ascending order ("
<< lower.toString() << " is not less than " << upper.toString() << ").",
- !shouldValidateInputRanges ||
- pExpCtx->getValueComparator().evaluate(lower < upper));
+ pExpCtx->getValueComparator().evaluate(lower < upper));
}
} else if ("default" == argName) {
// If there is a default, make sure that it parses to a constant expression then add
@@ -173,9 +166,8 @@ list<intrusive_ptr<DocumentSource>> DocumentSourceBucket::createFromBson(
Value lowerValue = boundaryValues.front();
Value upperValue = boundaryValues.back();
- if (shouldValidateInputRanges &&
- canonicalizeBSONType(defaultValue.getType()) ==
- canonicalizeBSONType(lowerValue.getType())) {
+ if (canonicalizeBSONType(defaultValue.getType()) ==
+ canonicalizeBSONType(lowerValue.getType())) {
// If the default has the same canonical type as the bucket's boundaries, then make sure the
// default is less than the lowest boundary or greater than or equal to the highest
// boundary.