diff options
3 files changed, 8 insertions, 7 deletions
diff --git a/searchcommon/src/vespa/searchcommon/common/undefinedvalues.h b/searchcommon/src/vespa/searchcommon/common/undefinedvalues.h index 478cc680ea0..3185cad34bd 100644 --- a/searchcommon/src/vespa/searchcommon/common/undefinedvalues.h +++ b/searchcommon/src/vespa/searchcommon/common/undefinedvalues.h @@ -11,17 +11,17 @@ namespace attribute { // for all integers template <typename T> -T getUndefined() { +constexpr T getUndefined() { return std::numeric_limits<T>::min(); } template <> -inline float getUndefined<float>() { +inline constexpr float getUndefined<float>() { return -std::numeric_limits<float>::quiet_NaN(); } template <> -inline double getUndefined<double>() { +inline constexpr double getUndefined<double>() { return -std::numeric_limits<double>::quiet_NaN(); } diff --git a/searchlib/src/tests/grouping/grouping_test.cpp b/searchlib/src/tests/grouping/grouping_test.cpp index 084f13795f7..fea18619ef9 100644 --- a/searchlib/src/tests/grouping/grouping_test.cpp +++ b/searchlib/src/tests/grouping/grouping_test.cpp @@ -1930,10 +1930,10 @@ Test::testAttributeMapLookup() ctx.add(StringAttrBuilder("key3").add("k3").add("k2").sp()); testAggregationSimple(ctx, SumAggregationResult(), Int64ResultNode(10 + undefinedInteger), "smap{\"k1\"}.weight"); testAggregationSimple(ctx, SumAggregationResult(), Int64ResultNode(20 + undefinedInteger), "smap{\"k2\"}.weight"); - testAggregationSimple(ctx, SumAggregationResult(), Int64ResultNode(2 * undefinedInteger), "smap{\"k5\"}.weight"); + testAggregationSimple(ctx, SumAggregationResult(), Int64ResultNode(0), "smap{\"k5\"}.weight"); testAggregationSimple(ctx, SumAggregationResult(), Int64ResultNode(210), "smap{attribute(key1)}.weight"); testAggregationSimple(ctx, SumAggregationResult(), Int64ResultNode(120), "smap{attribute(key2)}.weight"); - testAggregationSimple(ctx, SumAggregationResult(), Int64ResultNode(2 * undefinedInteger), "smap{attribute(key3)}.weight"); + testAggregationSimple(ctx, SumAggregationResult(), Int64ResultNode(0), "smap{attribute(key3)}.weight"); testAggregationSimple(ctx, MinAggregationResult(), Int64ResultNode(10), "smap{attribute(key1)}.weight"); testAggregationSimple(ctx, MinAggregationResult(), Int64ResultNode(20), "smap{attribute(key2)}.weight"); testAggregationSimple(ctx, MaxAggregationResult(), Int64ResultNode(200), "smap{attribute(key1)}.weight"); diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp index 6679c88e166..4e3540fb573 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp @@ -3,6 +3,7 @@ #include "docsumwriter.h" #include "docsumstate.h" #include "docsum_field_writer_state.h" +#include <vespa/searchcommon/common/undefinedvalues.h> #include <vespa/searchlib/common/transport.h> #include <vespa/searchlib/util/slime_output_raw_buf_adapter.h> #include <vespa/searchlib/attribute/iattributemanager.h> @@ -78,8 +79,8 @@ DynamicDocsumWriter::resolveInputClass(ResolveClassInfo &rci, uint32_t id) const } } -constexpr uint32_t default_32bits_int = (uint32_t)std::numeric_limits<int32_t>::min(); -constexpr uint64_t default_64bits_int = (uint64_t)std::numeric_limits<int64_t>::min(); +constexpr uint32_t default_32bits_int = search::attribute::getUndefined<int32_t>(); +constexpr uint64_t default_64bits_int = search::attribute::getUndefined<int64_t>(); static void convertEntry(GetDocsumsState *state, const ResConfigEntry *resCfg, |