summaryrefslogtreecommitdiffstats
path: root/streamingvisitors
diff options
context:
space:
mode:
Diffstat (limited to 'streamingvisitors')
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp1
-rw-r--r--streamingvisitors/src/vespa/vsm/common/storagedocument.cpp29
-rw-r--r--streamingvisitors/src/vespa/vsm/common/storagedocument.h1
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;