summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2021-03-24 14:40:50 +0100
committerTor Egge <Tor.Egge@broadpark.no>2021-03-24 14:40:50 +0100
commitc38837625c3b2b9f4e22fe6ad9b609c76f361cde (patch)
tree8f4f3b43745331ded6ab65b6c210b995aa0559b7 /searchlib
parente76c7cfe807d4fe936dd030c5bd4171f6c3479b5 (diff)
Reduce EnumStoreDictionary B-tree exposure.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/attribute/enumstore/enumstore_test.cpp19
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enum_store_dictionary.h2
2 files changed, 6 insertions, 15 deletions
diff --git a/searchlib/src/tests/attribute/enumstore/enumstore_test.cpp b/searchlib/src/tests/attribute/enumstore/enumstore_test.cpp
index fb514063e73..ca5e6e8a721 100644
--- a/searchlib/src/tests/attribute/enumstore/enumstore_test.cpp
+++ b/searchlib/src/tests/attribute/enumstore/enumstore_test.cpp
@@ -176,19 +176,16 @@ TEST(EnumStoreTest, test_find_folded_on_string_enum_store)
EXPECT_EQ(1u, ses.find_folded_enums("three").size());
}
-template <typename DictionaryT>
void
testUniques(const StringEnumStore& ses, const std::vector<std::string>& unique)
{
- const auto* enumDict = dynamic_cast<const EnumStoreDictionary<DictionaryT>*>(&ses.get_dictionary());
- assert(enumDict != nullptr);
- const DictionaryT& dict = enumDict->get_raw_dictionary();
+ auto read_snapshot = ses.get_dictionary().get_read_snapshot();
+ std::vector<EnumIndex> saved_indexes;
+ read_snapshot->foreach_key([&saved_indexes](EntryRef idx) { saved_indexes.push_back(idx); });
uint32_t i = 0;
- EnumIndex idx;
- for (typename DictionaryT::Iterator iter = dict.begin();
- iter.valid(); ++iter, ++i) {
- idx = iter.getKey();
+ for (auto idx : saved_indexes) {
EXPECT_TRUE(strcmp(unique[i].c_str(), ses.get_value(idx)) == 0);
+ ++i;
}
EXPECT_EQ(static_cast<uint32_t>(unique.size()), i);
}
@@ -232,11 +229,7 @@ StringEnumStoreTest::testInsert(bool hasPostings)
EXPECT_TRUE(strcmp(unique[i].c_str(), value) == 0);
}
- if (hasPostings) {
- testUniques<EnumPostingTree>(ses, unique);
- } else {
- testUniques<EnumTree>(ses, unique);
- }
+ testUniques(ses, unique);
}
TEST_F(StringEnumStoreTest, test_insert_on_store_without_posting_lists)
diff --git a/searchlib/src/vespa/searchlib/attribute/enum_store_dictionary.h b/searchlib/src/vespa/searchlib/attribute/enum_store_dictionary.h
index acb85c4e7f2..53ba81b1949 100644
--- a/searchlib/src/vespa/searchlib/attribute/enum_store_dictionary.h
+++ b/searchlib/src/vespa/searchlib/attribute/enum_store_dictionary.h
@@ -37,8 +37,6 @@ public:
~EnumStoreDictionary() override;
- const BTreeDictionaryT& get_raw_dictionary() const { return this->_btree_dict; }
-
void free_unused_values(const vespalib::datastore::EntryComparator& cmp) override;
void free_unused_values(const IndexSet& to_remove,