diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-10-31 18:43:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-31 18:43:44 +0100 |
commit | e9cefec4aa7914c88b37e85f01fd339a5bc347df (patch) | |
tree | 5e18408b01f1e906788dc74558dc97d3264e3b8e /searchlib/src/tests/queryeval/global_filter/global_filter_test.cpp | |
parent | 1bfd169272b8af35740b14b2729e3bc96cd44961 (diff) | |
parent | 7fe19e2b100c9942889aece496580f9170b404ea (diff) |
Merge pull request #24663 from vespa-engine/havardpe/improve-filter-calculationv8.77.26
short-circuit filter evaluation if filter iterator is trivial
Diffstat (limited to 'searchlib/src/tests/queryeval/global_filter/global_filter_test.cpp')
-rw-r--r-- | searchlib/src/tests/queryeval/global_filter/global_filter_test.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/searchlib/src/tests/queryeval/global_filter/global_filter_test.cpp b/searchlib/src/tests/queryeval/global_filter/global_filter_test.cpp index a18fe010ad0..dcf175a6fdd 100644 --- a/searchlib/src/tests/queryeval/global_filter/global_filter_test.cpp +++ b/searchlib/src/tests/queryeval/global_filter/global_filter_test.cpp @@ -2,6 +2,7 @@ #include <vespa/vespalib/gtest/gtest.h> #include <vespa/vespalib/util/require.h> +#include <vespa/vespalib/util/classname.h> #include <vespa/vespalib/util/simple_thread_bundle.h> #include <vespa/searchlib/common/bitvector.h> #include <vespa/searchlib/queryeval/global_filter.h> @@ -199,4 +200,21 @@ TEST(GlobalFilterTest, multi_threaded_global_filter_works_with_docid_limit_0) { verify(*filter, 2, 1); } +TEST(GlobalFilterTest, global_filter_matching_any_document_becomes_invalid) { + SimpleThreadBundle thread_bundle(7); + AlwaysTrueBlueprint blueprint; + auto filter = GlobalFilter::create(blueprint, 100, thread_bundle); + EXPECT_FALSE(filter->is_active()); +} + +TEST(GlobalFilterTest, global_filter_not_matching_any_document_becomes_empty) { + SimpleThreadBundle thread_bundle(7); + EmptyBlueprint blueprint; + auto filter = GlobalFilter::create(blueprint, 100, thread_bundle); + auto class_name = vespalib::getClassName(*filter); + fprintf(stderr, "empty global filter class name: %s\n", class_name.c_str()); + EXPECT_TRUE(class_name.find("EmptyFilter") < class_name.size()); + verify(*filter, 1000, 100); +} + GTEST_MAIN_RUN_ALL_TESTS() |