summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/pipeline_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/pipeline/pipeline_test.cpp')
-rw-r--r--src/mongo/db/pipeline/pipeline_test.cpp232
1 files changed, 0 insertions, 232 deletions
diff --git a/src/mongo/db/pipeline/pipeline_test.cpp b/src/mongo/db/pipeline/pipeline_test.cpp
index a23c5d8a7f6..1715379912b 100644
--- a/src/mongo/db/pipeline/pipeline_test.cpp
+++ b/src/mongo/db/pipeline/pipeline_test.cpp
@@ -293,238 +293,6 @@ TEST(PipelineOptimizationTest, SortMatchProjSkipLimBecomesMatchTopKSortSkipProj)
assertPipelineOptimizesAndSerializesTo(inputPipe, outputPipe, serializedPipe);
}
-TEST(PipelineOptimizationTest, IdenticalSortSortBecomesSort) {
- std::string inputPipe =
- "[{$sort: {a: 1}}"
- ",{$sort: {a: 1}}"
- "]";
-
- std::string outputPipe =
- "[{$sort: {sortKey: {a: 1}}}"
- "]";
-
- std::string serializedPipe =
- "[{$sort: {a: 1}}"
- "]";
-
- assertPipelineOptimizesAndSerializesTo(inputPipe, outputPipe, serializedPipe);
-}
-
-TEST(PipelineOptimizationTest, IdenticalSortSortSortBecomesSort) {
- std::string inputPipe =
- "[{$sort: {a: 1}}"
- ",{$sort: {a: 1}}"
- ",{$sort: {a: 1}}"
- "]";
-
- std::string outputPipe =
- "[{$sort: {sortKey: {a: 1}}}"
- "]";
-
- std::string serializedPipe =
- "[{$sort: {a: 1}}"
- "]";
-
- assertPipelineOptimizesAndSerializesTo(inputPipe, outputPipe, serializedPipe);
-}
-
-TEST(PipelineOptimizationTest, NonIdenticalSortsOnlySortOnFinalKey) {
- std::string inputPipe =
- "[{$sort: {a: -1}}"
- ",{$sort: {a: 1}}"
- ",{$sort: {a: -1}}"
- "]";
-
- std::string outputPipe =
- "[{$sort: {sortKey: {a: -1}}}"
- "]";
-
- std::string serializedPipe =
- "[{$sort: {a: -1}}"
- "]";
-
- assertPipelineOptimizesAndSerializesTo(inputPipe, outputPipe, serializedPipe);
-}
-
-TEST(PipelineOptimizationTest, SortSortLimitBecomesFinalKeyTopKSort) {
- std::string inputPipe =
- "[{$sort: {a: -1}}"
- ",{$sort: {a: 1}}"
- ",{$limit: 5}"
- "]";
-
- std::string outputPipe =
- "[{$sort: {sortKey: {a: 1}, limit: 5}}"
- "]";
-
- std::string serializedPipe =
- "[{$sort: {a: 1}}"
- ",{$limit: 5}"
- "]";
-
- assertPipelineOptimizesAndSerializesTo(inputPipe, outputPipe, serializedPipe);
-}
-
-TEST(PipelineOptimizationTest, SortSortSkipLimitBecomesTopKSortSkip) {
- std::string inputPipe =
- "[{$sort: {b: 1}}"
- ",{$sort: {a: 1}}"
- ",{$skip : 3}"
- ",{$limit: 5}"
- "]";
-
- std::string outputPipe =
- "[{$sort: {sortKey: {a: 1}, limit: 8}}"
- ",{$skip: 3}"
- "]";
-
- std::string serializedPipe =
- "[{$sort: {a: 1}}"
- ",{$limit: 8}"
- ",{$skip : 3}"
- "]";
-
- assertPipelineOptimizesAndSerializesTo(inputPipe, outputPipe, serializedPipe);
-}
-
-TEST(PipelineOptimizationTest, SortLimitSortLimitBecomesTopKSort) {
- std::string inputPipe =
- "[{$sort: {a: 1}}"
- ",{$limit: 12}"
- ",{$sort: {a: 1}}"
- ",{$limit: 20}"
- "]";
-
- std::string outputPipe =
- "[{$sort: {sortKey: {a: 1}, limit: 12}}"
- "]";
-
- std::string serializedPipe =
- "[{$sort: {a: 1}}"
- ",{$limit: 12}"
- "]";
-
- assertPipelineOptimizesAndSerializesTo(inputPipe, outputPipe, serializedPipe);
-}
-
-TEST(PipelineOptimizationTest, SortLimitSortRetainsLimit) {
- std::string inputPipe =
- "[{$sort: {a: 1}}"
- ",{$limit: 12}"
- ",{$sort: {a: 1}}"
- "]";
-
- std::string outputPipe =
- "[{$sort: {sortKey: {a: 1}, limit: 12}}"
- "]";
-
- std::string serializedPipe =
- "[{$sort: {a: 1}}"
- ",{$limit: 12}"
- "]";
-
- assertPipelineOptimizesAndSerializesTo(inputPipe, outputPipe, serializedPipe);
-}
-
-TEST(PipelineOptimizationTest, SortSortLimitRetainsLimit) {
- std::string inputPipe =
- "[{$sort: {a: 1}}"
- ",{$sort: {a: 1}}"
- ",{$limit: 20}"
- "]";
-
- std::string outputPipe =
- "[{$sort: {sortKey: {a: 1}, limit: 20}}"
- "]";
-
- std::string serializedPipe =
- "[{$sort: {a: 1}}"
- ",{$limit: 20}"
- "]";
-
- assertPipelineOptimizesAndSerializesTo(inputPipe, outputPipe, serializedPipe);
-}
-
-TEST(PipelineOptimizationTest, SortSortSortMatchProjSkipLimBecomesMatchTopKSortSkipProj) {
- std::string inputPipe =
- "[{$sort: {a: 1}}"
- ",{$sort: {a: 1}}"
- ",{$sort: {a: 1}}"
- ",{$match: {a: 1}}"
- ",{$project : {a: 1}}"
- ",{$skip : 3}"
- ",{$limit: 5}"
- "]";
-
- std::string outputPipe =
- "[{$match: {a: {$eq: 1}}}"
- ",{$sort: {sortKey: {a: 1}, limit: 8}}"
- ",{$skip: 3}"
- ",{$project: {_id: true, a: true}}"
- "]";
-
- std::string serializedPipe =
- "[{$match: {a: 1}}"
- ",{$sort: {a: 1}}"
- ",{$limit: 8}"
- ",{$skip : 3}"
- ",{$project : {_id: true, a: true}}"
- "]";
-
- assertPipelineOptimizesAndSerializesTo(inputPipe, outputPipe, serializedPipe);
-}
-
-TEST(PipelineOptimizationTest, NonIdenticalSortsBecomeFinalKeyTopKSort) {
- std::string inputPipe =
- "[{$sort: {a: -1}}"
- ",{$sort: {b: -1}}"
- ",{$sort: {b: 1}}"
- ",{$sort: {a: 1}}"
- ",{$limit: 7}"
- ",{$project : {a: 1}}"
- ",{$limit: 5}"
- "]";
-
- std::string outputPipe =
- "[{$sort: {sortKey: {a: 1}, limit: 5}}"
- ",{$project: {_id: true, a: true}}"
- "]";
-
- std::string serializedPipe =
- "[{$sort: {a: 1}}"
- ",{$limit: 5}"
- ",{$project : {_id: true, a: true}}"
- "]";
-
- assertPipelineOptimizesAndSerializesTo(inputPipe, outputPipe, serializedPipe);
-}
-
-TEST(PipelineOptimizationTest, SubsequentSortsMergeAndBecomeTopKSortWithFinalKeyAndLowestLimit) {
- std::string inputPipe =
- "[{$sort: {a: 1}}"
- ",{$sort: {a: -1}}"
- ",{$limit: 8}"
- ",{$limit: 7}"
- ",{$project : {a: 1}}"
- ",{$unwind: {path: '$a'}}"
- "]";
-
- std::string outputPipe =
- "[{$sort: {sortKey: {a: -1}, limit: 7}}"
- ",{$project: {_id: true, a: true}}"
- ",{$unwind: {path: '$a'}}"
- "]";
-
- std::string serializedPipe =
- "[{$sort: {a: -1}}"
- ",{$limit: 7}"
- ",{$project : {_id: true, a: true}}"
- ",{$unwind: {path: '$a'}}"
- "]";
-
- assertPipelineOptimizesAndSerializesTo(inputPipe, outputPipe, serializedPipe);
-}
-
TEST(PipelineOptimizationTest, RemoveSkipZero) {
assertPipelineOptimizesTo("[{$skip: 0}]", "[]");
}