diff options
author | Tor Egge <Tor.Egge@oath.com> | 2018-06-08 11:35:14 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@oath.com> | 2018-06-08 11:35:14 +0000 |
commit | 23dc7db626daef98536095f2b399fe084a7a74bb (patch) | |
tree | b3f61b541c8a60b82d88e0f6c3adfae7f3dddd67 /searchsummary | |
parent | 87ccad88a9f9c30a9fb924d1f2e5638f8930406a (diff) |
Handle empty array of struct in attribute combiner dynamic field writer.
Diffstat (limited to 'searchsummary')
-rw-r--r-- | searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp | 7 | ||||
-rw-r--r-- | searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.cpp | 3 |
2 files changed, 7 insertions, 3 deletions
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 97fafd0a446..06b81be6d8d 100644 --- a/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp +++ b/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp @@ -94,9 +94,9 @@ struct AttributeManagerFixture AttributeManagerFixture::AttributeManagerFixture() : mgr() { - buildStringAttribute("array.name", {{"n1.1", "n1.2"}, {"n2"}, {"n3.1", "n3.2"}, {"", "n4.2"}}); - buildIntegerAttribute("array.val", BasicType::Type::INT8, {{ 10, 11}, {20, 21 }, {30}, { getUndefined<int8_t>(), 41}}); - buildFloatAttribute("array.fval", {{ 110.0}, { 120.0, 121.0 }, { 130.0, 131.0}, { getUndefined<double>(), 141.0 }}); + buildStringAttribute("array.name", {{"n1.1", "n1.2"}, {"n2"}, {"n3.1", "n3.2"}, {"", "n4.2"}, {}}); + buildIntegerAttribute("array.val", BasicType::Type::INT8, {{ 10, 11}, {20, 21 }, {30}, { getUndefined<int8_t>(), 41}, {}}); + buildFloatAttribute("array.fval", {{ 110.0}, { 120.0, 121.0 }, { 130.0, 131.0}, { getUndefined<double>(), 141.0 }, {}}); } AttributeManagerFixture::~AttributeManagerFixture() = default; @@ -210,6 +210,7 @@ TEST_F("require that attributes combiner dfw generates correct slime output for f.assertWritten("[ { fval: 120.0, name: \"n2\", val: 20}, { fval: 121.0, val: 21 }]", 2); f.assertWritten("[ { fval: 130.0, name: \"n3.1\", val: 30}, { fval: 131.0, name: \"n3.2\"} ]", 3); f.assertWritten("[ { }, { fval: 141.0, name: \"n4.2\", val: 41} ]", 4); + f.assertWritten("null", 5); } } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.cpp index 84e329f159d..0527b6a9b57 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/array_attribute_combiner_dfw.cpp @@ -54,6 +54,9 @@ ArrayAttributeFieldWriterState::insertField(uint32_t docId, vespalib::slime::Ins elems = writer->size(); } } + if (elems == 0) { + return; + } Cursor &arr = target.insertArray(); for (uint32_t idx = 0; idx < elems; ++idx) { Cursor &obj = arr.addObject(); |