diff options
Diffstat (limited to 'streamingvisitors')
3 files changed, 10 insertions, 21 deletions
diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp index ddd2457ec49..c2bbf4d09da 100644 --- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp @@ -936,7 +936,6 @@ SearchVisitor::handleDocument(StorageDocument & document) group(document.docDoc(), rp.getRankScore(), false); if (amongTheBest) { - document.saveCachedFields(); needToKeepDocument = true; } diff --git a/streamingvisitors/src/vespa/vsm/common/storagedocument.cpp b/streamingvisitors/src/vespa/vsm/common/storagedocument.cpp index a0d666268f5..b73b6be2862 100644 --- a/streamingvisitors/src/vespa/vsm/common/storagedocument.cpp +++ b/streamingvisitors/src/vespa/vsm/common/storagedocument.cpp @@ -17,28 +17,31 @@ StorageDocument::StorageDocument(document::Document::UP doc, const SharedFieldPa _fieldMap(fim), _cachedFields(getFieldCount()), _backedFields() -{ } +{ + _backedFields.reserve(getFieldCount()); +} -StorageDocument::~StorageDocument() { } +StorageDocument::~StorageDocument() = default; namespace { FieldPath _emptyFieldPath; - StorageDocument::SubDocument _empySubDocument(NULL, _emptyFieldPath.getFullRange()); + StorageDocument::SubDocument _empySubDocument(nullptr, _emptyFieldPath.getFullRange()); } const StorageDocument::SubDocument & StorageDocument::getComplexField(FieldIdT fId) const { - if (_cachedFields[fId].getFieldValue() == NULL) { + if (_cachedFields[fId].getFieldValue() == nullptr) { const FieldPath & fp = (*_fieldMap)[fId]; if ( ! fp.empty() ) { const document::StructuredFieldValue * sfv = _doc.get(); NestedIterator nested = fp.getFullRange(); const document::FieldPathEntry& fvInfo = nested.cur(); - bool ok = sfv->getValue(fvInfo.getFieldRef(), fvInfo.getFieldValueToSet()); - if (ok) { - SubDocument tmp(&fvInfo.getFieldValueToSet(), nested.next()); + document::FieldValue::UP fv = sfv->getValue(fvInfo.getFieldRef()); + if (fv) { + SubDocument tmp(fv.get(), nested.next()); _cachedFields[fId].swap(tmp); + _backedFields.push_back(std::move(fv)); } } else { LOG(debug, "Failed getting field fId %d.", fId); @@ -48,18 +51,6 @@ StorageDocument::getComplexField(FieldIdT fId) const return _cachedFields[fId]; } -void StorageDocument::saveCachedFields() const -{ - size_t m(_cachedFields.size()); - _backedFields.reserve(m); - for (size_t i(0); i < m; i++) { - if (_cachedFields[i].getFieldValue() != 0) { - _backedFields.emplace_back(document::FieldValue::UP(_cachedFields[i].getFieldValue()->clone())); - _cachedFields[i].setFieldValue(_backedFields.back().get()); - } - } -} - const document::FieldValue * StorageDocument::getField(FieldIdT fId) const { diff --git a/streamingvisitors/src/vespa/vsm/common/storagedocument.h b/streamingvisitors/src/vespa/vsm/common/storagedocument.h index a7f21cb052f..0ac94157462 100644 --- a/streamingvisitors/src/vespa/vsm/common/storagedocument.h +++ b/streamingvisitors/src/vespa/vsm/common/storagedocument.h @@ -47,7 +47,6 @@ public: const SubDocument &getComplexField(FieldIdT fId) const; const document::FieldValue *getField(FieldIdT fId) const override; bool setField(FieldIdT fId, document::FieldValue::UP fv) override ; - void saveCachedFields() const; private: document::Document::UP _doc; SharedFieldPathMap _fieldMap; |