diff --git a/src/mongo/db/query/compiler/dependency_analysis/pipeline_dependency_graph.cpp b/src/mongo/db/query/compiler/dependency_analysis/pipeline_dependency_graph.cpp index 5e82dfbbbb5..c1bdec39bd2 100644 --- a/src/mongo/db/query/compiler/dependency_analysis/pipeline_dependency_graph.cpp +++ b/src/mongo/db/query/compiler/dependency_analysis/pipeline_dependency_graph.cpp @@ -903,8 +903,14 @@ private: for (auto&& name : getSortedStringKeys(scope.fields.begin(), scope.fields.end())) { auto fieldId = scope.fields.at(name); auto scopeFieldName = formatField(_graph._strings.get(name), fieldId); - BSONObjBuilder fieldObj = fieldsBob.subobjStart(scopeFieldName); - serializeField(fieldId, fieldObj); + if (fieldId < scope.missingField) { + // Field is inherited if the field ID is lower than the field of + // the scope. + fieldsBob.append(scopeFieldName, scopeFieldName); + } else { + BSONObjBuilder fieldObj = fieldsBob.subobjStart(scopeFieldName); + serializeField(fieldId, fieldObj); + } } } } diff --git a/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/complex_paths.txt b/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/complex_paths.txt index 9925bdc542c..2ffba19ee22 100644 --- a/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/complex_paths.txt +++ b/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/complex_paths.txt @@ -205,13 +205,7 @@ output: { "declaringScope": "scope:7", "dependencies": [] }, - "a:9": { - "declaringScope": "scope:3", - "dependencies": [ - "a:1", - "b:2" - ] - }, + "a:9": "a:9", "b:20": { "declaringScope": "scope:7", "scope:8": { @@ -275,13 +269,7 @@ output: { "b:26" ] }, - "c:16": { - "declaringScope": "scope:2", - "dependencies": [ - "a:1", - "b:2" - ] - } + "c:16": "c:16" } }, "dependencies": [ diff --git a/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/dotted_renames_reuse_parent_scope.txt b/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/dotted_renames_reuse_parent_scope.txt index 4576017a954..e54bf1cc2b4 100644 --- a/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/dotted_renames_reuse_parent_scope.txt +++ b/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/dotted_renames_reuse_parent_scope.txt @@ -154,13 +154,7 @@ output: { "declaringScope": "scope:6", "dependencies": [] }, - "a1:1": { - "declaringScope": "scope:0", - "scope:1": "scope:1", - "dependencies": [ - "b1:3" - ] - }, + "a1:1": "a1:1", "a2:14": { "declaringScope": "scope:6", "scope:7": { @@ -242,10 +236,7 @@ output: { "b2:16" ] }, - "b:12": { - "declaringScope": "scope:0", - "dependencies": [] - } + "b:12": "b:12" } }, "dependencies": [ diff --git a/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/inclusion_projection.txt b/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/inclusion_projection.txt index 2cc6f8db961..4b1e6d20b62 100644 --- a/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/inclusion_projection.txt +++ b/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/inclusion_projection.txt @@ -62,10 +62,7 @@ output: { "declaringScope": "scope:1", "dependencies": [] }, - "a:1": { - "declaringScope": "scope:0", - "dependencies": [] - }, + "a:1": "a:1", "b:3": { "declaringScope": "scope:1", "dependencies": [] @@ -82,14 +79,8 @@ output: { "declaringScope": "scope:2", "dependencies": [] }, - "a:1": { - "declaringScope": "scope:0", - "dependencies": [] - }, - "b:3": { - "declaringScope": "scope:1", - "dependencies": [] - }, + "a:1": "a:1", + "b:3": "b:3", "c:5": { "declaringScope": "scope:2", "dependencies": [] @@ -110,14 +101,8 @@ output: { "declaringScope": "scope:3", "dependencies": [] }, - "b:3": { - "declaringScope": "scope:1", - "dependencies": [] - }, - "c:5": { - "declaringScope": "scope:2", - "dependencies": [] - } + "b:3": "b:3", + "c:5": "c:5" } }, "dependencies": [ diff --git a/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/multiple_modifications.txt b/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/multiple_modifications.txt index fe95dd3bd19..ece385edfd1 100644 --- a/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/multiple_modifications.txt +++ b/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/multiple_modifications.txt @@ -66,10 +66,7 @@ output: { "declaringScope": "scope:1", "dependencies": [] }, - "b:2": { - "declaringScope": "scope:0", - "dependencies": [] - } + "b:2": "b:2" } }, "dependencies": [] @@ -82,10 +79,7 @@ output: { "declaringScope": "scope:2", "dependencies": [] }, - "a:4": { - "declaringScope": "scope:1", - "dependencies": [] - }, + "a:4": "a:4", "b:6": { "declaringScope": "scope:2", "dependencies": [] diff --git a/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/rename_chain.txt b/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/rename_chain.txt index 116945c6313..3357e048b42 100644 --- a/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/rename_chain.txt +++ b/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/rename_chain.txt @@ -56,10 +56,7 @@ output: { "declaringScope": "scope:1", "dependencies": [] }, - "b:1": { - "declaringScope": "scope:0", - "dependencies": [] - }, + "b:1": "b:1", "c:3": { "declaringScope": "scope:1", "dependencies": [ @@ -80,16 +77,8 @@ output: { "declaringScope": "scope:2", "dependencies": [] }, - "b:1": { - "declaringScope": "scope:0", - "dependencies": [] - }, - "c:3": { - "declaringScope": "scope:1", - "dependencies": [ - "b:1" - ] - }, + "b:1": "b:1", + "c:3": "c:3", "d:5": { "declaringScope": "scope:2", "dependencies": [ @@ -110,22 +99,9 @@ output: { "declaringScope": "scope:3", "dependencies": [] }, - "b:1": { - "declaringScope": "scope:0", - "dependencies": [] - }, - "c:3": { - "declaringScope": "scope:1", - "dependencies": [ - "b:1" - ] - }, - "d:5": { - "declaringScope": "scope:2", - "dependencies": [ - "c:3" - ] - }, + "b:1": "b:1", + "c:3": "c:3", + "d:5": "d:5", "e:7": { "declaringScope": "scope:3", "dependencies": [ diff --git a/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/shadowing.txt b/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/shadowing.txt index 179b9e3a9ee..8b139a5d9ee 100644 --- a/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/shadowing.txt +++ b/src/mongo/db/test_output/query/compiler/dependency_analysis/pipeline_dependency_graph_golden_test/shadowing.txt @@ -54,10 +54,7 @@ output: { "declaringScope": "scope:1", "dependencies": [] }, - "a:1": { - "declaringScope": "scope:0", - "dependencies": [] - }, + "a:1": "a:1", "b:3": { "declaringScope": "scope:1", "dependencies": [] @@ -78,10 +75,7 @@ output: { "declaringScope": "scope:2", "dependencies": [] }, - "b:3": { - "declaringScope": "scope:1", - "dependencies": [] - } + "b:3": "b:3" } }, "dependencies": []