diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2021-03-24 14:40:50 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2021-03-24 14:40:50 +0100 |
commit | c38837625c3b2b9f4e22fe6ad9b609c76f361cde (patch) | |
tree | 8f4f3b43745331ded6ab65b6c210b995aa0559b7 /searchlib | |
parent | e76c7cfe807d4fe936dd030c5bd4171f6c3479b5 (diff) |
Reduce EnumStoreDictionary B-tree exposure.
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/tests/attribute/enumstore/enumstore_test.cpp | 19 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/attribute/enum_store_dictionary.h | 2 |
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, |