diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-08-05 21:03:45 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-08-07 12:35:10 +0000 |
commit | 7af09657ed382216b3406e26c6f79bb43ba090e3 (patch) | |
tree | 7a21661c12a532d710a0cfeb93ac7775cbaf67d3 /searchcore/src/tests/proton | |
parent | bd882b314a5a817e5db9819140189f922ab2d010 (diff) |
- Change APi for fetching documents to support optimal document retrival when everything is available in memory.
- When all fields are present only in attributes, only access the fields that are required.
Diffstat (limited to 'searchcore/src/tests/proton')
6 files changed, 89 insertions, 84 deletions
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 f52ca606900..9834511eb6f 100644 --- a/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp +++ b/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp @@ -133,7 +133,7 @@ struct UnitDR : DocumentRetrieverBaseForTest { } return DocumentMetaData(); } - document::Document::UP getDocument(DocumentIdT lid) const override { + document::Document::UP getDocumentByLidOnly(DocumentIdT lid) const override { return Document::UP((lid == docid) ? document->clone() : nullptr); } @@ -145,7 +145,7 @@ struct UnitDR : DocumentRetrieverBaseForTest { } CachedSelect::SP parseSelect(const vespalib::string &selection) const override { - CachedSelect::SP res(new CachedSelect); + auto res = std::make_shared<CachedSelect>(); res->set(selection, repo); return res; } @@ -154,7 +154,7 @@ struct UnitDR : DocumentRetrieverBaseForTest { }; UnitDR::UnitDR() - : repo(), document(new Document(*DataType::DOCUMENT, DocumentId())), timestamp(0), + : repo(), document(std::make_unique<Document>(*DataType::DOCUMENT, 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) @@ -179,11 +179,11 @@ struct VisitRecordingUnitDR : UnitDR { { } - document::Document::UP getDocument(DocumentIdT lid) const override { + document::Document::UP getDocumentByLidOnly(DocumentIdT lid) const override { if (lid == docid) { visited_lids.insert(lid); } - return UnitDR::getDocument(lid); + return UnitDR::getDocumentByLidOnly(lid); } }; @@ -238,7 +238,7 @@ struct AttrUnitDR : public UnitDR } CachedSelect::SP parseSelect(const vespalib::string &selection) const override { - CachedSelect::SP res(new CachedSelect); + auto res = std::make_shared<CachedSelect>(); res->set(selection, "foo", Document(document->getType(), DocumentId()), repo, &_amgr, true); return res; } @@ -262,13 +262,13 @@ struct PairDR : DocumentRetrieverBaseForTest { DocumentMetaData ret = first->getDocumentMetaData(id); return (ret.valid()) ? ret : second->getDocumentMetaData(id); } - document::Document::UP getDocument(DocumentIdT lid) const override { - Document::UP ret = first->getDocument(lid); - return ret ? std::move(ret) : second->getDocument(lid); + document::Document::UP getDocumentByLidOnly(DocumentIdT lid) const override { + Document::UP ret = first->getDocumentByLidOnly(lid); + return ret ? std::move(ret) : second->getDocumentByLidOnly(lid); } CachedSelect::SP parseSelect(const vespalib::string &selection) const override { - CachedSelect::SP res(new CachedSelect); + auto res = std::make_shared<CachedSelect>(); res->set(selection, getDocumentTypeRepo()); return res; } @@ -296,16 +296,26 @@ size_t getSize(const document::DocumentId &id) { return id.getSerializedSize() + getSize(); } -IDocumentRetriever::SP nil() { return IDocumentRetriever::SP(new UnitDR()); } +IDocumentRetriever::SP nil() { return std::make_unique<UnitDR>(); } -IDocumentRetriever::SP doc(const std::string &id, Timestamp t, Bucket b) { - Document::UP d(new Document(*DataType::DOCUMENT, DocumentId(id))); - return IDocumentRetriever::SP(new UnitDR(std::move(d), t, b, false)); +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); } -IDocumentRetriever::SP rem(const std::string &id, Timestamp t, Bucket b) { - Document::UP d(new Document(*DataType::DOCUMENT, DocumentId(id))); - return IDocumentRetriever::SP(new UnitDR(std::move(d), t, b, true)); +IDocumentRetriever::SP +doc(const std::string &id, Timestamp t, Bucket b) { + return doc(DocumentId(id), t, 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); +} + +IDocumentRetriever::SP +rem(const std::string &id, Timestamp t, Bucket b) { + return rem(DocumentId(id), t, b); } IDocumentRetriever::SP cat(IDocumentRetriever::SP first, IDocumentRetriever::SP second) { @@ -337,15 +347,14 @@ const DocumentType &getAttrDocType() { } IDocumentRetriever::SP doc_with_fields(const std::string &id, Timestamp t, Bucket b) { - Document::UP d(new Document(getDocType(), DocumentId(id))); + auto d = std::make_unique<Document>(getDocType(), DocumentId(id)); d->set("header", "foo"); d->set("body", "bar"); - return IDocumentRetriever::SP(new UnitDR(getDocType(), std::move(d), t, b, false)); + 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) { - Document::UP d(new Document(getAttrDocType(), DocumentId(id))); - return IDocumentRetriever::SP(new AttrUnitDR(std::move(d), t, b, false)); + return std::make_unique<AttrUnitDR>(std::make_unique<Document>(getAttrDocType(), DocumentId(id)), t, b, false); } IDocumentRetriever::SP doc_with_attr_fields(const vespalib::string &id, @@ -355,35 +364,32 @@ IDocumentRetriever::SP doc_with_attr_fields(const vespalib::string &id, const vespalib::string &ss, const vespalib::string &attr_ss) { - Document::UP d(new Document(getAttrDocType(), DocumentId(id))); + auto d = std::make_unique<Document>(getAttrDocType(), DocumentId(id)); d->set("header", "foo"); d->set("body", "bar"); d->set("aa", aa); d->set("ab", ab); d->set("dd", dd); d->set("ss", ss); - return IDocumentRetriever::SP(new AttrUnitDR(std::move(d), t, b, false, - attr_aa, attr_dd, attr_ss)); + return std::make_shared<AttrUnitDR>(std::move(d), t, b, false, attr_aa, attr_dd, attr_ss); } -auto doc_rec(VisitRecordingUnitDR::VisitedLIDs& visited_lids, - const std::string &id, Timestamp t, Bucket b) +auto doc_rec(VisitRecordingUnitDR::VisitedLIDs& visited_lids, const std::string &id, Timestamp t, Bucket b) { - Document::UP d(new Document(getDocType(), DocumentId(id))); - return std::make_shared<VisitRecordingUnitDR>( - visited_lids, std::move(d), t, b, false); + return std::make_shared<VisitRecordingUnitDR>(visited_lids, std::make_unique<Document>(getAttrDocType(), DocumentId(id)), t, b, false); } void checkDoc(const IDocumentRetriever &dr, const std::string &id, size_t timestamp, size_t bucket, bool removed) { - DocumentMetaData dmd = dr.getDocumentMetaData(DocumentId(id)); + DocumentId documentId(id); + DocumentMetaData dmd = dr.getDocumentMetaData(documentId); EXPECT_TRUE(dmd.valid()); EXPECT_EQUAL(timestamp, dmd.timestamp); EXPECT_EQUAL(bucket, dmd.bucketId.getId()); EXPECT_EQUAL(DocumentId(id).getGlobalId(), dmd.gid); EXPECT_EQUAL(removed, dmd.removed); - Document::UP doc = dr.getDocument(dmd.lid); + Document::UP doc = dr.getDocument(dmd.lid, documentId); ASSERT_TRUE(doc); EXPECT_TRUE(DocumentId(id) == doc->getId()); } @@ -415,15 +421,18 @@ void checkEntry(const IterateResult &res, size_t idx, const Document &doc, const } TEST("require that custom retrievers work as expected") { + DocumentId id1("id:ns:document::1"); + DocumentId id2("id:ns:document::2"); + DocumentId id3("id:ns:document::3"); IDocumentRetriever::SP dr = - cat(cat(doc("id:ns:document::1", Timestamp(2), bucket(5)), - rem("id:ns:document::2", Timestamp(3), bucket(5))), - cat(doc("id:ns:document::3", Timestamp(7), bucket(6)), + cat(cat(doc(id1, Timestamp(2), bucket(5)), + rem(id2, Timestamp(3), bucket(5))), + cat(doc(id3, Timestamp(7), bucket(6)), nil())); EXPECT_FALSE(dr->getDocumentMetaData(DocumentId("id:ns:document::bogus")).valid()); - EXPECT_FALSE(dr->getDocument(1)); - EXPECT_FALSE(dr->getDocument(2)); - EXPECT_TRUE(dr->getDocument(3)); + EXPECT_FALSE(dr->getDocument(1, id1)); + EXPECT_FALSE(dr->getDocument(2, id2)); + EXPECT_TRUE(dr->getDocument(3, id3)); TEST_DO(checkDoc(*dr, "id:ns:document::1", 2, 5, false)); TEST_DO(checkDoc(*dr, "id:ns:document::2", 3, 5, true)); TEST_DO(checkDoc(*dr, "id:ns:document::3", 7, 6, false)); diff --git a/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_test.cpp b/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_test.cpp index 5fac9ef9c94..ae8ee7686da 100644 --- a/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_test.cpp +++ b/searchcore/src/tests/proton/documentdb/documentbucketmover/documentbucketmover_test.cpp @@ -104,7 +104,7 @@ struct MyDocumentRetriever : public DocumentRetrieverBaseForTest const document::DocumentTypeRepo &getDocumentTypeRepo() const override { return *_repo; } void getBucketMetaData(const storage::spi::Bucket &, DocumentMetaData::Vector &) const override {} DocumentMetaData getDocumentMetaData(const DocumentId &) const override { return DocumentMetaData(); } - Document::UP getDocument(DocumentIdT lid) const override { + Document::UP getDocumentByLidOnly(DocumentIdT lid) const override { return Document::UP(_docs[lid]->clone()); } diff --git a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_compaction_test.cpp b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_compaction_test.cpp index 7303d4ef6d0..44e053b8019 100644 --- a/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_compaction_test.cpp +++ b/searchcore/src/tests/proton/documentdb/lid_space_compaction/lid_space_compaction_test.cpp @@ -217,7 +217,7 @@ struct MyDocumentRetriever : public DocumentRetrieverBaseForTest { const document::DocumentTypeRepo& getDocumentTypeRepo() const override { return *repo; } void getBucketMetaData(const storage::spi::Bucket&, DocumentMetaData::Vector&) const override { abort(); } DocumentMetaData getDocumentMetaData(const DocumentId&) const override { abort(); } - Document::UP getDocument(DocumentIdT lid) const override { + Document::UP getDocumentByLidOnly(DocumentIdT lid) const override { return store.read(lid, *repo); } CachedSelect::SP parseSelect(const vespalib::string&) const override { abort(); } diff --git a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp index 7e13f99d7b3..9fc2450cb20 100644 --- a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp +++ b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp @@ -171,7 +171,7 @@ struct MyDocumentRetriever : public DocumentRetrieverBaseForTest } Document::UP - getDocument(DocumentIdT lid) const override + getDocumentByLidOnly(DocumentIdT lid) const override { return _subDB.getDocument(lid); } diff --git a/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp b/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp index 214ca186656..d43622cced3 100644 --- a/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp +++ b/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp @@ -127,7 +127,7 @@ struct MyDocumentRetriever : DocumentRetrieverBaseForTest { } return DocumentMetaData(); } - document::Document::UP getDocument(search::DocumentIdT) const override { + document::Document::UP getDocumentByLidOnly(search::DocumentIdT) const override { if (document != nullptr) { return Document::UP(document->clone()); } diff --git a/searchcore/src/tests/proton/server/documentretriever_test.cpp b/searchcore/src/tests/proton/server/documentretriever_test.cpp index 40224902b8f..09aaa383f1e 100644 --- a/searchcore/src/tests/proton/server/documentretriever_test.cpp +++ b/searchcore/src/tests/proton/server/documentretriever_test.cpp @@ -157,7 +157,7 @@ struct MyDocumentStore : proton::test::DummyDocumentStore { } const DocumentType *doc_type = r.getDocumentType(doc_type_name); auto doc = std::make_unique<Document>(*doc_type, doc_id); - ASSERT_TRUE(doc.get()); + ASSERT_TRUE(doc); doc->set(static_field, static_value); doc->set(dyn_field_i, static_value); doc->set(dyn_field_s, static_value_s); @@ -170,7 +170,7 @@ struct MyDocumentStore : proton::test::DummyDocumentStore { doc->setValue(dyn_field_tensor, tensorFieldValue); if (_set_position_struct_field) { FieldValue::UP fv = PositionDataType::getInstance().createFieldValue(); - StructFieldValue &pos = static_cast<StructFieldValue &>(*fv); + auto &pos = dynamic_cast<StructFieldValue &>(*fv); pos.set(PositionDataType::FIELD_X, 42); pos.set(PositionDataType::FIELD_Y, 21); doc->setValue(doc->getField(position_field), *fv); @@ -179,7 +179,7 @@ struct MyDocumentStore : proton::test::DummyDocumentStore { return doc; } - virtual uint64_t + uint64_t initFlush(uint64_t syncToken) override { return syncToken; @@ -278,11 +278,10 @@ struct Fixture { search::AttributeManager attr_manager; Schema schema; DocTypeName _dtName; - std::unique_ptr<DocumentRetriever> _retriever; + std::unique_ptr<IDocumentRetriever> _retriever; template <typename T> - T *addAttribute(const char *name, - Schema::DataType t, Schema::CollectionType ct) { + T *addAttribute(const char *name, Schema::DataType t, Schema::CollectionType ct) { AttributeVector::SP attrPtr = AttributeFactory::createAttribute(name, convertConfig(t, ct)); T *attr = dynamic_cast<T *>(attrPtr.get()); AttributeVector::DocId id; @@ -297,8 +296,7 @@ struct Fixture { } template <typename T, typename U> - void addAttribute(const char *name, U val, - Schema::DataType t, Schema::CollectionType ct) { + void addAttribute(const char *name, U val, Schema::DataType t, Schema::CollectionType ct) { T *attr = addAttribute<T>(name, t, ct); if (ct == schema::CollectionType::SINGLE) { attr->update(lid, val); @@ -309,7 +307,7 @@ struct Fixture { attr->commit(); } void addTensorAttribute(const char *name, const Tensor &val) { - TensorAttribute *attr = addAttribute<TensorAttribute>(name, schema::DataType::TENSOR, schema::CollectionType::SINGLE); + auto * attr = addAttribute<TensorAttribute>(name, schema::DataType::TENSOR, schema::CollectionType::SINGLE); attr->setTensor(lid, val); attr->commit(); } @@ -354,7 +352,7 @@ struct Fixture { addAttribute<StringAttribute>(dyn_field_nas, DataType::STRING, ct); addAttribute<IntegerAttribute>(zcurve_field, dynamic_zcurve_value, DataType::INT64, ct); addTensorAttribute(dyn_field_tensor.c_str(), *dynamic_tensor); - PredicateAttribute *attr = addAttribute<PredicateAttribute>(dyn_field_p, DataType::BOOLEANTREE, ct); + auto * attr = addAttribute<PredicateAttribute>(dyn_field_p, DataType::BOOLEANTREE, ct); attr->getIndex().indexEmptyDocument(lid); attr->commit(); ct = schema::CollectionType::ARRAY; @@ -371,7 +369,7 @@ struct Fixture { build(); } - void clearAttributes(std::vector<vespalib::string> names) { + void clearAttributes(const std::vector<vespalib::string> & names) const { for (const auto &name : names) { auto guard = *attr_manager.getAttribute(name); guard->clearDoc(lid); @@ -400,14 +398,14 @@ TEST_F("require that document retriever can retrieve bucket meta data", Fixture) TEST_F("require that document retriever can retrieve document", Fixture) { DocumentMetaData meta_data = f._retriever->getDocumentMetaData(doc_id); - Document::UP doc = f._retriever->getDocument(meta_data.lid); - ASSERT_TRUE(doc.get()); + Document::UP doc = f._retriever->getDocument(meta_data.lid, doc_id); + ASSERT_TRUE(doc); EXPECT_EQUAL(doc_id, doc->getId()); } template <typename T> bool checkFieldValue(FieldValue::UP field_value, typename T::value_type v) { - ASSERT_TRUE(field_value.get()); + ASSERT_TRUE(field_value); T *t_value = dynamic_cast<T *>(field_value.get()); ASSERT_TRUE(t_value); return EXPECT_EQUAL(v, t_value->getValue()); @@ -415,8 +413,8 @@ bool checkFieldValue(FieldValue::UP field_value, typename T::value_type v) { template <typename T> void checkArray(FieldValue::UP array, typename T::value_type v) { - ASSERT_TRUE(array.get()); - ArrayFieldValue *array_val = dynamic_cast<ArrayFieldValue *>(array.get()); + ASSERT_TRUE(array); + auto *array_val = dynamic_cast<ArrayFieldValue *>(array.get()); ASSERT_TRUE(array_val); ASSERT_EQUAL(2u, array_val->size()); T *t_value = dynamic_cast<T *>(&(*array_val)[0]); @@ -428,9 +426,8 @@ void checkArray(FieldValue::UP array, typename T::value_type v) { template <typename T> void checkWset(FieldValue::UP wset, T v) { - ASSERT_TRUE(wset.get()); - WeightedSetFieldValue *wset_val = - dynamic_cast<WeightedSetFieldValue *>(wset.get()); + ASSERT_TRUE(wset); + auto *wset_val = dynamic_cast<WeightedSetFieldValue *>(wset.get()); ASSERT_TRUE(wset_val); ASSERT_EQUAL(2u, wset_val->size()); EXPECT_EQUAL(dyn_weight, wset_val->get(v)); @@ -439,12 +436,12 @@ void checkWset(FieldValue::UP wset, T v) { TEST_F("require that attributes are patched into stored document", Fixture) { DocumentMetaData meta_data = f._retriever->getDocumentMetaData(doc_id); - Document::UP doc = f._retriever->getDocument(meta_data.lid); - ASSERT_TRUE(doc.get()); + Document::UP doc = f._retriever->getDocument(meta_data.lid, doc_id); + ASSERT_TRUE(doc); FieldValue::UP value = doc->getValue(static_field); - ASSERT_TRUE(value.get()); - IntFieldValue *int_value = dynamic_cast<IntFieldValue *>(value.get()); + ASSERT_TRUE(value); + auto *int_value = dynamic_cast<IntFieldValue *>(value.get()); ASSERT_TRUE(int_value); EXPECT_EQUAL(static_value, int_value->getValue()); @@ -470,18 +467,18 @@ TEST_F("require that attributes are patched into stored document", Fixture) { TEST_F("require that attributes are patched into stored document unless also index field", Fixture) { f.addIndexField(Schema::IndexField(dyn_field_s, DataType::STRING)).build(); DocumentMetaData meta_data = f._retriever->getDocumentMetaData(doc_id); - Document::UP doc = f._retriever->getDocument(meta_data.lid); - ASSERT_TRUE(doc.get()); + Document::UP doc = f._retriever->getDocument(meta_data.lid, doc_id); + ASSERT_TRUE(doc); checkFieldValue<StringFieldValue>(doc->getValue(dyn_field_s), static_value_s); } void verify_position_field_has_expected_values(Fixture& f) { DocumentMetaData meta_data = f._retriever->getDocumentMetaData(doc_id); - Document::UP doc = f._retriever->getDocument(meta_data.lid); - ASSERT_TRUE(doc.get()); + Document::UP doc = f._retriever->getDocument(meta_data.lid, doc_id); + ASSERT_TRUE(doc); FieldValue::UP value = doc->getValue(position_field); - ASSERT_TRUE(value.get()); + ASSERT_TRUE(value); const auto *position = dynamic_cast<StructFieldValue *>(value.get()); ASSERT_TRUE(position); FieldValue::UP x = position->getValue(PositionDataType::FIELD_X); @@ -503,10 +500,10 @@ TEST_F("zcurve attribute is authoritative for single value position field existe TEST_F("require that array position field value is generated from zcurve array attribute", Fixture) { DocumentMetaData meta_data = f._retriever->getDocumentMetaData(doc_id); - Document::UP doc = f._retriever->getDocument(meta_data.lid); - ASSERT_TRUE(doc.get()); + Document::UP doc = f._retriever->getDocument(meta_data.lid, doc_id); + ASSERT_TRUE(doc); FieldValue::UP value = doc->getValue(position_array_field); - ASSERT_TRUE(value.get()); + ASSERT_TRUE(value); const auto* array_value = dynamic_cast<const document::ArrayFieldValue*>(value.get()); ASSERT_TRUE(array_value != nullptr); ASSERT_EQUAL(array_value->getNestedType(), document::PositionDataType::getInstance()); @@ -528,33 +525,32 @@ TEST_F("require that array position field value is generated from zcurve array a } TEST_F("require that non-existing lid returns null pointer", Fixture) { - Document::UP doc = f._retriever->getDocument(0); - ASSERT_FALSE(doc.get()); + Document::UP doc = f._retriever->getDocument(0, DocumentId("id:ns:document::1")); + ASSERT_FALSE(doc); } TEST_F("require that predicate attributes can be retrieved", Fixture) { DocumentMetaData meta_data = f._retriever->getDocumentMetaData(doc_id); - Document::UP doc = f._retriever->getDocument(meta_data.lid); - ASSERT_TRUE(doc.get()); + Document::UP doc = f._retriever->getDocument(meta_data.lid, doc_id); + ASSERT_TRUE(doc); FieldValue::UP value = doc->getValue(dyn_field_p); - ASSERT_TRUE(value.get()); - PredicateFieldValue *predicate_value = - dynamic_cast<PredicateFieldValue *>(value.get()); + ASSERT_TRUE(value); + auto *predicate_value = dynamic_cast<PredicateFieldValue *>(value.get()); ASSERT_TRUE(predicate_value); } TEST_F("require that zero values in multivalue attribute removes fields", Fixture) { auto meta_data = f._retriever->getDocumentMetaData(doc_id); - auto doc = f._retriever->getDocument(meta_data.lid); + auto doc = f._retriever->getDocument(meta_data.lid, doc_id); ASSERT_TRUE(doc); const Document *docPtr = doc.get(); ASSERT_TRUE(doc->hasValue(dyn_arr_field_i)); ASSERT_TRUE(doc->hasValue(dyn_wset_field_i)); f.doc_store._testDoc = std::move(doc); f.clearAttributes({ dyn_arr_field_i, dyn_wset_field_i }); - doc = f._retriever->getDocument(meta_data.lid); + doc = f._retriever->getDocument(meta_data.lid, doc_id); EXPECT_EQUAL(docPtr, doc.get()); ASSERT_FALSE(doc->hasValue(dyn_arr_field_i)); ASSERT_FALSE(doc->hasValue(dyn_wset_field_i)); @@ -562,12 +558,12 @@ TEST_F("require that zero values in multivalue attribute removes fields", Fixtur TEST_F("require that tensor attribute can be retrieved", Fixture) { DocumentMetaData meta_data = f._retriever->getDocumentMetaData(doc_id); - Document::UP doc = f._retriever->getDocument(meta_data.lid); - ASSERT_TRUE(doc.get()); + Document::UP doc = f._retriever->getDocument(meta_data.lid, doc_id); + ASSERT_TRUE(doc); FieldValue::UP value = doc->getValue(dyn_field_tensor); ASSERT_TRUE(value); - TensorFieldValue *tensor_value = dynamic_cast<TensorFieldValue *>(value.get()); + auto * tensor_value = dynamic_cast<TensorFieldValue *>(value.get()); ASSERT_TRUE(tensor_value->getAsTensorPtr()->equals(*dynamic_tensor)); } |