diff options
Diffstat (limited to 'src/mongo')
-rw-r--r-- | src/mongo/db/index/sort_key_generator.cpp | 9 | ||||
-rw-r--r-- | src/mongo/db/index/sort_key_generator_test.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/pipeline/document_source_sort.cpp | 2 |
3 files changed, 9 insertions, 4 deletions
diff --git a/src/mongo/db/index/sort_key_generator.cpp b/src/mongo/db/index/sort_key_generator.cpp index 7f9bd3dd018..db3602ef8d1 100644 --- a/src/mongo/db/index/sort_key_generator.cpp +++ b/src/mongo/db/index/sort_key_generator.cpp @@ -52,9 +52,14 @@ SortKeyGenerator::SortKeyGenerator(const BSONObj& sortSpec, const CollatorInterf invariant(metaElem.fieldNameStringData() == "$meta"_sd); if (metaElem.valueStringData() == "textScore"_sd) { _patternPartTypes.push_back(SortPatternPartType::kMetaTextScore); - } else { - invariant(metaElem.valueStringData() == "randVal"_sd); + } else if (metaElem.valueStringData() == "randVal"_sd) { _patternPartTypes.push_back(SortPatternPartType::kMetaRandVal); + } else if (metaElem.valueStringData() == "searchScore"_sd) { + uasserted(31218, "$meta sort by 'searchScore' metadata is not supported"); + } else if (metaElem.valueStringData() == "searchHighlights"_sd) { + uasserted(31219, "$meta sort by 'searchHighlights' metadata is not supported"); + } else { + uasserted(31138, "Illegal $meta sort: " + metaElem.valueStringData()); } _sortHasMeta = true; } diff --git a/src/mongo/db/index/sort_key_generator_test.cpp b/src/mongo/db/index/sort_key_generator_test.cpp index 485a6a3d0a5..9ac04b3052d 100644 --- a/src/mongo/db/index/sort_key_generator_test.cpp +++ b/src/mongo/db/index/sort_key_generator_test.cpp @@ -162,7 +162,7 @@ DEATH_TEST(SortKeyGeneratorTest, DEATH_TEST(SortKeyGeneratorTest, SortPatternComponentWithUnknownMetaKeywordIsFatal, - "Invariant failure metaElem.valueStringData() == \"randVal\"_sd") { + "Illegal $meta sort: unknown") { MONGO_COMPILER_VARIABLE_UNUSED auto ignored = stdx::make_unique<SortKeyGenerator>(BSON("a" << BSON("$meta" << "unknown")), diff --git a/src/mongo/db/pipeline/document_source_sort.cpp b/src/mongo/db/pipeline/document_source_sort.cpp index 395d517ce2d..bdd22510961 100644 --- a/src/mongo/db/pipeline/document_source_sort.cpp +++ b/src/mongo/db/pipeline/document_source_sort.cpp @@ -294,7 +294,7 @@ intrusive_ptr<DocumentSourceSort> DocumentSourceSort::create( } uassert(15974, - "$sort key ordering must be specified using a number or {$meta: 'textScore'}", + str::stream() << "Illegal key in $sort specification: " << keyField, keyField.isNumber()); int sortOrder = keyField.numberInt(); |