summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-03-31 13:36:14 +0200
committerGitHub <noreply@github.com>2024-03-31 13:36:14 +0200
commitdb9492c6f691f2c1eac6e2cf960391a1a41fc381 (patch)
tree2a26ef26841e7ffc4440283d5a60dfe8901834e5
parent0f69f9df3c00ca728169d240481cc7b88b762a80 (diff)
parent930c14a264ed24a5782426315c662e5106aa55de (diff)
Merge pull request #30750 from vespa-engine/toregge/handle-attribute-tokens-dfw-for-delayed-add-attribute-aspect
Handle attribute tokens dfw for delayed add attribute aspect.
-rw-r--r--searchsummary/src/tests/docsummary/attribute_tokens_dfw/attribute_tokens_dfw_test.cpp6
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/attribute_tokens_dfw.cpp8
2 files changed, 12 insertions, 2 deletions
diff --git a/searchsummary/src/tests/docsummary/attribute_tokens_dfw/attribute_tokens_dfw_test.cpp b/searchsummary/src/tests/docsummary/attribute_tokens_dfw/attribute_tokens_dfw_test.cpp
index bac817077c4..e360c3005b8 100644
--- a/searchsummary/src/tests/docsummary/attribute_tokens_dfw/attribute_tokens_dfw_test.cpp
+++ b/searchsummary/src/tests/docsummary/attribute_tokens_dfw/attribute_tokens_dfw_test.cpp
@@ -94,4 +94,10 @@ TEST_F(AttributeTokensDFWTest, single_string)
expect_field("[ '' ]", 2);
}
+TEST_F(AttributeTokensDFWTest, missing_atribute)
+{
+ setup("delayed_add_attribute_aspect");
+ expect_field("null", 1);
+}
+
GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/attribute_tokens_dfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/attribute_tokens_dfw.cpp
index 9e0dafc5e91..e47d16b03c0 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/attribute_tokens_dfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/attribute_tokens_dfw.cpp
@@ -170,8 +170,12 @@ AttributeTokensDFW::insertField(uint32_t docid, const IDocsumStoreDocument*, Get
{
auto& field_writer_state = state._fieldWriterStates[_state_index];
if (!field_writer_state) {
- const auto& attr = *state.getAttribute(getIndex());
- field_writer_state = make_field_writer_state(attr, state.get_stash());
+ const auto attr = state.getAttribute(getIndex());
+ if (attr != nullptr) {
+ field_writer_state = make_field_writer_state(*attr, state.get_stash());
+ } else {
+ field_writer_state = &state.get_stash().create<EmptyDocsumFieldWriterState>();
+ }
}
field_writer_state->insertField(docid, target);
}