summaryrefslogtreecommitdiff
path: root/src/mongo/db/query/optimizer/logical_rewriter_optimizer_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/query/optimizer/logical_rewriter_optimizer_test.cpp')
-rw-r--r--src/mongo/db/query/optimizer/logical_rewriter_optimizer_test.cpp120
1 files changed, 62 insertions, 58 deletions
diff --git a/src/mongo/db/query/optimizer/logical_rewriter_optimizer_test.cpp b/src/mongo/db/query/optimizer/logical_rewriter_optimizer_test.cpp
index 2434e811de1..03980eb5db4 100644
--- a/src/mongo/db/query/optimizer/logical_rewriter_optimizer_test.cpp
+++ b/src/mongo/db/query/optimizer/logical_rewriter_optimizer_test.cpp
@@ -74,10 +74,10 @@ TEST(LogicalRewriter, RootNodeMerge) {
" Source []\n",
rootNode);
- OptPhaseManager phaseManager({OptPhase::MemoSubstitutionPhase},
- prefixId,
- {{{"test", createScanDef({}, {})}}},
- DebugInfo::kDefaultForTests);
+ auto phaseManager = makePhaseManager({OptPhase::MemoSubstitutionPhase},
+ prefixId,
+ {{{"test", createScanDef({}, {})}}},
+ DebugInfo::kDefaultForTests);
ABT rewritten = std::move(rootNode);
phaseManager.optimize(rewritten);
@@ -288,10 +288,10 @@ TEST(LogicalRewriter, FilterProjectRewrite) {
" Source []\n",
rootNode);
- OptPhaseManager phaseManager({OptPhase::MemoSubstitutionPhase},
- prefixId,
- {{{"test", createScanDef({}, {})}}},
- DebugInfo::kDefaultForTests);
+ auto phaseManager = makePhaseManager({OptPhase::MemoSubstitutionPhase},
+ prefixId,
+ {{{"test", createScanDef({}, {})}}},
+ DebugInfo::kDefaultForTests);
ABT latest = std::move(rootNode);
phaseManager.optimize(latest);
@@ -399,10 +399,10 @@ TEST(LogicalRewriter, FilterProjectComplexRewrite) {
" Source []\n",
rootNode);
- OptPhaseManager phaseManager({OptPhase::MemoSubstitutionPhase},
- prefixId,
- {{{"test", createScanDef({}, {})}}},
- DebugInfo::kDefaultForTests);
+ auto phaseManager = makePhaseManager({OptPhase::MemoSubstitutionPhase},
+ prefixId,
+ {{{"test", createScanDef({}, {})}}},
+ DebugInfo::kDefaultForTests);
ABT latest = std::move(rootNode);
phaseManager.optimize(latest);
@@ -477,10 +477,10 @@ TEST(LogicalRewriter, FilterProjectGroupRewrite) {
ABT rootNode = make<RootNode>(properties::ProjectionRequirement{ProjectionNameVector{"c"}},
std::move(filterANode));
- OptPhaseManager phaseManager({OptPhase::MemoSubstitutionPhase},
- prefixId,
- {{{"test", createScanDef({}, {})}}},
- DebugInfo::kDefaultForTests);
+ auto phaseManager = makePhaseManager({OptPhase::MemoSubstitutionPhase},
+ prefixId,
+ {{{"test", createScanDef({}, {})}}},
+ DebugInfo::kDefaultForTests);
ABT latest = std::move(rootNode);
phaseManager.optimize(latest);
@@ -547,10 +547,10 @@ TEST(LogicalRewriter, FilterProjectUnwindRewrite) {
ABT rootNode = make<RootNode>(properties::ProjectionRequirement{ProjectionNameVector{"a", "b"}},
std::move(filterBNode));
- OptPhaseManager phaseManager({OptPhase::MemoSubstitutionPhase},
- prefixId,
- {{{"test", createScanDef({}, {})}}},
- DebugInfo::kDefaultForTests);
+ auto phaseManager = makePhaseManager({OptPhase::MemoSubstitutionPhase},
+ prefixId,
+ {{{"test", createScanDef({}, {})}}},
+ DebugInfo::kDefaultForTests);
ABT latest = std::move(rootNode);
phaseManager.optimize(latest);
@@ -618,10 +618,10 @@ TEST(LogicalRewriter, FilterProjectExchangeRewrite) {
ABT rootNode = make<RootNode>(properties::ProjectionRequirement{ProjectionNameVector{"a", "b"}},
std::move(filterANode));
- OptPhaseManager phaseManager({OptPhase::MemoSubstitutionPhase},
- prefixId,
- {{{"test", createScanDef({}, {})}}},
- DebugInfo::kDefaultForTests);
+ auto phaseManager = makePhaseManager({OptPhase::MemoSubstitutionPhase},
+ prefixId,
+ {{{"test", createScanDef({}, {})}}},
+ DebugInfo::kDefaultForTests);
ABT latest = std::move(rootNode);
phaseManager.optimize(latest);
@@ -690,10 +690,10 @@ TEST(LogicalRewriter, UnwindCollationRewrite) {
ABT rootNode = make<RootNode>(properties::ProjectionRequirement{ProjectionNameVector{"a", "b"}},
std::move(unwindNode));
- OptPhaseManager phaseManager({OptPhase::MemoSubstitutionPhase},
- prefixId,
- {{{"test", createScanDef({}, {})}}},
- DebugInfo::kDefaultForTests);
+ auto phaseManager = makePhaseManager({OptPhase::MemoSubstitutionPhase},
+ prefixId,
+ {{{"test", createScanDef({}, {})}}},
+ DebugInfo::kDefaultForTests);
ABT latest = std::move(rootNode);
phaseManager.optimize(latest);
@@ -802,11 +802,11 @@ TEST(LogicalRewriter, FilterUnionReorderSingleProjection) {
" Source []\n",
latest);
- OptPhaseManager phaseManager(
- {OptPhase::MemoSubstitutionPhase, OptPhase::MemoExplorationPhase},
- prefixId,
- {{{"test1", createScanDef({}, {})}, {"test2", createScanDef({}, {})}}},
- DebugInfo::kDefaultForTests);
+ auto phaseManager =
+ makePhaseManager({OptPhase::MemoSubstitutionPhase, OptPhase::MemoExplorationPhase},
+ prefixId,
+ {{{"test1", createScanDef({}, {})}, {"test2", createScanDef({}, {})}}},
+ DebugInfo::kDefaultForTests);
phaseManager.optimize(latest);
ASSERT_EXPLAIN_V2(
@@ -966,11 +966,11 @@ TEST(LogicalRewriter, MultipleFilterUnionReorder) {
" Source []\n",
latest);
- OptPhaseManager phaseManager(
- {OptPhase::MemoSubstitutionPhase, OptPhase::MemoExplorationPhase},
- prefixId,
- {{{"test1", createScanDef({}, {})}, {"test2", createScanDef({}, {})}}},
- DebugInfo::kDefaultForTests);
+ auto phaseManager =
+ makePhaseManager({OptPhase::MemoSubstitutionPhase, OptPhase::MemoExplorationPhase},
+ prefixId,
+ {{{"test1", createScanDef({}, {})}, {"test2", createScanDef({}, {})}}},
+ DebugInfo::kDefaultForTests);
phaseManager.optimize(latest);
ASSERT_EXPLAIN_V2(
@@ -1070,12 +1070,12 @@ TEST(LogicalRewriter, FilterUnionUnionPushdown) {
ABT rootNode = make<RootNode>(properties::ProjectionRequirement{ProjectionNameVector{"ptest"}},
std::move(filter));
- OptPhaseManager phaseManager({OptPhase::MemoSubstitutionPhase},
- prefixId,
- {{{"test1", createScanDef({}, {})},
- {"test2", createScanDef({}, {})},
- {"test3", createScanDef({}, {})}}},
- DebugInfo::kDefaultForTests);
+ auto phaseManager = makePhaseManager({OptPhase::MemoSubstitutionPhase},
+ prefixId,
+ {{{"test1", createScanDef({}, {})},
+ {"test2", createScanDef({}, {})},
+ {"test3", createScanDef({}, {})}}},
+ DebugInfo::kDefaultForTests);
ABT latest = std::move(rootNode);
ASSERT_EXPLAIN_V2(
@@ -1216,10 +1216,11 @@ TEST(LogicalRewriter, UnionPreservesCommonLogicalProps) {
// Run the reordering rewrite such that the scan produces a hash partition.
PrefixId prefixId;
- OptPhaseManager phaseManager({OptPhase::MemoSubstitutionPhase, OptPhase::MemoExplorationPhase},
- prefixId,
- metadata,
- DebugInfo::kDefaultForTests);
+ auto phaseManager =
+ makePhaseManager({OptPhase::MemoSubstitutionPhase, OptPhase::MemoExplorationPhase},
+ prefixId,
+ metadata,
+ DebugInfo::kDefaultForTests);
ABT optimized = rootNode;
phaseManager.optimize(optimized);
@@ -1432,10 +1433,11 @@ TEST(LogicalRewriter, SargableCE) {
PrefixId prefixId;
ABT rootNode = sargableCETestSetup();
- OptPhaseManager phaseManager({OptPhase::MemoSubstitutionPhase, OptPhase::MemoExplorationPhase},
- prefixId,
- {{{"test", createScanDef({}, {})}}},
- DebugInfo::kDefaultForTests);
+ auto phaseManager =
+ makePhaseManager({OptPhase::MemoSubstitutionPhase, OptPhase::MemoExplorationPhase},
+ prefixId,
+ {{{"test", createScanDef({}, {})}}},
+ DebugInfo::kDefaultForTests);
ABT latest = std::move(rootNode);
phaseManager.optimize(latest);
@@ -1474,7 +1476,8 @@ TEST(LogicalRewriter, SargableCE) {
" | | projections: \n"
" | | ptest\n"
" | | indexingAvailability: \n"
- " | | [groupId: 0, scanProjection: ptest, scanDefName: test, eqPredsOnly]\n"
+ " | | [groupId: 0, scanProjection: ptest, scanDefName: test, eqPredsOnly, "
+ "hasProperInterval]\n"
" | | collectionAvailability: \n"
" | | test\n"
" | | distributionAvailability: \n"
@@ -1508,7 +1511,8 @@ TEST(LogicalRewriter, SargableCE) {
" | | projections: \n"
" | | ptest\n"
" | | indexingAvailability: \n"
- " | | [groupId: 0, scanProjection: ptest, scanDefName: test, eqPredsOnly]\n"
+ " | | [groupId: 0, scanProjection: ptest, scanDefName: test, eqPredsOnly, "
+ "hasProperInterval]\n"
" | | collectionAvailability: \n"
" | | test\n"
" | | distributionAvailability: \n"
@@ -1540,10 +1544,10 @@ TEST(LogicalRewriter, RemoveNoopFilter) {
ABT rootNode = make<RootNode>(properties::ProjectionRequirement{ProjectionNameVector{"ptest"}},
std::move(filterANode));
- OptPhaseManager phaseManager({OptPhase::MemoSubstitutionPhase},
- prefixId,
- {{{"test", createScanDef({}, {})}}},
- DebugInfo::kDefaultForTests);
+ auto phaseManager = makePhaseManager({OptPhase::MemoSubstitutionPhase},
+ prefixId,
+ {{{"test", createScanDef({}, {})}}},
+ DebugInfo::kDefaultForTests);
ABT latest = std::move(rootNode);
phaseManager.optimize(latest);