summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/expression_find_internal_test.cpp
diff options
context:
space:
mode:
authorNicholas Zolnierz <nicholas.zolnierz@mongodb.com>2022-05-31 09:24:58 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-08-18 20:37:08 +0000
commit39a79c12b930b7adc5fe2872e482f9e483121dcf (patch)
treef5ca4862c6d23bbfd62cb119b780dffa31bb86a9 /src/mongo/db/pipeline/expression_find_internal_test.cpp
parent65002ae2d4bacf9413383faa4b38d3480a2a8328 (diff)
downloadmongo-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.cpp33
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