summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp8
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h3
-rw-r--r--searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp2
-rw-r--r--searchsummary/src/tests/docsummary/positionsdfw_test.cpp2
-rw-r--r--searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp6
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h4
-rw-r--r--vsm/src/vespa/vsm/vsm/vsm-adapter.cpp10
-rw-r--r--vsm/src/vespa/vsm/vsm/vsm-adapter.h3
9 files changed, 16 insertions, 24 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
index f3559b54eb4..c65257e7f6a 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
@@ -147,8 +147,7 @@ DocsumContext::DocsumContext(const DocsumRequest & request, IDocsumWriter & docs
_attrCtx(attrCtx),
_attrMgr(attrMgr),
_docsumState(*this),
- _sessionMgr(sessionMgr),
- _matching_elements()
+ _sessionMgr(sessionMgr)
{
initState();
}
@@ -215,11 +214,10 @@ DocsumContext::ParseLocation(search::docsummary::GetDocsumsState *state)
state->_parsedLocation.reset(getLocation(_request.location, _attrMgr));
}
-const MatchingElements&
+std::unique_ptr<MatchingElements>
DocsumContext::fill_matching_elements()
{
- _matching_elements = std::make_unique<MatchingElements>();
- return *_matching_elements;
+ return std::make_unique<MatchingElements>();
}
} // namespace proton
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h
index ec03efdd650..30b5ef16cb1 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.h
@@ -25,7 +25,6 @@ private:
search::IAttributeManager & _attrMgr;
search::docsummary::GetDocsumsState _docsumState;
matching::SessionManager & _sessionMgr;
- std::unique_ptr<search::MatchingElements> _matching_elements;
void initState();
search::engine::DocsumReply::UP createReply();
@@ -49,7 +48,7 @@ public:
void FillSummaryFeatures(search::docsummary::GetDocsumsState * state, search::docsummary::IDocsumEnvironment * env) override;
void FillRankFeatures(search::docsummary::GetDocsumsState * state, search::docsummary::IDocsumEnvironment * env) override;
void ParseLocation(search::docsummary::GetDocsumsState * state) override;
- const search::MatchingElements& fill_matching_elements() override;
+ std::unique_ptr<search::MatchingElements> fill_matching_elements() override;
};
} // namespace proton
diff --git a/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp b/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp
index 240e7334292..961acadeddf 100644
--- a/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp
+++ b/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp
@@ -165,7 +165,7 @@ public:
void FillSummaryFeatures(GetDocsumsState *, IDocsumEnvironment *) override { }
void FillRankFeatures(GetDocsumsState *, IDocsumEnvironment *) override { }
void ParseLocation(GetDocsumsState *) override { }
- const MatchingElements& fill_matching_elements() override { return _matching_elements; }
+ std::unique_ptr<MatchingElements> fill_matching_elements() override { return std::make_unique<MatchingElements>(_matching_elements); }
~DummyStateCallback() override { }
};
diff --git a/searchsummary/src/tests/docsummary/positionsdfw_test.cpp b/searchsummary/src/tests/docsummary/positionsdfw_test.cpp
index 86a2e9ae76f..476891ca40f 100644
--- a/searchsummary/src/tests/docsummary/positionsdfw_test.cpp
+++ b/searchsummary/src/tests/docsummary/positionsdfw_test.cpp
@@ -106,7 +106,7 @@ struct MyGetDocsumsStateCallback : GetDocsumsStateCallback {
virtual void FillSummaryFeatures(GetDocsumsState *, IDocsumEnvironment *) override {}
virtual void FillRankFeatures(GetDocsumsState *, IDocsumEnvironment *) override {}
virtual void ParseLocation(GetDocsumsState *) override {}
- const MatchingElements& fill_matching_elements() override { abort(); }
+ std::unique_ptr<MatchingElements> fill_matching_elements() override { abort(); }
};
template <typename AttrType>
diff --git a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
index bd753f24bf3..efeb066135f 100644
--- a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
+++ b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp
@@ -79,7 +79,7 @@ struct DocsumFixture : IDocsumStore, GetDocsumsStateCallback {
void FillSummaryFeatures(GetDocsumsState *, IDocsumEnvironment *) override { }
void FillRankFeatures(GetDocsumsState *, IDocsumEnvironment *) override { }
void ParseLocation(GetDocsumsState *) override { }
- const MatchingElements& fill_matching_elements() override { abort(); }
+ std::unique_ptr<MatchingElements> fill_matching_elements() override { abort(); }
};
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp
index d78c908fa6a..7a609f2c971 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp
@@ -26,7 +26,7 @@ GetDocsumsState::GetDocsumsState(GetDocsumsStateCallback &callback)
_summaryFeatures(NULL),
_summaryFeaturesCached(false),
_rankFeatures(NULL),
- _matching_elements(nullptr)
+ _matching_elements()
{
_dynteaser._docid = static_cast<uint32_t>(-1);
_dynteaser._input = static_cast<uint32_t>(-1);
@@ -52,8 +52,8 @@ GetDocsumsState::~GetDocsumsState()
const MatchingElements &
GetDocsumsState::get_matching_elements()
{
- if (_matching_elements == nullptr) {
- _matching_elements = &_callback.fill_matching_elements();
+ if (!_matching_elements) {
+ _matching_elements = _callback.fill_matching_elements();
}
return *_matching_elements;
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h
index 394913d3ad9..9eec51e3459 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h
@@ -32,7 +32,7 @@ public:
virtual void FillSummaryFeatures(GetDocsumsState * state, IDocsumEnvironment * env) = 0;
virtual void FillRankFeatures(GetDocsumsState * state, IDocsumEnvironment * env) = 0;
virtual void ParseLocation(GetDocsumsState * state) = 0;
- virtual const MatchingElements& fill_matching_elements() = 0;
+ virtual std::unique_ptr<MatchingElements> fill_matching_elements() = 0;
virtual ~GetDocsumsStateCallback(void) { }
GetDocsumsStateCallback(const GetDocsumsStateCallback &) = delete;
GetDocsumsStateCallback & operator = (const GetDocsumsStateCallback &) = delete;
@@ -87,7 +87,7 @@ public:
FeatureSet::SP _rankFeatures;
// Used by AttributeCombinerDFW when filtering is enabled
- const search::MatchingElements* _matching_elements;
+ std::unique_ptr<search::MatchingElements> _matching_elements;
GetDocsumsState(const GetDocsumsState &) = delete;
GetDocsumsState& operator=(const GetDocsumsState &) = delete;
diff --git a/vsm/src/vespa/vsm/vsm/vsm-adapter.cpp b/vsm/src/vespa/vsm/vsm/vsm-adapter.cpp
index 6f9e58f8718..8a480419aa5 100644
--- a/vsm/src/vespa/vsm/vsm/vsm-adapter.cpp
+++ b/vsm/src/vespa/vsm/vsm/vsm-adapter.cpp
@@ -16,8 +16,7 @@ namespace vsm {
GetDocsumsStateCallback::GetDocsumsStateCallback() :
_summaryFeatures(),
- _rankFeatures(),
- _matching_elements()
+ _rankFeatures()
{ }
void GetDocsumsStateCallback::FillSummaryFeatures(GetDocsumsState * state, IDocsumEnvironment * env)
@@ -48,13 +47,10 @@ void GetDocsumsStateCallback::FillDocumentLocations(GetDocsumsState *state, IDoc
(void) env;
}
-const MatchingElements&
+std::unique_ptr<MatchingElements>
GetDocsumsStateCallback::fill_matching_elements()
{
- if (!_matching_elements) {
- _matching_elements = std::make_unique<MatchingElements>();
- }
- return *_matching_elements;
+ return std::make_unique<MatchingElements>();
}
GetDocsumsStateCallback::~GetDocsumsStateCallback() = default;
diff --git a/vsm/src/vespa/vsm/vsm/vsm-adapter.h b/vsm/src/vespa/vsm/vsm/vsm-adapter.h
index aaa73f4ba24..2a5b1e1d47c 100644
--- a/vsm/src/vespa/vsm/vsm/vsm-adapter.h
+++ b/vsm/src/vespa/vsm/vsm/vsm-adapter.h
@@ -32,7 +32,6 @@ class GetDocsumsStateCallback : public search::docsummary::GetDocsumsStateCallba
private:
search::FeatureSet::SP _summaryFeatures;
search::FeatureSet::SP _rankFeatures;
- std::unique_ptr<search::MatchingElements> _matching_elements;
public:
GetDocsumsStateCallback();
@@ -40,7 +39,7 @@ public:
void FillRankFeatures(GetDocsumsState * state, IDocsumEnvironment * env) override;
void ParseLocation(GetDocsumsState * state) override;
virtual void FillDocumentLocations(GetDocsumsState * state, IDocsumEnvironment * env);
- virtual const search::MatchingElements& fill_matching_elements() override;
+ virtual std::unique_ptr<search::MatchingElements> fill_matching_elements() override;
void setSummaryFeatures(const search::FeatureSet::SP & sf) { _summaryFeatures = sf; }
void setRankFeatures(const search::FeatureSet::SP & rf) { _rankFeatures = rf; }
~GetDocsumsStateCallback();