summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@yahoo-inc.com>2017-04-05 11:13:20 +0000
committerTor Egge <Tor.Egge@yahoo-inc.com>2017-04-05 14:11:22 +0000
commit6fc101e2bfb89ca08e0706cefd45057e498ac4ff (patch)
tree4e2b3453b8db2e3ba711e7394e0796585e69c005 /searchcore
parent5f7729502d58b547144df1a2ea0fa31fe0d5c57a (diff)
Pass attribute spec to attribute initializer.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_initializer/attribute_initializer_test.cpp30
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.cpp4
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_initializer.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp9
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h3
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);