diff options
author | Tor Egge <Tor.Egge@yahoo-inc.com> | 2017-03-28 13:37:12 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@yahoo-inc.com> | 2017-03-28 13:37:12 +0000 |
commit | 0ac458bf1dd30748b97742c06db1710ffb52ef58 (patch) | |
tree | f6f6cd94af9080a9a81352f5f957cff8fe3f7209 /searchlib | |
parent | d8c4301822b9cf86b76f10b785c2ebca09433f8e (diff) |
Add unit test for attribute initializer.
Set create serial number when loading predicate attribute.
Tweak signature for search::attribute::AttributeHeader::extractTags.
Diffstat (limited to 'searchlib')
3 files changed, 23 insertions, 5 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_header.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_header.cpp index 933b62abf68..84f0720b140 100644 --- a/searchlib/src/vespa/searchlib/attribute/attribute_header.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attribute_header.cpp @@ -8,6 +8,7 @@ namespace attribute { namespace { +const vespalib::string versionTag = "version"; const vespalib::string dataTypeTag = "datatype"; const vespalib::string collectionTypeTag = "collectiontype"; const vespalib::string createSerialNumTag = "createSerialNum"; @@ -68,7 +69,7 @@ AttributeHeader::~AttributeHeader() } void -AttributeHeader::extractTags(const vespalib::GenericHeader &header) +AttributeHeader::internalExtractTags(const vespalib::GenericHeader &header) { if (header.hasTag(createSerialNumTag)) { _createSerialNum = header.getTag(createSerialNumTag).asInteger(); @@ -95,6 +96,17 @@ AttributeHeader::extractTags(const vespalib::GenericHeader &header) assert(!header.hasTag(predicateUpperBoundTag)); } } + if (header.hasTag(versionTag)) { + _version = header.getTag(versionTag).asInteger(); + } +} + +AttributeHeader +AttributeHeader::extractTags(const vespalib::GenericHeader &header) +{ + AttributeHeader result; + result.internalExtractTags(header); + return result; } void @@ -108,7 +120,7 @@ AttributeHeader::addTags(vespalib::GenericHeader &header) const header.putTag(Tag("docIdLimit", _numDocs)); header.putTag(Tag("frozen", 0)); header.putTag(Tag("fileBitSize", 0)); - header.putTag(Tag("version", _version)); + header.putTag(Tag(versionTag, _version)); if (_enumerated) { header.putTag(Tag("enumerated", 1)); } diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_header.h b/searchlib/src/vespa/searchlib/attribute/attribute_header.h index 32f6123036e..7e9ef78dafb 100644 --- a/searchlib/src/vespa/searchlib/attribute/attribute_header.h +++ b/searchlib/src/vespa/searchlib/attribute/attribute_header.h @@ -32,6 +32,8 @@ private: uint64_t _totalValueCount; uint64_t _createSerialNum; uint32_t _version; + + void internalExtractTags(const vespalib::GenericHeader &header); public: AttributeHeader(); AttributeHeader(const vespalib::string &fileName, @@ -63,7 +65,7 @@ public: uint32_t getVersion() const { return _version; } const PersistentPredicateParams &getPredicateParams() const { return _predicateParams; } bool getPredicateParamsSet() const { return _predicateParamsSet; } - void extractTags(const vespalib::GenericHeader &header); + static AttributeHeader extractTags(const vespalib::GenericHeader &header); void addTags(vespalib::GenericHeader &header) const; }; diff --git a/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp b/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp index 4ce7015fdba..e7df13549ef 100644 --- a/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp +++ b/searchlib/src/vespa/searchlib/attribute/predicate_attribute.cpp @@ -6,6 +6,7 @@ #include <vespa/document/predicate/predicate.h> #include <vespa/vespalib/data/slime/slime.h> #include "iattributesavetarget.h" +#include "attribute_header.h" #include <vespa/log/log.h> LOG_SETUP(".predicate_attribute"); @@ -184,8 +185,11 @@ bool PredicateAttribute::onLoad() buffer.moveFreeToData(size); const GenericHeader &header = loaded_buffer->getHeader(); - uint32_t version = static_cast<uint32_t>( - header.hasTag("version") ? header.getTag("version").asInteger() : 0); + auto attributeHeader = attribute::AttributeHeader::extractTags(header); + uint32_t version = attributeHeader.getVersion(); + + setCreateSerialNum(attributeHeader.getCreateSerialNum()); + LOG(info, "Loading predicate attribute version %d. getVersion() = %d", version, getVersion()); DocId highest_doc_id; |