diff options
author | Geir Storli <geirst@verizonmedia.com> | 2020-03-30 12:17:35 +0000 |
---|---|---|
committer | Geir Storli <geirst@verizonmedia.com> | 2020-03-30 12:17:35 +0000 |
commit | 0109cc6fe375ae95f4f741e5c2886aabead3e174 (patch) | |
tree | 7211cfe06b8ca73ddd5e06df70e3eb8a131fd934 /searchlib | |
parent | 644dde798d718bb3e9cffc15452dd2616edb311a (diff) |
Move functions used to open / load attribute vector data files to separate class.
Diffstat (limited to 'searchlib')
15 files changed, 139 insertions, 129 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/attributevector.cpp b/searchlib/src/vespa/searchlib/attribute/attributevector.cpp index b043bb4aaf8..ffc62d806e2 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributevector.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attributevector.cpp @@ -266,79 +266,6 @@ const IEnumStore* AttributeVector::getEnumStoreBase() const { return nullptr; } IEnumStore* AttributeVector::getEnumStoreBase() { return nullptr; } const attribute::MultiValueMappingBase * AttributeVector::getMultiValueBase() const { return nullptr; } -std::unique_ptr<FastOS_FileInterface> -AttributeVector::openFile(const char *suffix) -{ - BaseName::string fileName(getBaseFileName()); - fileName += suffix; - return FileUtil::openFile(fileName); -} - - -std::unique_ptr<FastOS_FileInterface> -AttributeVector::openDAT() -{ - return openFile(".dat"); -} - - -std::unique_ptr<FastOS_FileInterface> -AttributeVector::openIDX() -{ - return openFile(".idx"); -} - - -std::unique_ptr<FastOS_FileInterface> -AttributeVector::openWeight() -{ - return openFile(".weight"); -} - - -std::unique_ptr<FastOS_FileInterface> -AttributeVector::openUDAT() -{ - return openFile(".dat"); -} - -fileutil::LoadedBuffer::UP -AttributeVector::loadDAT() -{ - return loadFile(".dat"); -} - - -fileutil::LoadedBuffer::UP -AttributeVector::loadIDX() -{ - return loadFile(".idx"); -} - - -fileutil::LoadedBuffer::UP -AttributeVector::loadWeight() -{ - return loadFile(".weight"); -} - - -fileutil::LoadedBuffer::UP -AttributeVector::loadUDAT() -{ - return loadFile(".udat"); -} - - -fileutil::LoadedBuffer::UP -AttributeVector::loadFile(const char *suffix) -{ - BaseName::string fileName(getBaseFileName()); - fileName += suffix; - return FileUtil::loadFile(fileName); -} - - bool AttributeVector::save(vespalib::stringref fileName) { diff --git a/searchlib/src/vespa/searchlib/attribute/attributevector.h b/searchlib/src/vespa/searchlib/attribute/attributevector.h index a396fb70b7c..4a53f2dd5a2 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributevector.h +++ b/searchlib/src/vespa/searchlib/attribute/attributevector.h @@ -212,11 +212,6 @@ protected: void setNumDocs(uint32_t n) { _status.setNumDocs(n); } void incNumDocs() { _status.incNumDocs(); } - LoadedBufferUP loadDAT(); - LoadedBufferUP loadIDX(); - LoadedBufferUP loadWeight(); - LoadedBufferUP loadUDAT(); - class ValueModifier { public: @@ -269,10 +264,6 @@ protected: } public: - std::unique_ptr<FastOS_FileInterface> openDAT(); - std::unique_ptr<FastOS_FileInterface> openIDX(); - std::unique_ptr<FastOS_FileInterface> openWeight(); - std::unique_ptr<FastOS_FileInterface> openUDAT(); void incGeneration(); void removeAllOldGenerations(); @@ -572,8 +563,6 @@ private: virtual bool applyWeight(DocId doc, const FieldValue &fv, const ArithmeticValueUpdate &wAdjust); virtual void onSave(IAttributeSaveTarget & saveTarget); virtual bool onLoad(); - std::unique_ptr<FastOS_FileInterface> openFile(const char *suffix); - LoadedBufferUP loadFile(const char *suffix); BaseName _baseFileName; diff --git a/searchlib/src/vespa/searchlib/attribute/attrvector.cpp b/searchlib/src/vespa/searchlib/attribute/attrvector.cpp index 0304aa8f38e..59771d7ffae 100644 --- a/searchlib/src/vespa/searchlib/attribute/attrvector.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attrvector.cpp @@ -3,6 +3,7 @@ #include "attrvector.h" #include "attrvector.hpp" #include "iattributesavetarget.h" +#include "load_utils.h" #include <vespa/log/log.h> LOG_SETUP(".searchlib.attribute.attr_vector"); @@ -123,7 +124,7 @@ bool StringDirectAttribute::onLoad() setCommittedDocIdLimit(0); } - fileutil::LoadedBuffer::UP tmpBuffer(loadDAT()); + auto tmpBuffer = attribute::LoadUtils::loadDAT(*this); bool rc(tmpBuffer.get()); if (rc) { if ( ! tmpBuffer->empty()) { @@ -158,7 +159,7 @@ bool StringDirectAttribute::onLoad() } if (hasMultiValue()) { - fileutil::LoadedBuffer::UP tmpIdx(loadIDX()); + auto tmpIdx = attribute::LoadUtils::loadIDX(*this); size_t tmpIdxLen(tmpIdx->size(sizeof(uint32_t))); _idx.clear(); _idx.reserve(tmpIdxLen); diff --git a/searchlib/src/vespa/searchlib/attribute/attrvector.hpp b/searchlib/src/vespa/searchlib/attribute/attrvector.hpp index cdd34725e69..4ce7575b28d 100644 --- a/searchlib/src/vespa/searchlib/attribute/attrvector.hpp +++ b/searchlib/src/vespa/searchlib/attribute/attrvector.hpp @@ -2,6 +2,7 @@ #pragma once #include "attrvector.h" +#include "load_utils.h" #include <vespa/vespalib/util/hdr_abort.h> #include <vespa/fastlib/io/bufferedfile.h> #include <vespa/searchlib/util/filekit.h> @@ -23,7 +24,7 @@ NumericDirectAttribute<B>::~NumericDirectAttribute() = default; template <typename B> bool NumericDirectAttribute<B>::onLoad() { - fileutil::LoadedBuffer::UP dataBuffer(B::loadDAT()); + auto dataBuffer = attribute::LoadUtils::loadDAT(*this); bool rc(dataBuffer.get()); if (rc) { const BaseType * tmpData(static_cast <const BaseType *>(dataBuffer->buffer())); @@ -56,7 +57,7 @@ bool NumericDirectAttribute<B>::onLoad() } dataBuffer.reset(); if (this->hasMultiValue()) { - fileutil::LoadedBuffer::UP idxBuffer(B::loadIDX()); + auto idxBuffer = attribute::LoadUtils::loadIDX(*this); rc = idxBuffer.get(); if (rc) { const uint32_t * tmpIdx(static_cast<const uint32_t *>(idxBuffer->buffer())); diff --git a/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp b/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp index 1e4bba95b4b..895e6a6f4c0 100644 --- a/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp +++ b/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp @@ -89,7 +89,7 @@ FlagAttributeT<B>::onLoadEnumerated(ReaderBase &attrReader) if (numValues > 0) _bitVectorSize = numDocs; - fileutil::LoadedBuffer::UP udatBuffer(this->loadUDAT()); + auto udatBuffer = attribute::LoadUtils::loadUDAT(*this); assert((udatBuffer->size() % sizeof(TT)) == 0); vespalib::ConstArrayRef<TT> map(reinterpret_cast<const TT *>(udatBuffer->buffer()), udatBuffer->size() / sizeof(TT)); diff --git a/searchlib/src/vespa/searchlib/attribute/load_utils.cpp b/searchlib/src/vespa/searchlib/attribute/load_utils.cpp index 041daa08cd5..17da246f140 100644 --- a/searchlib/src/vespa/searchlib/attribute/load_utils.cpp +++ b/searchlib/src/vespa/searchlib/attribute/load_utils.cpp @@ -5,13 +5,78 @@ #include "loadedenumvalue.h" #include "multi_value_mapping.h" #include "multivalue.h" +#include <vespa/fastos/file.h> +#include <vespa/searchlib/util/fileutil.h> #include <vespa/vespalib/util/array.hpp> using search::multivalue::Value; using search::multivalue::WeightedValue; -namespace search { -namespace attribute { +namespace search::attribute { + +using FileInterfaceUP = LoadUtils::FileInterfaceUP; +using LoadedBufferUP = LoadUtils::LoadedBufferUP; + +FileInterfaceUP +LoadUtils::openFile(AttributeVector& attr, const vespalib::string& suffix) +{ + return FileUtil::openFile(attr.getBaseFileName() + "." + suffix); +} + +LoadedBufferUP +LoadUtils::loadFile(AttributeVector& attr, const vespalib::string& suffix) +{ + return FileUtil::loadFile(attr.getBaseFileName() + "." + suffix); +} + +FileInterfaceUP +LoadUtils::openDAT(AttributeVector& attr) +{ + return openFile(attr, "dat"); +} + +FileInterfaceUP +LoadUtils::openIDX(AttributeVector& attr) +{ + return openFile(attr, "idx"); +} + +FileInterfaceUP +LoadUtils::openWeight(AttributeVector& attr) +{ + return openFile(attr, "weight"); +} + +FileInterfaceUP +LoadUtils::openUDAT(AttributeVector& attr) +{ + return openFile(attr, "udat"); +} + +LoadedBufferUP +LoadUtils::loadDAT(AttributeVector& attr) +{ + return loadFile(attr, "dat"); +} + +LoadedBufferUP +LoadUtils::loadIDX(AttributeVector& attr) +{ + return loadFile(attr, "idx"); +} + +LoadedBufferUP +LoadUtils::loadWeight(AttributeVector& attr) +{ + return loadFile(attr, "weight"); +} + +LoadedBufferUP +LoadUtils::loadUDAT(AttributeVector& attr) +{ + return loadFile(attr, "udat"); +} + #define INSTANTIATE_ARRAY(ValueType, Saver) \ template uint32_t loadFromEnumeratedMultiValue(MultiValueMapping<Value<ValueType>> &, ReaderBase &, vespalib::ConstArrayRef<ValueType>, Saver) @@ -40,5 +105,4 @@ INSTANTIATE_VALUE(int64_t); INSTANTIATE_VALUE(float); INSTANTIATE_VALUE(double); -} // namespace search::attribute -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/attribute/load_utils.h b/searchlib/src/vespa/searchlib/attribute/load_utils.h index 050d7726ecd..b7e915310c4 100644 --- a/searchlib/src/vespa/searchlib/attribute/load_utils.h +++ b/searchlib/src/vespa/searchlib/attribute/load_utils.h @@ -6,10 +6,33 @@ #include "readerbase.h" #include <vespa/vespalib/util/arrayref.h> -namespace search { -namespace attribute { +namespace search::attribute { -/* +/** + * Helper functions used to open / load attribute vector data files from disk. + */ +class LoadUtils { +public: + using FileInterfaceUP = std::unique_ptr<FastOS_FileInterface>; + using LoadedBufferUP = std::unique_ptr<fileutil::LoadedBuffer>; + +private: + static FileInterfaceUP openFile(AttributeVector& attr, const vespalib::string& suffix); + static LoadedBufferUP loadFile(AttributeVector& attr, const vespalib::string& suffix); + +public: + static FileInterfaceUP openDAT(AttributeVector& attr); + static FileInterfaceUP openIDX(AttributeVector& attr); + static FileInterfaceUP openWeight(AttributeVector& attr); + static FileInterfaceUP openUDAT(AttributeVector& attr); + + static LoadedBufferUP loadDAT(AttributeVector& attr); + static LoadedBufferUP loadIDX(AttributeVector& attr); + static LoadedBufferUP loadWeight(AttributeVector& attr); + static LoadedBufferUP loadUDAT(AttributeVector& attr); +}; + +/** * Function for loading mapping from document id to array of enum indexes * or values from enumerated attribute reader. */ @@ -20,7 +43,7 @@ loadFromEnumeratedMultiValue(MvMapping &mapping, vespalib::ConstArrayRef<typename MvMapping::MultiValueType::ValueType> enumValueToValueMap, Saver saver) __attribute((noinline)); -/* +/** * Function for loading mapping from document id to enum index or * value from enumerated attribute reader. */ @@ -32,5 +55,4 @@ loadFromEnumeratedSingleValue(Vector &vector, vespalib::ConstArrayRef<typename Vector::ValueType> enumValueToValueMap, Saver saver) __attribute((noinline)); -} // namespace search::attribute -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericattribute.hpp b/searchlib/src/vespa/searchlib/attribute/multinumericattribute.hpp index 1efa2789fcb..3ca7423c38c 100644 --- a/searchlib/src/vespa/searchlib/attribute/multinumericattribute.hpp +++ b/searchlib/src/vespa/searchlib/attribute/multinumericattribute.hpp @@ -117,7 +117,7 @@ MultiValueNumericAttribute<B, M>::onLoadEnumerated(ReaderBase & attrReader) this->setCommittedDocIdLimit(numDocs); this->_mvMapping.reserve(numDocs+1); - LoadedBuffer::UP udatBuffer(this->loadUDAT()); + auto udatBuffer = attribute::LoadUtils::loadUDAT(*this); assert((udatBuffer->size() % sizeof(T)) == 0); vespalib::ConstArrayRef<T> map(reinterpret_cast<const T *>(udatBuffer->buffer()), udatBuffer->size() / sizeof(T)); uint32_t maxvc = attribute::loadFromEnumeratedMultiValue(this->_mvMapping, attrReader, map, attribute::NoSaveLoadedEnum()); diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.hpp b/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.hpp index 9ee365fc7cc..e17d41a5521 100644 --- a/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.hpp +++ b/searchlib/src/vespa/searchlib/attribute/multinumericenumattribute.hpp @@ -2,13 +2,14 @@ #pragma once -#include "multinumericenumattribute.h" -#include "loadednumericvalue.h" #include "attributeiterators.hpp" -#include <vespa/searchlib/util/fileutil.hpp> +#include "load_utils.h" +#include "loadednumericvalue.h" +#include "multinumericenumattribute.h" #include <vespa/fastlib/io/bufferedfile.h> #include <vespa/searchlib/query/query_term_simple.h> #include <vespa/searchlib/queryeval/emptysearch.h> +#include <vespa/searchlib/util/fileutil.hpp> namespace search { @@ -52,7 +53,7 @@ template <typename B, typename M> bool MultiValueNumericEnumAttribute<B, M>::onLoadEnumerated(ReaderBase &attrReader) { - LoadedBuffer::UP udatBuffer(this->loadUDAT()); + auto udatBuffer = attribute::LoadUtils::loadUDAT(*this); uint32_t numDocs = attrReader.getNumIdx() - 1; uint64_t numValues = attrReader.getNumValues(); diff --git a/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp b/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp index b0e4df65c2b..72cc6e38fac 100644 --- a/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp +++ b/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp @@ -1,12 +1,13 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include "predicate_attribute.h" -#include "iattributesavetarget.h" #include "attribute_header.h" -#include <vespa/searchlib/predicate/predicate_index.h> -#include <vespa/searchlib/util/fileutil.h> +#include "iattributesavetarget.h" +#include "load_utils.h" +#include "predicate_attribute.h" #include <vespa/document/fieldvalue/predicatefieldvalue.h> #include <vespa/document/predicate/predicate.h> +#include <vespa/searchlib/predicate/predicate_index.h> +#include <vespa/searchlib/util/fileutil.h> #include <vespa/vespalib/data/slime/slime.h> #include <vespa/log/log.h> @@ -183,7 +184,7 @@ struct DummyObserver : SimpleIndexDeserializeObserver<> { bool PredicateAttribute::onLoad() { - fileutil::LoadedBuffer::UP loaded_buffer = loadDAT(); + auto loaded_buffer = attribute::LoadUtils::loadDAT(*this); char *rawBuffer = const_cast<char *>(static_cast<const char *>(loaded_buffer->buffer())); size_t size = loaded_buffer->size(); DataBuffer buffer(rawBuffer, size); diff --git a/searchlib/src/vespa/searchlib/attribute/readerbase.cpp b/searchlib/src/vespa/searchlib/attribute/readerbase.cpp index 62936ecaaf4..cf37fc580e9 100644 --- a/searchlib/src/vespa/searchlib/attribute/readerbase.cpp +++ b/searchlib/src/vespa/searchlib/attribute/readerbase.cpp @@ -1,10 +1,11 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include "readerbase.h" #include "attributevector.h" +#include "load_utils.h" +#include "readerbase.h" #include <vespa/fastlib/io/bufferedfile.h> -#include <vespa/vespalib/util/exceptions.h> #include <vespa/searchlib/util/filesizecalculator.h> +#include <vespa/vespalib/util/exceptions.h> #include <vespa/log/log.h> LOG_SETUP(".search.attribute.readerbase"); @@ -28,11 +29,11 @@ namespace { } ReaderBase::ReaderBase(AttributeVector &attr) - : _datFile(attr.openDAT()), + : _datFile(attribute::LoadUtils::openDAT(attr)), _weightFile(attr.hasWeightedSetType() ? - attr.openWeight() : std::unique_ptr<Fast_BufferedFile>()), + attribute::LoadUtils::openWeight(attr) : std::unique_ptr<Fast_BufferedFile>()), _idxFile(attr.hasMultiValue() ? - attr.openIDX() : std::unique_ptr<Fast_BufferedFile>()), + attribute::LoadUtils::openIDX(attr) : std::unique_ptr<Fast_BufferedFile>()), _udatFile(), _weightReader(*_weightFile), _idxReader(*_idxFile), @@ -83,7 +84,7 @@ ReaderBase::ReaderBase(AttributeVector &attr) } if (hasData() && AttributeVector::isEnumerated(_datHeader)) { _enumerated = true; - _udatFile = attr.openUDAT(); + _udatFile = attribute::LoadUtils::openUDAT(attr); vespalib::FileHeader udatHeader(DIRECTIO_ALIGNMENT); _udatHeaderLen = udatHeader.readFile(*_udatFile); _udatFile->SetPosition(_udatHeaderLen); diff --git a/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp b/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp index b055af7c084..9421730f335 100644 --- a/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp +++ b/searchlib/src/vespa/searchlib/attribute/reference_attribute.cpp @@ -1,6 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "attributesaver.h" +#include "load_utils.h" #include "readerbase.h" #include "reference_attribute.h" #include "reference_attribute_saver.h" @@ -223,7 +224,7 @@ ReferenceAttribute::onLoad() uint64_t numValues(0); numValues = attrReader.getEnumCount(); numDocs = numValues; - fileutil::LoadedBuffer::UP udatBuffer(loadUDAT()); + auto udatBuffer = attribute::LoadUtils::loadUDAT(*this); const GenericHeader &header = udatBuffer->getHeader(); uint32_t uniqueValueCount = extractUniqueValueCount(header); assert(uniqueValueCount * sizeof(GlobalId) == udatBuffer->size()); diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp b/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp index 69d4e6a5ee9..681c2af1f07 100644 --- a/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp +++ b/searchlib/src/vespa/searchlib/attribute/singlenumericattribute.hpp @@ -1,12 +1,12 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include "singlenumericattribute.h" +#include "attributeiterators.hpp" #include "attributevector.hpp" -#include "singlenumericattributesaver.h" #include "load_utils.h" #include "primitivereader.h" -#include "attributeiterators.hpp" +#include "singlenumericattribute.h" +#include "singlenumericattributesaver.h" #include <vespa/searchlib/query/query_term_simple.h> #include <vespa/searchlib/queryeval/emptysearch.h> @@ -114,7 +114,7 @@ SingleValueNumericAttribute<B>::onLoadEnumerated(ReaderBase &attrReader) this->setCommittedDocIdLimit(numDocs); _data.unsafe_reserve(numDocs); - fileutil::LoadedBuffer::UP udatBuffer(this->loadUDAT()); + auto udatBuffer = attribute::LoadUtils::loadUDAT(*this); assert((udatBuffer->size() % sizeof(T)) == 0); vespalib::ConstArrayRef<T> map(reinterpret_cast<const T *>(udatBuffer->buffer()), udatBuffer->size() / sizeof(T)); diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.hpp b/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.hpp index 990388d2a12..5fb587c908e 100644 --- a/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.hpp +++ b/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.hpp @@ -2,14 +2,15 @@ #pragma once -#include "singlenumericenumattribute.h" -#include <vespa/searchlib/common/sort.h> -#include "singleenumattribute.hpp" +#include "attributeiterators.hpp" +#include "load_utils.h" #include "loadednumericvalue.h" #include "primitivereader.h" -#include "attributeiterators.hpp" -#include <vespa/searchlib/queryeval/emptysearch.h> +#include "singleenumattribute.hpp" +#include "singlenumericenumattribute.h" +#include <vespa/searchlib/common/sort.h> #include <vespa/searchlib/query/query_term_simple.h> +#include <vespa/searchlib/queryeval/emptysearch.h> #include <vespa/searchlib/util/fileutil.hpp> namespace search { @@ -79,7 +80,7 @@ template <typename B> bool SingleValueNumericEnumAttribute<B>::onLoadEnumerated(ReaderBase &attrReader) { - fileutil::LoadedBuffer::UP udatBuffer(this->loadUDAT()); + auto udatBuffer = attribute::LoadUtils::loadUDAT(*this); uint64_t numValues = attrReader.getEnumCount(); uint32_t numDocs = numValues; diff --git a/searchlib/src/vespa/searchlib/attribute/stringbase.cpp b/searchlib/src/vespa/searchlib/attribute/stringbase.cpp index 32b5b3ca373..40e706e924d 100644 --- a/searchlib/src/vespa/searchlib/attribute/stringbase.cpp +++ b/searchlib/src/vespa/searchlib/attribute/stringbase.cpp @@ -1,11 +1,12 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include "stringbase.h" #include "attributevector.hpp" +#include "load_utils.h" #include "readerbase.h" +#include "stringbase.h" #include <vespa/document/fieldvalue/fieldvalue.h> -#include <vespa/searchlib/util/fileutil.hpp> #include <vespa/searchlib/query/query_term_ucs4.h> +#include <vespa/searchlib/util/fileutil.hpp> #include <vespa/vespalib/locale/c.h> #include <vespa/vespalib/util/array.hpp> @@ -316,7 +317,7 @@ bool StringAttribute::apply(DocId, const ArithmeticValueUpdate & ) bool StringAttribute::onLoadEnumerated(ReaderBase &attrReader) { - fileutil::LoadedBuffer::UP udatBuffer(loadUDAT()); + auto udatBuffer = attribute::LoadUtils::loadUDAT(*this); bool hasIdx(attrReader.hasIdx()); size_t numDocs(0); |