diff options
author | Tor Egge <Tor.Egge@yahoo-inc.com> | 2017-04-05 11:13:20 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@yahoo-inc.com> | 2017-04-05 14:11:22 +0000 |
commit | 6fc101e2bfb89ca08e0706cefd45057e498ac4ff (patch) | |
tree | 4e2b3453b8db2e3ba711e7394e0796585e69c005 | |
parent | 5f7729502d58b547144df1a2ea0fa31fe0d5c57a (diff) |
Pass attribute spec to attribute initializer.
5 files changed, 24 insertions, 26 deletions
diff --git a/searchcore/src/tests/proton/attribute/attribute_initializer/attribute_initializer_test.cpp b/searchcore/src/tests/proton/attribute/attribute_initializer/attribute_initializer_test.cpp index e4647a58735..d2bb102f168 100644 --- a/searchcore/src/tests/proton/attribute/attribute_initializer/attribute_initializer_test.cpp +++ b/searchcore/src/tests/proton/attribute/attribute_initializer/attribute_initializer_test.cpp @@ -77,7 +77,7 @@ struct Fixture AttributeFactory _factory; Fixture(); ~Fixture(); - std::unique_ptr<AttributeInitializer> createInitializer(const vespalib::string &name, const Config &cfg, SerialNum serialNum); + std::unique_ptr<AttributeInitializer> createInitializer(const AttributeSpec &spec, SerialNum serialNum); }; Fixture::Fixture() @@ -90,16 +90,16 @@ Fixture::Fixture() Fixture::~Fixture() {} std::unique_ptr<AttributeInitializer> -Fixture::createInitializer(const vespalib::string &name, const Config &cfg, SerialNum serialNum) +Fixture::createInitializer(const AttributeSpec &spec, SerialNum serialNum) { - return std::make_unique<AttributeInitializer>(_diskLayout->createAttributeDir(name), "test.subdb", cfg, serialNum, _factory); + return std::make_unique<AttributeInitializer>(_diskLayout->createAttributeDir(spec.getName()), "test.subdb", spec, serialNum, _factory); } TEST("require that integer attribute can be initialized") { saveAttr("a", int32_sv, 10, 2); Fixture f; - auto av = f.createInitializer("a", int32_sv, 5)->init(); + auto av = f.createInitializer({"a", int32_sv}, 5)->init(); EXPECT_EQUAL(2, av->getCreateSerialNum()); EXPECT_EQUAL(2, av->getNumDocs()); } @@ -108,7 +108,7 @@ TEST("require that mismatching base type is not loaded") { saveAttr("a", int32_sv, 10, 2); Fixture f; - auto av = f.createInitializer("a", int16_sv, 5)->init(); + auto av = f.createInitializer({"a", int16_sv}, 5)->init(); EXPECT_EQUAL(5, av->getCreateSerialNum()); EXPECT_EQUAL(1, av->getNumDocs()); } @@ -117,7 +117,7 @@ TEST("require that mismatching collection type is not loaded") { saveAttr("a", int32_sv, 10, 2); Fixture f; - auto av = f.createInitializer("a", int32_array, 5)->init(); + auto av = f.createInitializer({"a", int32_array}, 5)->init(); EXPECT_EQUAL(5, av->getCreateSerialNum()); EXPECT_EQUAL(1, av->getNumDocs()); } @@ -127,10 +127,10 @@ TEST("require that mismatching weighted set collection type params is not loaded saveAttr("a", string_wset, 10, 2); saveAttr("b", string_wset2, 10, 2); Fixture f; - auto av = f.createInitializer("a", string_wset2, 5)->init(); + auto av = f.createInitializer({"a", string_wset2}, 5)->init(); EXPECT_EQUAL(5, av->getCreateSerialNum()); EXPECT_EQUAL(1, av->getNumDocs()); - auto av2 = f.createInitializer("b", string_wset, 5)->init(); + auto av2 = f.createInitializer({"b", string_wset}, 5)->init(); EXPECT_EQUAL(5, av2->getCreateSerialNum()); EXPECT_EQUAL(1, av2->getNumDocs()); } @@ -139,7 +139,7 @@ TEST("require that predicate attributes can be initialized") { saveAttr("a", predicate, 10, 2); Fixture f; - auto av = f.createInitializer("a", predicate, 5)->init(); + auto av = f.createInitializer({"a", predicate}, 5)->init(); EXPECT_EQUAL(2, av->getCreateSerialNum()); EXPECT_EQUAL(2, av->getNumDocs()); } @@ -148,7 +148,7 @@ TEST("require that predicate attributes will not be initialized with future-crea { saveAttr("a", predicate, 10, 8); Fixture f; - auto av = f.createInitializer("a", predicate, 5)->init(); + auto av = f.createInitializer({"a", predicate}, 5)->init(); EXPECT_EQUAL(5, av->getCreateSerialNum()); EXPECT_EQUAL(1, av->getNumDocs()); } @@ -157,7 +157,7 @@ TEST("require that predicate attributes will not be initialized with mismatching { saveAttr("a", predicate, 10, 2); Fixture f; - auto av = f.createInitializer("a", getPredicateWithArity(4), 5)->init(); + auto av = f.createInitializer({"a", getPredicateWithArity(4)}, 5)->init(); EXPECT_EQUAL(5, av->getCreateSerialNum()); EXPECT_EQUAL(1, av->getNumDocs()); } @@ -166,7 +166,7 @@ TEST("require that tensor attribute can be initialized") { saveAttr("a", getTensor("tensor(x[10])"), 10, 2); Fixture f; - auto av = f.createInitializer("a", getTensor("tensor(x[10])"), 5)->init(); + auto av = f.createInitializer({"a", getTensor("tensor(x[10])")}, 5)->init(); EXPECT_EQUAL(2, av->getCreateSerialNum()); EXPECT_EQUAL(2, av->getNumDocs()); } @@ -175,7 +175,7 @@ TEST("require that tensor attributes will not be initialized with future-created { saveAttr("a", getTensor("tensor(x[10])"), 10, 8); Fixture f; - auto av = f.createInitializer("a", getTensor("tensor(x[10])"), 5)->init(); + auto av = f.createInitializer({"a", getTensor("tensor(x[10])")}, 5)->init(); EXPECT_EQUAL(5, av->getCreateSerialNum()); EXPECT_EQUAL(1, av->getNumDocs()); } @@ -184,7 +184,7 @@ TEST("require that tensor attributes will not be initialized with mismatching ty { saveAttr("a", getTensor("tensor(x[10])"), 10, 2); Fixture f; - auto av = f.createInitializer("a", getTensor("tensor(x[11])"), 5)->init(); + auto av = f.createInitializer({"a", getTensor("tensor(x[11])")}, 5)->init(); EXPECT_EQUAL(5, av->getCreateSerialNum()); EXPECT_EQUAL(1, av->getNumDocs()); } @@ -193,7 +193,7 @@ TEST("require that too old attribute is not loaded") { saveAttr("a", int32_sv, 3, 2); Fixture f; - auto av = f.createInitializer("a", int32_sv, 5)->init(); + auto av = f.createInitializer({"a", int32_sv}, 5)->init(); EXPECT_EQUAL(5, av->getCreateSerialNum()); EXPECT_EQUAL(1, av->getNumDocs()); } diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.cpp index fcaf212a8f2..580faeb89d3 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.cpp +++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.cpp @@ -236,12 +236,12 @@ AttributeInitializer::createAndSetupEmptyAttribute() const AttributeInitializer::AttributeInitializer(const std::shared_ptr<AttributeDirectory> &attrDir, const vespalib::string &documentSubDbName, - const search::attribute::Config &cfg, + const AttributeSpec &spec, uint64_t currentSerialNum, const IAttributeFactory &factory) : _attrDir(attrDir), _documentSubDbName(documentSubDbName), - _cfg(cfg), + _cfg(spec.getConfig()), _currentSerialNum(currentSerialNum), _factory(factory) { diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.h index cf7f5ddfd73..6d659c18bdd 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.h +++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.h @@ -2,7 +2,7 @@ #pragma once -#include <vespa/searchcommon/attribute/config.h> +#include "attribute_spec.h" #include <vespa/vespalib/stllike/string.h> #include <vespa/searchlib/common/serialnum.h> #include <vespa/searchcommon/attribute/persistent_predicate_params.h> @@ -47,7 +47,7 @@ private: public: AttributeInitializer(const std::shared_ptr<AttributeDirectory> &attrDir, const vespalib::string &documentSubDbName, - const search::attribute::Config &cfg, + const AttributeSpec &spec, uint64_t currentSerialNum, const IAttributeFactory &factory); ~AttributeInitializer(); diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp index c7941371a18..8135aa2aa9c 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp +++ b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp @@ -63,12 +63,11 @@ bool matchingTypes(const AttributeVector::SP &av, const search::attribute::Confi } AttributeVector::SP -AttributeManager::internalAddAttribute(const vespalib::string &name, - const Config &cfg, +AttributeManager::internalAddAttribute(const AttributeSpec &spec, uint64_t serialNum, const IAttributeFactory &factory) { - AttributeInitializer initializer(_diskLayout->createAttributeDir(name), _documentSubDbName, cfg, serialNum, factory); + AttributeInitializer initializer(_diskLayout->createAttributeDir(spec.getName()), _documentSubDbName, spec, serialNum, factory); AttributeVector::SP attr = initializer.init(); if (attr.get() != NULL) { attr->setInterlock(_interlock); @@ -139,7 +138,7 @@ AttributeManager::addNewAttributes(const Spec &newSpec, AttributeInitializer::UP initializer = std::make_unique<AttributeInitializer>(_diskLayout->createAttributeDir(aspec.getName()), _documentSubDbName, - aspec.getConfig(), newSpec.getCurrentSerialNum(), *_factory); + aspec, newSpec.getCurrentSerialNum(), *_factory); initializerRegistry.add(std::move(initializer)); // TODO: Might want to use hardlinks to make attribute vector @@ -244,7 +243,7 @@ AttributeManager::addAttribute(const vespalib::string &name, const Config &cfg, uint64_t serialNum) { - return internalAddAttribute(name, cfg, serialNum, *_factory); + return internalAddAttribute(AttributeSpec(name, cfg), serialNum, *_factory); } void diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h index 913b43d515b..5f047342819 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h +++ b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h @@ -77,8 +77,7 @@ private: HwInfo _hwInfo; std::unique_ptr<ImportedAttributesRepo> _importedAttributes; - search::AttributeVector::SP internalAddAttribute(const vespalib::string &name, - const Config &cfg, + search::AttributeVector::SP internalAddAttribute(const AttributeSpec &spec, uint64_t serialNum, const IAttributeFactory &factory); |