From 5ae6d94e7c428407ba1d1aa2493a3b5452c2227b Mon Sep 17 00:00:00 2001 From: Aditya <205600203+Rohilalala@users.noreply.github.com> Date: Wed, 30 Sep 2026 10:01:08 +0530 Subject: [PATCH] model: compare sample value types before equality Signed-off-by: Aditya <205600203+Rohilalala@users.noreply.github.com> --- model/value.go | 3 +++ model/value_test.go | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/model/value.go b/model/value.go index eed5c9ef3..ff2751e26 100644 --- a/model/value.go +++ b/model/value.go @@ -51,6 +51,9 @@ func (s *Sample) Equal(o *Sample) bool { if !s.Timestamp.Equal(o.Timestamp) { return false } + if (s.Histogram == nil) != (o.Histogram == nil) { + return false + } if s.Histogram != nil { return s.Histogram.Equal(o.Histogram) } diff --git a/model/value_test.go b/model/value_test.go index 1f1d8278b..57fe6c5fa 100644 --- a/model/value_test.go +++ b/model/value_test.go @@ -157,6 +157,20 @@ func TestEqualSamples(t *testing.T) { } } +func TestEqualSamplesDifferentValueTypes(t *testing.T) { + floatSample := &Sample{Value: 0} + histogramSample := &Sample{Histogram: genSampleHistogram()} + + t.Run("float receiver", func(t *testing.T) { + require.False(t, floatSample.Equal(histogramSample)) + }) + t.Run("histogram receiver", func(t *testing.T) { + require.NotPanics(t, func() { + require.False(t, histogramSample.Equal(floatSample)) + }) + }) +} + func TestScalarJSON(t *testing.T) { input := []struct { plain string