diff options
| author | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-18 17:02:53 -0300 |
|---|---|---|
| committer | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-18 17:02:53 -0300 |
| commit | 959575a5ca598bf5f37fb5cebe7ed1d80d3d71f7 (patch) | |
| tree | acc8d60aedb12b70048e676e8a7349deb0010db8 /src/mongo/db/pipeline/document_source_group_test.cpp | |
| parent | 76588293975fc059cf076779e4283e6ffaf8afff (diff) | |
New upstream version 6.0.20upstream
Diffstat (limited to 'src/mongo/db/pipeline/document_source_group_test.cpp')
| -rw-r--r-- | src/mongo/db/pipeline/document_source_group_test.cpp | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/mongo/db/pipeline/document_source_group_test.cpp b/src/mongo/db/pipeline/document_source_group_test.cpp index 9a621cffdcd..f3bb0863adf 100644 --- a/src/mongo/db/pipeline/document_source_group_test.cpp +++ b/src/mongo/db/pipeline/document_source_group_test.cpp @@ -246,6 +246,103 @@ TEST_F(DocumentSourceGroupTest, ShouldNotReportDottedGroupKeyAsARename) { ASSERT_EQ(modifiedPathsRet.renames.size(), 0UL); } +TEST_F(DocumentSourceGroupTest, GroupRedactsCorrectWithIdNull) { + auto spec = fromjson(R"({ + $group: { + _id: null, + foo: { $count: {} } + } + })"); + auto docSource = DocumentSourceGroup::createFromBson(spec.firstElement(), getExpCtx()); + ASSERT_BSONOBJ_EQ_AUTO( // NOLINT + R"({"$group":{"_id":"?null","HASH<foo>":{"$sum":"?number"}}})", + redact(*docSource)); +} + +TEST_F(DocumentSourceGroupTest, GroupRedactsCorrectWithIdSingleField) { + auto spec = fromjson(R"({ + $group: { + _id: '$foo' + } + })"); + auto docSource = DocumentSourceGroup::createFromBson(spec.firstElement(), getExpCtx()); + ASSERT_BSONOBJ_EQ_AUTO( // NOLINT + R"({ + "$group": { + "_id": "$HASH<foo>" + } + })", + redact(*docSource)); +} + +TEST_F(DocumentSourceGroupTest, GroupRedactsCorrectWithIdDocument) { + auto spec = fromjson(R"({ + $group: { + _id: { + x: '$x', + y: '$z' + }, + foo: { + $sum: { + $multiply: ['$a.b', '$c', '$d'] + } + }, + bar: { + $first: '$baz' + } + } + })"); + auto docSource = DocumentSourceGroup::createFromBson(spec.firstElement(), getExpCtx()); + ASSERT_BSONOBJ_EQ_AUTO( // NOLINT + R"({ + "$group": { + "_id": { + "HASH<x>": "$HASH<x>", + "HASH<y>": "$HASH<z>" + }, + "HASH<foo>": { + "$sum": { + "$multiply": ["$HASH<a>.HASH<b>", "$HASH<c>", "$HASH<d>"] + } + }, + "HASH<bar>": { + "$first": "$HASH<baz>" + } + } + })", + redact(*docSource)); +} + +TEST_F(DocumentSourceGroupTest, StreamingGroupRedactsCorrectly) { + auto spec = fromjson(R"({ + $_internalStreamingGroup: { + _id: { + a: "$a", + b: "$b" + }, + a: { + $first: '$b' + }, + $monotonicIdFields: [ "a", "b" ] + } + })"); + auto docSource = DocumentSourceStreamingGroup::createFromBson(spec.firstElement(), getExpCtx()); + ASSERT_BSONOBJ_EQ_AUTO( // NOLINT + R"({ + "$_internalStreamingGroup": { + "_id": { + "HASH<a>": "$HASH<a>", + "HASH<b>": "$HASH<b>" + }, + "HASH<a>": { + "$first": "$HASH<b>" + }, + "$monotonicIdFields": [ "HASH<a>", "HASH<b>" ] + } + })", + redact(*docSource)); +} + BSONObj toBson(const intrusive_ptr<DocumentSource>& source) { vector<Value> arr; source->serializeToArray(arr); |
