diff options
author | Nicholas Zolnierz <nicholas.zolnierz@mongodb.com> | 2022-05-31 09:24:58 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-08-18 20:37:08 +0000 |
commit | 39a79c12b930b7adc5fe2872e482f9e483121dcf (patch) | |
tree | f5ca4862c6d23bbfd62cb119b780dffa31bb86a9 /src/mongo/db/pipeline/expression_find_internal_test.cpp | |
parent | 65002ae2d4bacf9413383faa4b38d3480a2a8328 (diff) | |
download | mongo-39a79c12b930b7adc5fe2872e482f9e483121dcf.tar.gz |
SERVER-63845 Separate variable reference tracking from pipeline field dependency analysis
Diffstat (limited to 'src/mongo/db/pipeline/expression_find_internal_test.cpp')
-rw-r--r-- | src/mongo/db/pipeline/expression_find_internal_test.cpp | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/mongo/db/pipeline/expression_find_internal_test.cpp b/src/mongo/db/pipeline/expression_find_internal_test.cpp index 2b743d2b661..183e009cead 100644 --- a/src/mongo/db/pipeline/expression_find_internal_test.cpp +++ b/src/mongo/db/pipeline/expression_find_internal_test.cpp @@ -32,6 +32,7 @@ #include "mongo/db/exec/document_value/document_value_test_util.h" #include "mongo/db/exec/projection_executor.h" #include "mongo/db/pipeline/aggregation_context_fixture.h" +#include "mongo/db/pipeline/expression_dependencies.h" #include "mongo/db/pipeline/expression_find_internal.h" #include "mongo/unittest/unittest.h" @@ -114,14 +115,15 @@ TEST_F(ExpressionInternalFindPositionalTest, RecordsProjectionDependencies) { auto expr = createExpression(fromjson("{bar: 1, foo: {$gte: 5}}"), "foo"); DepsTracker deps; - expr->addDependencies(&deps); + expression::addDependencies(expr.get(), &deps); - ASSERT_EQ(deps.fields.size(), 2UL); - ASSERT_EQ(deps.fields.count("bar"), 1UL); - ASSERT_EQ(deps.fields.count("foo"), 1UL); - ASSERT_EQ(deps.vars.size(), 1UL); - ASSERT_EQ(deps.vars.count(varId), 1UL); + ASSERT_EQ(deps.fields.size(), 0UL); ASSERT_TRUE(deps.needWholeDocument); + + std::set<Variables::Id> refs; + expression::addVariableRefs(expr.get(), &refs); + ASSERT_EQ(refs.size(), 1UL); + ASSERT_EQ(refs.count(varId), 1UL); } TEST_F(ExpressionInternalFindPositionalTest, AddsArrayUndottedPathToComputedPaths) { @@ -171,12 +173,15 @@ TEST_F(ExpressionInternalFindSliceTest, RecordsProjectionDependencies) { auto expr = createExpression("foo", 1, 2); DepsTracker deps; - expr->addDependencies(&deps); + expression::addDependencies(expr.get(), &deps); ASSERT_EQ(deps.fields.size(), 0UL); - ASSERT_EQ(deps.vars.size(), 1UL); - ASSERT_EQ(deps.vars.count(varId), 1UL); ASSERT_TRUE(deps.needWholeDocument); + + std::set<Variables::Id> refs; + expression::addVariableRefs(expr.get(), &refs); + ASSERT_EQ(refs.size(), 1UL); + ASSERT_EQ(refs.count(varId), 1UL); } TEST_F(ExpressionInternalFindSliceTest, AddsArrayUndottedPathToComputedPaths) { @@ -220,11 +225,13 @@ TEST_F(ExpressionInternalFindElemMatchTest, RecordsProjectionDependencies) { auto expr = createExpression(fromjson("{foo: {$elemMatch: {bar: {$gte: 5}}}}"), "foo"); DepsTracker deps; - expr->addDependencies(&deps); + expression::addDependencies(expr.get(), &deps); - ASSERT_EQ(deps.fields.size(), 1UL); - ASSERT_EQ(deps.fields.count("foo"), 1UL); - ASSERT_EQ(deps.vars.size(), 0UL); + ASSERT_EQ(deps.fields.size(), 0UL); ASSERT(deps.needWholeDocument); + + std::set<Variables::Id> refs; + expression::addVariableRefs(expr.get(), &refs); + ASSERT_EQ(refs.size(), 0UL); } } // namespace mongo::expression_internal_tests |