summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_populator/attribute_populator_test.cpp2
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_test.cpp2
-rw-r--r--searchcore/src/tests/proton/attribute/document_field_extractor/document_field_extractor_test.cpp2
-rw-r--r--searchcore/src/tests/proton/common/cachedselect_test.cpp4
-rw-r--r--searchcore/src/tests/proton/common/selectpruner_test.cpp3
-rw-r--r--searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp168
-rw-r--r--searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp3
-rw-r--r--searchcore/src/tests/proton/feedoperation/feedoperation_test.cpp2
-rw-r--r--searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp2
-rw-r--r--searchcore/src/tests/proton/server/documentretriever_test.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/bmcluster/bm_feed.cpp3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentretriever.cpp3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.cpp3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp4
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp3
15 files changed, 102 insertions, 104 deletions
diff --git a/searchcore/src/tests/proton/attribute/attribute_populator/attribute_populator_test.cpp b/searchcore/src/tests/proton/attribute/attribute_populator/attribute_populator_test.cpp
index 19b8348fb7a..b4d3eb13ac7 100644
--- a/searchcore/src/tests/proton/attribute/attribute_populator/attribute_populator_test.cpp
+++ b/searchcore/src/tests/proton/attribute/attribute_populator/attribute_populator_test.cpp
@@ -60,7 +60,7 @@ struct DocContext
std::shared_ptr<Document> create(uint32_t id, int64_t fieldValue) {
vespalib::string docId =
vespalib::make_string("id:searchdocument:searchdocument::%u", id);
- auto doc = std::make_shared<Document>(*_repo->getDocumentType("searchdocument"), DocumentId(docId));
+ auto doc = std::make_shared<Document>(*_repo, *_repo->getDocumentType("searchdocument"), DocumentId(docId));
doc->setValue("a1", IntFieldValue(fieldValue));
return doc;
}
diff --git a/searchcore/src/tests/proton/attribute/attribute_test.cpp b/searchcore/src/tests/proton/attribute/attribute_test.cpp
index 75d9c78d07e..4458cd66ad6 100644
--- a/searchcore/src/tests/proton/attribute/attribute_test.cpp
+++ b/searchcore/src/tests/proton/attribute/attribute_test.cpp
@@ -1050,7 +1050,7 @@ public:
}
std::unique_ptr<Document> makeDoc() {
- return std::make_unique<Document>(_type, DocumentId("id::test::1"));
+ return Document::make_without_repo(_type, DocumentId("id::test::1"));
}
};
diff --git a/searchcore/src/tests/proton/attribute/document_field_extractor/document_field_extractor_test.cpp b/searchcore/src/tests/proton/attribute/document_field_extractor/document_field_extractor_test.cpp
index 903b4d89696..42dad54394f 100644
--- a/searchcore/src/tests/proton/attribute/document_field_extractor/document_field_extractor_test.cpp
+++ b/searchcore/src/tests/proton/attribute/document_field_extractor/document_field_extractor_test.cpp
@@ -109,7 +109,7 @@ struct FixtureBase
Document *
makeDoc()
{
- doc = std::make_unique<Document>(type, DocumentId("id::test::1"));
+ doc = Document::make_without_repo(type, DocumentId("id::test::1"));
extractor = std::make_unique<DocumentFieldExtractor>(*doc);
return doc.get();
}
diff --git a/searchcore/src/tests/proton/common/cachedselect_test.cpp b/searchcore/src/tests/proton/common/cachedselect_test.cpp
index 6565ec601e6..93a7e46285e 100644
--- a/searchcore/src/tests/proton/common/cachedselect_test.cpp
+++ b/searchcore/src/tests/proton/common/cachedselect_test.cpp
@@ -123,7 +123,7 @@ makeDoc(const DocumentTypeRepo &repo,
int32_t ab)
{
const DocumentType *docType = repo.getDocumentType("test");
- Document::UP doc(new Document(*docType, DocumentId(docId)));
+ auto doc = std::make_unique<Document>(repo, *docType, DocumentId(docId));
if (ia != "null")
doc->setValue("ia", StringFieldValue(ia));
if (ib != "null")
@@ -348,7 +348,7 @@ TestFixture::testParse(const string &selection,
const DocumentType *docType = repo.getDocumentType(docTypeName);
ASSERT_TRUE(docType != nullptr);
- Document::UP emptyDoc(new Document(*docType, DocumentId()));
+ auto emptyDoc = std::make_unique<Document>(repo, *docType, DocumentId());
res->set(selection,
docTypeName,
diff --git a/searchcore/src/tests/proton/common/selectpruner_test.cpp b/searchcore/src/tests/proton/common/selectpruner_test.cpp
index 4bc7ef53d94..80d6314c392 100644
--- a/searchcore/src/tests/proton/common/selectpruner_test.cpp
+++ b/searchcore/src/tests/proton/common/selectpruner_test.cpp
@@ -222,8 +222,7 @@ TestFixture::testPrune(const string &selection, const string &exp, const string
LOG(info, "ParseTree: '%s'", os.str().c_str());
const DocumentType *docType = repo.getDocumentType(docTypeName);
ASSERT_TRUE(docType != nullptr);
- auto emptyDoc = std::make_unique<Document>(*docType, document::DocumentId("id:ns:" + docTypeName + "::1"));
- emptyDoc->setRepo(repo);
+ auto emptyDoc = std::make_unique<Document>(repo, *docType, document::DocumentId("id:ns:" + docTypeName + "::1"));
SelectPruner pruner(docTypeName, &_amgr, *emptyDoc, repo, _hasFields, _hasDocuments);
pruner.process(*select);
std::ostringstream pos;
diff --git a/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp b/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp
index f89af9a11a6..ff55d3cca7c 100644
--- a/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp
+++ b/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp
@@ -156,8 +156,12 @@ struct UnitDR : DocumentRetrieverBaseForTest {
static void reset() { _docidCnt = 2; }
};
+Document::UP make_doc(DocumentId docid) {
+ return Document::make_without_repo(*DataType::DOCUMENT, docid);
+}
+
UnitDR::UnitDR()
- : repo(), document(std::make_unique<Document>(*DataType::DOCUMENT, DocumentId())), timestamp(0),
+ : repo(), document(make_doc(DocumentId())), timestamp(0),
bucket(), removed(false), docid(0), docIdLimit(std::numeric_limits<uint32_t>::max())
{}
UnitDR::UnitDR(document::Document::UP d, Timestamp t, Bucket b, bool r)
@@ -242,7 +246,7 @@ struct AttrUnitDR : public UnitDR
CachedSelect::SP parseSelect(const vespalib::string &selection) const override {
auto res = std::make_shared<CachedSelect>();
- res->set(selection, "foo", Document(document->getType(), DocumentId()), repo, &_amgr, true);
+ res->set(selection, "foo", Document(repo, document->getType(), DocumentId()), repo, &_amgr, true);
return res;
}
};
@@ -291,7 +295,7 @@ IDocumentRetriever::SP nil() { return std::make_unique<UnitDR>(); }
IDocumentRetriever::SP
doc(const DocumentId &id, Timestamp t, Bucket b) {
- return std::make_shared<UnitDR>(std::make_unique<Document>(*DataType::DOCUMENT, id), t, b, false);
+ return std::make_shared<UnitDR>(make_doc(id), t, b, false);
}
IDocumentRetriever::SP
@@ -301,7 +305,7 @@ doc(const std::string &id, Timestamp t, Bucket b) {
IDocumentRetriever::SP
rem(const DocumentId &id, Timestamp t, Bucket b) {
- return std::make_shared<UnitDR>(std::make_unique<Document>(*DataType::DOCUMENT, id), t, b, true);
+ return std::make_shared<UnitDR>(make_doc(id), t, b, true);
}
IDocumentRetriever::SP
@@ -338,14 +342,14 @@ const DocumentType &getAttrDocType() {
}
IDocumentRetriever::SP doc_with_fields(const std::string &id, Timestamp t, Bucket b) {
- auto d = std::make_unique<Document>(getDocType(), DocumentId(id));
+ auto d = Document::make_without_repo(getDocType(), DocumentId(id));
d->setValue("header", StringFieldValue::make("foo"));
d->setValue("body", StringFieldValue::make("bar"));
return std::make_shared<UnitDR>(getDocType(), std::move(d), t, b, false);
}
IDocumentRetriever::SP doc_with_null_fields(const std::string &id, Timestamp t, Bucket b) {
- return std::make_unique<AttrUnitDR>(std::make_unique<Document>(getAttrDocType(), DocumentId(id)), t, b, false);
+ return std::make_unique<AttrUnitDR>(Document::make_without_repo(getAttrDocType(), DocumentId(id)), t, b, false);
}
IDocumentRetriever::SP doc_with_attr_fields(const vespalib::string &id,
@@ -355,7 +359,7 @@ IDocumentRetriever::SP doc_with_attr_fields(const vespalib::string &id,
const vespalib::string &ss,
const vespalib::string &attr_ss)
{
- auto d = std::make_unique<Document>(getAttrDocType(), DocumentId(id));
+ auto d = Document::make_without_repo(getAttrDocType(), DocumentId(id));
d->setValue("header", StringFieldValue::make("foo"));
d->setValue("body", StringFieldValue::make("bar"));
d->setValue("aa", IntFieldValue::make(aa));
@@ -367,7 +371,7 @@ IDocumentRetriever::SP doc_with_attr_fields(const vespalib::string &id,
auto doc_rec(VisitRecordingUnitDR::VisitedLIDs& visited_lids, const std::string &id, Timestamp t, Bucket b)
{
- return std::make_shared<VisitRecordingUnitDR>(visited_lids, std::make_unique<Document>(getAttrDocType(), DocumentId(id)), t, b, false);
+ return std::make_shared<VisitRecordingUnitDR>(visited_lids, Document::make_without_repo(getAttrDocType(), DocumentId(id)), t, b, false);
}
void checkDoc(const IDocumentRetriever &dr, const std::string &id,
@@ -462,9 +466,9 @@ TEST("require that normal documents can be iterated") {
IterateResult res = itr.iterate(largeNum);
EXPECT_TRUE(res.isCompleted());
EXPECT_EQUAL(3u, res.getEntries().size());
- TEST_DO(checkEntry(res, 0, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::1")), Timestamp(2)));
- TEST_DO(checkEntry(res, 1, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::2")), Timestamp(3)));
- TEST_DO(checkEntry(res, 2, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::3")), Timestamp(4)));
+ TEST_DO(checkEntry(res, 0, *make_doc(DocumentId("id:ns:document::1")), Timestamp(2)));
+ TEST_DO(checkEntry(res, 1, *make_doc(DocumentId("id:ns:document::2")), Timestamp(3)));
+ TEST_DO(checkEntry(res, 2, *make_doc(DocumentId("id:ns:document::3")), Timestamp(4)));
}
void verifyIterateIgnoringStopSignal(DocumentIterator & itr) {
@@ -495,7 +499,7 @@ void verifyReadConsistency(DocumentIterator & itr, ILidCommitState & lidCommitSt
IterateResult res = itr.iterate(largeNum);
EXPECT_TRUE(res.isCompleted());
EXPECT_EQUAL(1u, res.getEntries().size());
- TEST_DO(checkEntry(res, 0, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::1")), Timestamp(2)));
+ TEST_DO(checkEntry(res, 0, *make_doc(DocumentId("id:ns:document::1")), Timestamp(2)));
}
class ILidCommitStateProxy : public ILidCommitState {
@@ -552,7 +556,7 @@ TEST("require that docid limit is honoured") {
IterateResult res = itr.iterate(largeNum);
EXPECT_TRUE(res.isCompleted());
EXPECT_EQUAL(1u, res.getEntries().size());
- TEST_DO(checkEntry(res, 0, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::1")), Timestamp(2)));
+ TEST_DO(checkEntry(res, 0, *make_doc(DocumentId("id:ns:document::1")), Timestamp(2)));
udr.setDocIdLimit(7);
DocumentIterator limited(bucket(5), std::make_shared<document::AllFields>(), selectAll(), newestV(), -1, false);
@@ -583,7 +587,7 @@ TEST("require that remove entries can be ignored") {
IterateResult res = itr.iterate(largeNum);
EXPECT_TRUE(res.isCompleted());
EXPECT_EQUAL(1u, res.getEntries().size());
- TEST_DO(checkEntry(res, 0, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::2")), Timestamp(3)));
+ TEST_DO(checkEntry(res, 0, *make_doc(DocumentId("id:ns:document::2")), Timestamp(3)));
}
TEST("require that iterating all versions returns both documents and removes") {
@@ -595,7 +599,7 @@ TEST("require that iterating all versions returns both documents and removes") {
EXPECT_TRUE(res.isCompleted());
EXPECT_EQUAL(3u, res.getEntries().size());
TEST_DO(checkEntry(res, 0, DocumentId("id:ns:document::1"), Timestamp(2)));
- TEST_DO(checkEntry(res, 1, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::2")), Timestamp(3)));
+ TEST_DO(checkEntry(res, 1, *make_doc(DocumentId("id:ns:document::2")), Timestamp(3)));
TEST_DO(checkEntry(res, 2, DocumentId("id:ns:document::3"), Timestamp(4)));
}
@@ -620,7 +624,7 @@ TEST("require that entries in other buckets are skipped") {
IterateResult res = itr.iterate(largeNum);
EXPECT_TRUE(res.isCompleted());
EXPECT_EQUAL(1u, res.getEntries().size());
- TEST_DO(checkEntry(res, 0, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::2")), Timestamp(3)));
+ TEST_DO(checkEntry(res, 0, *make_doc(DocumentId("id:ns:document::2")), Timestamp(3)));
}
TEST("require that maxBytes splits iteration results") {
@@ -628,16 +632,16 @@ TEST("require that maxBytes splits iteration results") {
itr.add(doc("id:ns:document::1", Timestamp(2), bucket(5)));
itr.add(cat(rem("id:ns:document::2", Timestamp(3), bucket(5)),
doc("id:ns:document::3", Timestamp(4), bucket(5))));
- IterateResult res1 = itr.iterate(getSize(Document(*DataType::DOCUMENT, DocumentId("id:ns:document::1"))) +
+ IterateResult res1 = itr.iterate(getSize(*make_doc(DocumentId("id:ns:document::1"))) +
getSize(DocumentId("id:ns:document::2")));
EXPECT_TRUE(!res1.isCompleted());
EXPECT_EQUAL(2u, res1.getEntries().size());
- TEST_DO(checkEntry(res1, 0, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::1")), Timestamp(2)));
+ TEST_DO(checkEntry(res1, 0, *make_doc(DocumentId("id:ns:document::1")), Timestamp(2)));
TEST_DO(checkEntry(res1, 1, DocumentId("id:ns:document::2"), Timestamp(3)));
IterateResult res2 = itr.iterate(largeNum);
EXPECT_TRUE(res2.isCompleted());
- TEST_DO(checkEntry(res2, 0, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::3")), Timestamp(4)));
+ TEST_DO(checkEntry(res2, 0, *make_doc(DocumentId("id:ns:document::3")), Timestamp(4)));
IterateResult res3 = itr.iterate(largeNum);
EXPECT_TRUE(res3.isCompleted());
@@ -671,7 +675,7 @@ TEST("require that at least one document is returned by visit") {
doc("id:ns:document::3", Timestamp(4), bucket(5))));
IterateResult res1 = itr.iterate(0);
EXPECT_TRUE( ! res1.getEntries().empty());
- TEST_DO(checkEntry(res1, 0, Document(*DataType::DOCUMENT,DocumentId("id:ns:document::1")), Timestamp(2)));
+ TEST_DO(checkEntry(res1, 0, *make_doc(DocumentId("id:ns:document::1")), Timestamp(2)));
}
TEST("require that documents outside the timestamp limits are ignored") {
@@ -687,8 +691,8 @@ TEST("require that documents outside the timestamp limits are ignored") {
IterateResult res = itr.iterate(largeNum);
EXPECT_TRUE(res.isCompleted());
EXPECT_EQUAL(4u, res.getEntries().size());
- TEST_DO(checkEntry(res, 0, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::2")), Timestamp(100)));
- TEST_DO(checkEntry(res, 1, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::3")), Timestamp(200)));
+ TEST_DO(checkEntry(res, 0, *make_doc(DocumentId("id:ns:document::2")), Timestamp(100)));
+ TEST_DO(checkEntry(res, 1, *make_doc(DocumentId("id:ns:document::3")), Timestamp(200)));
TEST_DO(checkEntry(res, 2, DocumentId("id:ns:document::6"), Timestamp(100)));
TEST_DO(checkEntry(res, 3, DocumentId("id:ns:document::7"), Timestamp(200)));
}
@@ -706,8 +710,8 @@ TEST("require that timestamp subset returns the appropriate documents") {
IterateResult res = itr.iterate(largeNum);
EXPECT_TRUE(res.isCompleted());
EXPECT_EQUAL(3u, res.getEntries().size());
- TEST_DO(checkEntry(res, 0, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::2")), Timestamp(400)));
- TEST_DO(checkEntry(res, 1, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::4")), Timestamp(200)));
+ TEST_DO(checkEntry(res, 0, *make_doc(DocumentId("id:ns:document::2")), Timestamp(400)));
+ TEST_DO(checkEntry(res, 1, *make_doc(DocumentId("id:ns:document::4")), Timestamp(200)));
TEST_DO(checkEntry(res, 2, DocumentId("id:ns:document::6"), Timestamp(350)));
}
@@ -724,8 +728,8 @@ TEST("require that document selection will filter results") {
IterateResult res = itr.iterate(largeNum);
EXPECT_TRUE(res.isCompleted());
EXPECT_EQUAL(4u, res.getEntries().size());
- TEST_DO(checkEntry(res, 0, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::xxx1")), Timestamp(99)));
- TEST_DO(checkEntry(res, 1, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::xxx2")), Timestamp(200)));
+ TEST_DO(checkEntry(res, 0, *make_doc(DocumentId("id:ns:document::xxx1")), Timestamp(99)));
+ TEST_DO(checkEntry(res, 1, *make_doc(DocumentId("id:ns:document::xxx2")), Timestamp(200)));
TEST_DO(checkEntry(res, 2, DocumentId("id:ns:document::xxx3"), Timestamp(99)));
TEST_DO(checkEntry(res, 3, DocumentId("id:ns:document::xxx4"), Timestamp(200)));
}
@@ -737,10 +741,10 @@ TEST("require that document selection handles 'field == null'") {
IterateResult res = itr.iterate(largeNum);
EXPECT_TRUE(res.isCompleted());
ASSERT_EQUAL(2u, res.getEntries().size());
- Document expected1(getAttrDocType(), DocumentId("id:ns:foo::xxx1"));
- TEST_DO(checkEntry(res, 0, expected1, Timestamp(99)));
- Document expected2(getAttrDocType(), DocumentId("id:ns:foo::xxx2"));
- TEST_DO(checkEntry(res, 1, expected2, Timestamp(100)));
+ auto expected1 = Document::make_without_repo(getAttrDocType(), DocumentId("id:ns:foo::xxx1"));
+ TEST_DO(checkEntry(res, 0, *expected1, Timestamp(99)));
+ auto expected2 = Document::make_without_repo(getAttrDocType(), DocumentId("id:ns:foo::xxx2"));
+ TEST_DO(checkEntry(res, 1, *expected2, Timestamp(100)));
}
TEST("require that invalid document selection returns no documents") {
@@ -771,7 +775,7 @@ TEST("require that document selection and timestamp range works together") {
IterateResult res = itr.iterate(largeNum);
EXPECT_TRUE(res.isCompleted());
EXPECT_EQUAL(2u, res.getEntries().size());
- TEST_DO(checkEntry(res, 0, Document(*DataType::DOCUMENT, DocumentId("id:ns:document::xxx2")), Timestamp(200)));
+ TEST_DO(checkEntry(res, 0, *make_doc(DocumentId("id:ns:document::xxx2")), Timestamp(200)));
TEST_DO(checkEntry(res, 1, DocumentId("id:ns:document::xxx4"), Timestamp(200)));
}
@@ -782,9 +786,9 @@ TEST("require that fieldset limits fields returned") {
IterateResult res = itr.iterate(largeNum);
EXPECT_TRUE(res.isCompleted());
EXPECT_EQUAL(1u, res.getEntries().size());
- Document expected(getDocType(), DocumentId("id:ns:foo::xxx1"));
- expected.setValue("header", StringFieldValue::make("foo"));
- TEST_DO(checkEntry(res, 0, expected, Timestamp(1)));
+ auto expected = Document::make_without_repo(getDocType(), DocumentId("id:ns:foo::xxx1"));
+ expected->setValue("header", StringFieldValue::make("foo"));
+ TEST_DO(checkEntry(res, 0, *expected, Timestamp(1)));
}
namespace {
@@ -838,22 +842,22 @@ TEST("require that attributes are used")
IterateResult res = itr.iterate(largeNum);
EXPECT_TRUE(res.isCompleted());
EXPECT_EQUAL(2u, res.getEntries().size());
- Document expected1(getAttrDocType(), DocumentId("id:ns:foo::xx2"));
- expected1.setValue("header", StringFieldValue::make("foo"));
- expected1.setValue("body", StringFieldValue::make("bar"));
- expected1.setValue("aa", IntFieldValue::make(27));
- expected1.setValue("ab", IntFieldValue::make(28));
- expected1.setValue("dd", DoubleFieldValue::make(2.7));
- expected1.setValue("ss", StringFieldValue::make("x27"));
- Document expected2(getAttrDocType(), DocumentId("id:ns:foo::xx4"));
- expected2.setValue("header", StringFieldValue::make("foo"));
- expected2.setValue("body", StringFieldValue::make("bar"));
- expected2.setValue("aa", IntFieldValue::make(45));
- expected2.setValue("ab", IntFieldValue::make(46));
- expected2.setValue("dd", DoubleFieldValue::make(4.5));
- expected2.setValue("ss", StringFieldValue::make("x45"));
- TEST_DO(checkEntry(res, 0, expected1, Timestamp(2)));
- TEST_DO(checkEntry(res, 1, expected2, Timestamp(4)));
+ auto expected1 = Document::make_without_repo(getAttrDocType(), DocumentId("id:ns:foo::xx2"));
+ expected1->setValue("header", StringFieldValue::make("foo"));
+ expected1->setValue("body", StringFieldValue::make("bar"));
+ expected1->setValue("aa", IntFieldValue::make(27));
+ expected1->setValue("ab", IntFieldValue::make(28));
+ expected1->setValue("dd", DoubleFieldValue::make(2.7));
+ expected1->setValue("ss", StringFieldValue::make("x27"));
+ auto expected2 = Document::make_without_repo(getAttrDocType(), DocumentId("id:ns:foo::xx4"));
+ expected2->setValue("header", StringFieldValue::make("foo"));
+ expected2->setValue("body", StringFieldValue::make("bar"));
+ expected2->setValue("aa", IntFieldValue::make(45));
+ expected2->setValue("ab", IntFieldValue::make(46));
+ expected2->setValue("dd", DoubleFieldValue::make(4.5));
+ expected2->setValue("ss", StringFieldValue::make("x45"));
+ TEST_DO(checkEntry(res, 0, *expected1, Timestamp(2)));
+ TEST_DO(checkEntry(res, 1, *expected2, Timestamp(4)));
DocumentIterator itr2(bucket(5), std::make_shared<document::AllFields>(), selectDocs("foo.dd == 4.5"), docV(), -1, false);
itr2.add(doc_with_attr_fields("id:ns:foo::xx5", Timestamp(5), bucket(5),
@@ -868,22 +872,22 @@ TEST("require that attributes are used")
IterateResult res2 = itr2.iterate(largeNum);
EXPECT_TRUE(res2.isCompleted());
EXPECT_EQUAL(2u, res2.getEntries().size());
- Document expected3(getAttrDocType(), DocumentId("id:ns:foo::xx6"));
- expected3.setValue("header", StringFieldValue::make("foo"));
- expected3.setValue("body", StringFieldValue::make("bar"));
- expected3.setValue("aa", IntFieldValue::make(27));
- expected3.setValue("ab", IntFieldValue::make(28));
- expected3.setValue("dd", DoubleFieldValue::make(2.7));
- expected3.setValue("ss", StringFieldValue::make("x27"));
- Document expected4(getAttrDocType(), DocumentId("id:ns:foo::xx8"));
- expected4.setValue("header", StringFieldValue::make("foo"));
- expected4.setValue("body", StringFieldValue::make("bar"));
- expected4.setValue("aa", IntFieldValue::make(45));
- expected4.setValue("ab", IntFieldValue::make(46));
- expected4.setValue("dd", DoubleFieldValue::make(4.5));
- expected4.setValue("ss", StringFieldValue::make("x45"));
- TEST_DO(checkEntry(res2, 0, expected3, Timestamp(6)));
- TEST_DO(checkEntry(res2, 1, expected4, Timestamp(8)));
+ auto expected3 = Document::make_without_repo(getAttrDocType(), DocumentId("id:ns:foo::xx6"));
+ expected3->setValue("header", StringFieldValue::make("foo"));
+ expected3->setValue("body", StringFieldValue::make("bar"));
+ expected3->setValue("aa", IntFieldValue::make(27));
+ expected3->setValue("ab", IntFieldValue::make(28));
+ expected3->setValue("dd", DoubleFieldValue::make(2.7));
+ expected3->setValue("ss", StringFieldValue::make("x27"));
+ auto expected4 = Document::make_without_repo(getAttrDocType(), DocumentId("id:ns:foo::xx8"));
+ expected4->setValue("header", StringFieldValue::make("foo"));
+ expected4->setValue("body", StringFieldValue::make("bar"));
+ expected4->setValue("aa", IntFieldValue::make(45));
+ expected4->setValue("ab", IntFieldValue::make(46));
+ expected4->setValue("dd", DoubleFieldValue::make(4.5));
+ expected4->setValue("ss", StringFieldValue::make("x45"));
+ TEST_DO(checkEntry(res2, 0, *expected3, Timestamp(6)));
+ TEST_DO(checkEntry(res2, 1, *expected4, Timestamp(8)));
DocumentIterator itr3(bucket(5), std::make_shared<document::AllFields>(), selectDocs("foo.ss == \"x45\""), docV(), -1, false);
itr3.add(doc_with_attr_fields("id:ns:foo::xx9", Timestamp(9), bucket(5),
@@ -898,22 +902,22 @@ TEST("require that attributes are used")
IterateResult res3 = itr3.iterate(largeNum);
EXPECT_TRUE(res3.isCompleted());
EXPECT_EQUAL(2u, res3.getEntries().size());
- Document expected5(getAttrDocType(), DocumentId("id:ns:foo::xx10"));
- expected5.setValue("header", StringFieldValue::make("foo"));
- expected5.setValue("body", StringFieldValue::make("bar"));
- expected5.setValue("aa", IntFieldValue::make(27));
- expected5.setValue("ab", IntFieldValue::make(28));
- expected5.setValue("dd", DoubleFieldValue::make(2.7));
- expected5.setValue("ss", StringFieldValue::make("x27"));
- Document expected6(getAttrDocType(), DocumentId("id:ns:foo::xx12"));
- expected6.setValue("header", StringFieldValue::make("foo"));
- expected6.setValue("body", StringFieldValue::make("bar"));
- expected6.setValue("aa", IntFieldValue::make(45));
- expected6.setValue("ab", IntFieldValue::make(46));
- expected6.setValue("dd", DoubleFieldValue::make(4.5));
- expected6.setValue("ss", StringFieldValue::make("x45"));
- TEST_DO(checkEntry(res3, 0, expected5, Timestamp(10)));
- TEST_DO(checkEntry(res3, 1, expected6, Timestamp(12)));
+ auto expected5 = Document::make_without_repo(getAttrDocType(), DocumentId("id:ns:foo::xx10"));
+ expected5->setValue("header", StringFieldValue::make("foo"));
+ expected5->setValue("body", StringFieldValue::make("bar"));
+ expected5->setValue("aa", IntFieldValue::make(27));
+ expected5->setValue("ab", IntFieldValue::make(28));
+ expected5->setValue("dd", DoubleFieldValue::make(2.7));
+ expected5->setValue("ss", StringFieldValue::make("x27"));
+ auto expected6 = Document::make_without_repo(getAttrDocType(), DocumentId("id:ns:foo::xx12"));
+ expected6->setValue("header", StringFieldValue::make("foo"));
+ expected6->setValue("body", StringFieldValue::make("bar"));
+ expected6->setValue("aa", IntFieldValue::make(45));
+ expected6->setValue("ab", IntFieldValue::make(46));
+ expected6->setValue("dd", DoubleFieldValue::make(4.5));
+ expected6->setValue("ss", StringFieldValue::make("x45"));
+ TEST_DO(checkEntry(res3, 0, *expected5, Timestamp(10)));
+ TEST_DO(checkEntry(res3, 1, *expected6, Timestamp(12)));
}
TEST_MAIN() { TEST_RUN_ALL(); }
diff --git a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
index 5afe0a0c5a2..bf960768c89 100644
--- a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
@@ -516,8 +516,7 @@ MyDocumentSubDB::handleRemove(RemoveOperationWithDocId &op)
assert(op.getLid() == putRes._lid);
const document::DocumentType *docType =
_repo->getDocumentType(_docTypeName.getName());
- auto doc = std::make_unique<Document>(*docType, docId);
- doc->setRepo(*_repo);
+ auto doc = std::make_unique<Document>(*_repo, *docType, docId);
_docs[op.getLid()] = std::move(doc);
needCommit = true;
}
diff --git a/searchcore/src/tests/proton/feedoperation/feedoperation_test.cpp b/searchcore/src/tests/proton/feedoperation/feedoperation_test.cpp
index 87947788bdf..0479fa61e2b 100644
--- a/searchcore/src/tests/proton/feedoperation/feedoperation_test.cpp
+++ b/searchcore/src/tests/proton/feedoperation/feedoperation_test.cpp
@@ -126,7 +126,7 @@ public:
return upd;
}
auto makeDoc() {
- auto doc(std::make_shared<Document>(_docType, docId));
+ auto doc(std::make_shared<Document>(*_repo, _docType, docId));
doc->setValue("string", StringFieldValue("stringval"));
return doc;
}
diff --git a/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp b/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp
index e9fd4fa9d37..996d9846934 100644
--- a/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp
+++ b/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp
@@ -61,7 +61,7 @@ createDocType(const vespalib::string &name, int32_t id)
Document::SP
createDoc(const DocumentType &docType, const DocumentId &docId)
{
- return std::make_shared<Document>(docType, docId);
+ return Document::SP(Document::make_without_repo(docType, docId).release());
}
diff --git a/searchcore/src/tests/proton/server/documentretriever_test.cpp b/searchcore/src/tests/proton/server/documentretriever_test.cpp
index 6cc2ca22531..f99c3ab0f67 100644
--- a/searchcore/src/tests/proton/server/documentretriever_test.cpp
+++ b/searchcore/src/tests/proton/server/documentretriever_test.cpp
@@ -161,7 +161,7 @@ struct MyDocumentStore : proton::test::DummyDocumentStore {
return std::move(_testDoc);
}
const DocumentType *doc_type = r.getDocumentType(doc_type_name);
- auto doc = std::make_unique<Document>(*doc_type, doc_id);
+ auto doc = std::make_unique<Document>(r, *doc_type, doc_id);
ASSERT_TRUE(doc);
doc->setValue(static_field, IntFieldValue::make(static_value));
doc->setValue(dyn_field_i, IntFieldValue::make(static_value));
diff --git a/searchcore/src/vespa/searchcore/bmcluster/bm_feed.cpp b/searchcore/src/vespa/searchcore/bmcluster/bm_feed.cpp
index 0856bad0035..b257f85acdc 100644
--- a/searchcore/src/vespa/searchcore/bmcluster/bm_feed.cpp
+++ b/searchcore/src/vespa/searchcore/bmcluster/bm_feed.cpp
@@ -60,8 +60,7 @@ std::unique_ptr<Document>
BmFeed::make_document(uint32_t n, uint32_t i) const
{
auto id = make_document_id(n, i);
- auto document = std::make_unique<Document>(*_document_type, id);
- document->setRepo(*_repo);
+ auto document = std::make_unique<Document>(*_repo, *_document_type, id);
document->setFieldValue(_field, IntFieldValue::make(i));
return document;
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentretriever.cpp b/searchcore/src/vespa/searchcore/proton/server/documentretriever.cpp
index ee2af5b606c..b8240b33b6c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentretriever.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentretriever.cpp
@@ -244,7 +244,7 @@ DocumentRetriever::getPartialDocument(search::DocumentIdT lid, const document::D
FieldSet::stripFields(*doc, fieldSet);
}
} else {
- doc = std::make_unique<Document>(getDocumentType(), docId);
+ doc = std::make_unique<Document>(getDocumentTypeRepo(), getDocumentType(), docId);
switch (fieldSet.getType()) {
case FieldSet::Type::ALL:
populate(lid, *doc);
@@ -271,7 +271,6 @@ DocumentRetriever::getPartialDocument(search::DocumentIdT lid, const document::D
case FieldSet::Type::DOCID:
break;
}
- doc->setRepo(getDocumentTypeRepo());
}
return doc;
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.cpp b/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.cpp
index 914f3d8bcfd..bb7d80c5ebc 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.cpp
@@ -26,8 +26,7 @@ DocumentRetrieverBase::DocumentRetrieverBase(
_hasFields(hasFields)
{
const document::DocumentType * docType(_repo.getDocumentType(_docTypeName.getName()));
- _emptyDoc = std::make_unique<document::Document>(*docType, DocumentId("id:empty:" + _docTypeName.getName() + "::empty"));
- _emptyDoc->setRepo(_repo);
+ _emptyDoc = std::make_unique<document::Document>(_repo, *docType, DocumentId("id:empty:" + _docTypeName.getName() + "::empty"));
}
DocumentRetrieverBase::~DocumentRetrieverBase() = default;
diff --git a/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp b/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp
index 6bbedcdb18e..e9a14385c6a 100644
--- a/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp
@@ -217,8 +217,8 @@ FeedHandler::performInternalUpdate(FeedToken token, UpdateOperation &op)
void
FeedHandler::createNonExistingDocument(FeedToken token, const UpdateOperation &op)
{
- auto doc = make_shared<Document>(op.getUpdate()->getType(), op.getUpdate()->getId());
- doc->setRepo(*_activeFeedView->getDocumentTypeRepo());
+ auto doc = make_shared<Document>(*_activeFeedView->getDocumentTypeRepo(),
+ op.getUpdate()->getType(), op.getUpdate()->getId());
op.getUpdate()->applyTo(*doc);
PutOperation putOp(op.getBucketId(), op.getTimestamp(), std::move(doc));
putOp.set_prepare_serial_num(op.get_prepare_serial_num());
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
index 533b270c20a..c2b4c0507db 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
@@ -586,8 +586,7 @@ StoreOnlyFeedView::internalRemove(FeedToken token, const RemoveOperationWithDocI
adjustMetaStore(rmOp, docId.getGlobalId(), docId);
if (rmOp.getValidDbdId(_params._subDbId)) {
- auto clearDoc = std::make_unique<Document>(*_docType, docId);
- clearDoc->setRepo(*_repo);
+ auto clearDoc = std::make_unique<Document>(*_repo, *_docType, docId);
putSummary(serialNum, rmOp.getLid(), std::move(clearDoc), std::make_shared<SummaryPutDoneContext>(std::move(token), get_pending_lid_token(rmOp)));
}