diff options
author | Ribhav Jain <ribhav.jain@mongodb.com> | 2022-01-10 21:52:45 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-01-10 22:56:08 +0000 |
commit | f97ee7d37f1a0e18f248d0726823445019409b50 (patch) | |
tree | 62a042cd9ccd853791198d9ed7b92456ea12ec8f /src/mongo/db/query/index_bounds_builder_regex_test.cpp | |
parent | 386986a651b852c3c98b426ea60a023d99e4a5a4 (diff) | |
download | mongo-f97ee7d37f1a0e18f248d0726823445019409b50.tar.gz |
SERVER-61750: Use DISTINCT_SCAN when a regex is a prefix of an index
Diffstat (limited to 'src/mongo/db/query/index_bounds_builder_regex_test.cpp')
-rw-r--r-- | src/mongo/db/query/index_bounds_builder_regex_test.cpp | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/src/mongo/db/query/index_bounds_builder_regex_test.cpp b/src/mongo/db/query/index_bounds_builder_regex_test.cpp index e112443e401..9e251a65b2e 100644 --- a/src/mongo/db/query/index_bounds_builder_regex_test.cpp +++ b/src/mongo/db/query/index_bounds_builder_regex_test.cpp @@ -109,15 +109,6 @@ TEST_F(IndexBoundsBuilderTest, RootedLiteral) { ASSERT_EQUALS(tightness, IndexBoundsBuilder::EXACT); } -TEST_F(IndexBoundsBuilderTest, RootedLiteralWithExtra) { - auto testIndex = buildSimpleIndexEntry(); - IndexBoundsBuilder::BoundsTightness tightness; - std::string prefix = - IndexBoundsBuilder::simpleRegex("^\\Qasdf\\E.*", "", testIndex, &tightness); - ASSERT_EQUALS(prefix, "asdf"); - ASSERT_EQUALS(tightness, IndexBoundsBuilder::INEXACT_COVERED); -} - TEST_F(IndexBoundsBuilderTest, RootedLiteralNoEnd) { auto testIndex = buildSimpleIndexEntry(); IndexBoundsBuilder::BoundsTightness tightness; @@ -331,5 +322,31 @@ TEST_F(IndexBoundsBuilderTest, SimplePrefixRegex) { ASSERT(tightness == IndexBoundsBuilder::EXACT); } +// Using exact index bounds for prefix regex in the form ^[].* +TEST_F(IndexBoundsBuilderTest, RootedLiteralWithExtra) { + auto testIndex = buildSimpleIndexEntry(); + IndexBoundsBuilder::BoundsTightness tightness; + std::string prefix = + IndexBoundsBuilder::simpleRegex("^\\Qasdf\\E.*", "", testIndex, &tightness); + ASSERT_EQUALS(prefix, "asdf"); + ASSERT_EQUALS(tightness, IndexBoundsBuilder::EXACT); +} + +TEST_F(IndexBoundsBuilderTest, PrefixRegex) { + auto testIndex = buildSimpleIndexEntry(); + IndexBoundsBuilder::BoundsTightness tightness; + std::string prefix = IndexBoundsBuilder::simpleRegex("^abc.*", "", testIndex, &tightness); + ASSERT_EQUALS(prefix, "abc"); + ASSERT_EQUALS(tightness, IndexBoundsBuilder::EXACT); +} + +TEST_F(IndexBoundsBuilderTest, RegexWithCharactersFollowingPrefix) { + auto testIndex = buildSimpleIndexEntry(); + IndexBoundsBuilder::BoundsTightness tightness; + std::string prefix = IndexBoundsBuilder::simpleRegex("^abc.*f", "", testIndex, &tightness); + ASSERT_EQUALS(prefix, "abc"); + ASSERT_EQUALS(tightness, IndexBoundsBuilder::INEXACT_COVERED); +} + } // namespace } // namespace mongo |