From f00e9978b3fd190b7f226d6db6534ad233e9e72e Mon Sep 17 00:00:00 2001 From: Sven Grossmann Date: Wed, 11 Sep 2024 10:42:06 +0200 Subject: [PATCH 1/2] fix(detected_fields): always return empty array as `null` --- pkg/querier/querier.go | 7 +++++-- pkg/storage/detected/fields.go | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/querier/querier.go b/pkg/querier/querier.go index 2046763e6973..997a4bf7731c 100644 --- a/pkg/querier/querier.go +++ b/pkg/querier/querier.go @@ -1113,13 +1113,16 @@ func (q *SingleTenantQuerier) DetectedFields(ctx context.Context, req *logproto. level.Warn(q.logger).Log("msg", "failed to marshal hyperloglog sketch", "err", err) continue } - + p := v.parsers + if len(p) == 0 { + p = nil + } fields[fieldCount] = &logproto.DetectedField{ Label: k, Type: v.fieldType, Cardinality: v.Estimate(), Sketch: sketch, - Parsers: v.parsers, + Parsers: p, } fieldCount++ diff --git a/pkg/storage/detected/fields.go b/pkg/storage/detected/fields.go index 9d6a699bc1e1..8dd9dd1a1512 100644 --- a/pkg/storage/detected/fields.go +++ b/pkg/storage/detected/fields.go @@ -44,6 +44,9 @@ func (f *UnmarshaledDetectedField) Merge(df *logproto.DetectedField) error { f.Parsers = append(f.Parsers, df.Parsers...) slices.Sort(f.Parsers) f.Parsers = slices.Compact(f.Parsers) + if len(f.Parsers) == 0 { + f.Parsers = nil + } return f.Sketch.Merge(sketch) } From 89fde6d6a18f09e4a3b9d4a1984c376c8c59702c Mon Sep 17 00:00:00 2001 From: Sven Grossmann Date: Wed, 11 Sep 2024 14:08:43 +0200 Subject: [PATCH 2/2] fix test --- pkg/querier/querier_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/querier/querier_test.go b/pkg/querier/querier_test.go index 6bb83b453906..eb8b8c3a9754 100644 --- a/pkg/querier/querier_test.go +++ b/pkg/querier/querier_test.go @@ -1959,8 +1959,8 @@ func TestQuerier_DetectedFields(t *testing.T) { assert.Equal(t, []string{"logfmt"}, durationField.Parsers) assert.Equal(t, []string{"logfmt"}, floatField.Parsers) assert.Equal(t, []string{"logfmt"}, evenField.Parsers) - assert.Equal(t, []string{}, constantField.Parsers) - assert.Equal(t, []string{}, variableField.Parsers) + assert.Equal(t, []string(nil), constantField.Parsers) + assert.Equal(t, []string(nil), variableField.Parsers) }, )