diff options
author | Geir Storli <geirst@yahooinc.com> | 2022-03-04 13:58:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-04 13:58:01 +0100 |
commit | 4fa1bc6bcd5bb048da8e3d0c644b92e62770669a (patch) | |
tree | b21116e8419a4a5ce4e8ebafe71cd4f7ff07ad26 /vespalib | |
parent | 1eabfc1f9488b093ad26ef53c30da295879ce43c (diff) | |
parent | 66bd8ff9aac1a42ce678dbd81a2a42c1fc32095f (diff) |
Merge pull request #21547 from vespa-engine/toregge/use-atomic-entry-ref-as-value-for-enum-store-dictionary-with-posting-lists
Use AtomicEntryRef as value for enum store btree dictionary with posting lists.
Diffstat (limited to 'vespalib')
4 files changed, 7 insertions, 7 deletions
diff --git a/vespalib/src/vespa/vespalib/btree/btreenodestore.cpp b/vespalib/src/vespa/vespalib/btree/btreenodestore.cpp index 4787a1416de..05323d1329a 100644 --- a/vespalib/src/vespa/vespalib/btree/btreenodestore.cpp +++ b/vespalib/src/vespa/vespalib/btree/btreenodestore.cpp @@ -43,7 +43,7 @@ VESPALIB_DATASTORE_INSTANTIATE_BUFFERTYPE_LEAFNODE(uint32_t, uint32_t, NoAggrega VESPALIB_DATASTORE_INSTANTIATE_BUFFERTYPE_LEAFNODE(uint32_t, BTreeNoLeafData, NoAggregated, BTreeDefaultTraits::LEAF_SLOTS); VESPALIB_DATASTORE_INSTANTIATE_BUFFERTYPE_LEAFNODE(uint32_t, int32_t , MinMaxAggregated, BTreeDefaultTraits::LEAF_SLOTS); VESPALIB_DATASTORE_INSTANTIATE_BUFFERTYPE_LEAFNODE(uint64_t, uint64_t , MinMaxAggregated, BTreeDefaultTraits::LEAF_SLOTS); -VESPALIB_DATASTORE_INSTANTIATE_BUFFERTYPE_LEAFNODE(AtomicEntryRef, uint32_t, NoAggregated, BTreeDefaultTraits::LEAF_SLOTS); +VESPALIB_DATASTORE_INSTANTIATE_BUFFERTYPE_LEAFNODE(AtomicEntryRef, AtomicEntryRef, NoAggregated, BTreeDefaultTraits::LEAF_SLOTS); VESPALIB_DATASTORE_INSTANTIATE_BUFFERTYPE_LEAFNODE(AtomicEntryRef, BTreeNoLeafData, NoAggregated, BTreeDefaultTraits::LEAF_SLOTS); VESPALIB_DATASTORE_INSTANTIATE_BUFFERTYPE_LEAFNODE(EntryRef, BTreeNoLeafData, NoAggregated, BTreeDefaultTraits::LEAF_SLOTS); VESPALIB_DATASTORE_INSTANTIATE_BUFFERTYPE_LEAFNODE(EntryRef, EntryRef, NoAggregated, BTreeDefaultTraits::LEAF_SLOTS); diff --git a/vespalib/src/vespa/vespalib/datastore/i_unique_store_dictionary.h b/vespalib/src/vespa/vespalib/datastore/i_unique_store_dictionary.h index 4fd3bcad5e5..bb105d41519 100644 --- a/vespalib/src/vespa/vespalib/datastore/i_unique_store_dictionary.h +++ b/vespalib/src/vespa/vespalib/datastore/i_unique_store_dictionary.h @@ -35,7 +35,7 @@ public: virtual vespalib::MemoryUsage get_memory_usage() const = 0; virtual void build(vespalib::ConstArrayRef<EntryRef>, vespalib::ConstArrayRef<uint32_t> ref_counts, std::function<void(EntryRef)> hold) = 0; virtual void build(vespalib::ConstArrayRef<EntryRef> refs) = 0; - virtual void build_with_payload(vespalib::ConstArrayRef<EntryRef> refs, vespalib::ConstArrayRef<uint32_t> payloads) = 0; + virtual void build_with_payload(vespalib::ConstArrayRef<EntryRef> refs, vespalib::ConstArrayRef<EntryRef> payloads) = 0; virtual std::unique_ptr<IUniqueStoreDictionaryReadSnapshot> get_read_snapshot() const = 0; virtual bool get_has_btree_dictionary() const = 0; virtual bool get_has_hash_dictionary() const = 0; diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store_dictionary.h b/vespalib/src/vespa/vespalib/datastore/unique_store_dictionary.h index d64588e3242..702bae38e7c 100644 --- a/vespalib/src/vespa/vespalib/datastore/unique_store_dictionary.h +++ b/vespalib/src/vespa/vespalib/datastore/unique_store_dictionary.h @@ -84,7 +84,7 @@ public: vespalib::MemoryUsage get_memory_usage() const override; void build(vespalib::ConstArrayRef<EntryRef>, vespalib::ConstArrayRef<uint32_t> ref_counts, std::function<void(EntryRef)> hold) override; void build(vespalib::ConstArrayRef<EntryRef> refs) override; - void build_with_payload(vespalib::ConstArrayRef<EntryRef>, vespalib::ConstArrayRef<uint32_t> payloads) override; + void build_with_payload(vespalib::ConstArrayRef<EntryRef>, vespalib::ConstArrayRef<EntryRef> payloads) override; std::unique_ptr<IUniqueStoreDictionaryReadSnapshot> get_read_snapshot() const override; bool get_has_btree_dictionary() const override; bool get_has_hash_dictionary() const override; diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store_dictionary.hpp b/vespalib/src/vespa/vespalib/datastore/unique_store_dictionary.hpp index bac65fc4cf8..8029b66309d 100644 --- a/vespalib/src/vespa/vespalib/datastore/unique_store_dictionary.hpp +++ b/vespalib/src/vespa/vespalib/datastore/unique_store_dictionary.hpp @@ -247,15 +247,15 @@ UniqueStoreDictionary<BTreeDictionaryT, ParentT, HashDictionaryT>::build(vespali template <typename BTreeDictionaryT, typename ParentT, typename HashDictionaryT> void UniqueStoreDictionary<BTreeDictionaryT, ParentT, HashDictionaryT>::build_with_payload(vespalib::ConstArrayRef<EntryRef> refs, - vespalib::ConstArrayRef<uint32_t> payloads) + vespalib::ConstArrayRef<EntryRef> payloads) { assert(refs.size() == payloads.size()); if constexpr (has_btree_dictionary) { using DataType = typename BTreeDictionaryType::DataType; typename BTreeDictionaryType::Builder builder(this->_btree_dict.getAllocator()); for (size_t i = 0; i < refs.size(); ++i) { - if constexpr (std::is_same_v<DataType, uint32_t>) { - builder.insert(AtomicEntryRef(refs[i]), payloads[i]); + if constexpr (std::is_same_v<DataType, AtomicEntryRef>) { + builder.insert(AtomicEntryRef(refs[i]), AtomicEntryRef(payloads[i])); } else { builder.insert(AtomicEntryRef(refs[i]), DataType()); } @@ -268,7 +268,7 @@ UniqueStoreDictionary<BTreeDictionaryT, ParentT, HashDictionaryT>::build_with_pa std::function<EntryRef(void)> insert_hash_entry([ref]() noexcept -> EntryRef { return ref; }); auto& add_result = this->_hash_dict.add(this->_hash_dict.get_default_comparator(), ref, insert_hash_entry); assert(add_result.first.load_relaxed() == refs[i]); - add_result.second.store_relaxed(EntryRef(payloads[i])); + add_result.second.store_relaxed(payloads[i]); } } } |