From 9358a557ee0eef6a5934ea16653943920c1ade00 Mon Sep 17 00:00:00 2001 From: Kyle Brandt Date: Tue, 1 Apr 2025 09:43:36 -0400 Subject: [PATCH] Graphite: Add frame type to work with SQL expressions (#103019) - Add frame type So SQL expressions knows how to convert it - No FrameType version so how other expressions do not change how they handle it, and continue to catch the special graphite handling in SSE convert --- pkg/tsdb/graphite/graphite.go | 3 ++- pkg/tsdb/graphite/graphite_test.go | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/pkg/tsdb/graphite/graphite.go b/pkg/tsdb/graphite/graphite.go index e227e480d7e..6483689b8cb 100644 --- a/pkg/tsdb/graphite/graphite.go +++ b/pkg/tsdb/graphite/graphite.go @@ -315,7 +315,8 @@ func (s *Service) toDataFrames(logger log.Logger, response *http.Response, origR frames = append(frames, data.NewFrame(refId, data.NewField("time", nil, timeVector), - data.NewField("value", tags, values).SetConfig(&data.FieldConfig{DisplayNameFromDS: target}))) + data.NewField("value", tags, values).SetConfig(&data.FieldConfig{DisplayNameFromDS: target})).SetMeta( + &data.FrameMeta{Type: data.FrameTypeTimeSeriesMulti})) if setting.Env == setting.Dev { logger.Debug("Graphite response", "target", series.Target, "datapoints", len(series.DataPoints)) diff --git a/pkg/tsdb/graphite/graphite_test.go b/pkg/tsdb/graphite/graphite_test.go index e5946ac5cd3..5f9a97d815f 100644 --- a/pkg/tsdb/graphite/graphite_test.go +++ b/pkg/tsdb/graphite/graphite_test.go @@ -226,7 +226,7 @@ func TestConvertResponses(t *testing.T) { expectedFrame := data.NewFrame("A", data.NewField("time", nil, []time.Time{time.Unix(1, 0).UTC(), time.Unix(2, 0).UTC(), time.Unix(3, 0).UTC()}), data.NewField("value", data.Labels{}, []*float64{&a, nil, &b}).SetConfig(&data.FieldConfig{DisplayNameFromDS: "target"}), - ) + ).SetMeta(&data.FrameMeta{Type: data.FrameTypeTimeSeriesMulti}) expectedFrames := data.Frames{expectedFrame} httpResponse := &http.Response{StatusCode: 200, Body: io.NopCloser(strings.NewReader(body))} @@ -259,7 +259,7 @@ func TestConvertResponses(t *testing.T) { "int": "100", "float": "3.14", }, []*float64{&a, nil, &b}).SetConfig(&data.FieldConfig{DisplayNameFromDS: "target"}), - ) + ).SetMeta(&data.FrameMeta{Type: data.FrameTypeTimeSeriesMulti}) expectedFrames := data.Frames{expectedFrame} httpResponse := &http.Response{StatusCode: 200, Body: io.NopCloser(strings.NewReader(body))} @@ -290,11 +290,11 @@ func TestConvertResponses(t *testing.T) { expectedFrameA := data.NewFrame("A", data.NewField("time", nil, []time.Time{time.Unix(1, 0).UTC(), time.Unix(2, 0).UTC(), time.Unix(3, 0).UTC()}), data.NewField("value", data.Labels{}, []*float64{&a, nil, &b}).SetConfig(&data.FieldConfig{DisplayNameFromDS: "target 1"}), - ) + ).SetMeta(&data.FrameMeta{Type: data.FrameTypeTimeSeriesMulti}) expectedFrameB := data.NewFrame("B", data.NewField("time", nil, []time.Time{time.Unix(1, 0).UTC(), time.Unix(2, 0).UTC(), time.Unix(3, 0).UTC()}), data.NewField("value", data.Labels{}, []*float64{&a, nil, &b}).SetConfig(&data.FieldConfig{DisplayNameFromDS: "target 2"}), - ) + ).SetMeta(&data.FrameMeta{Type: data.FrameTypeTimeSeriesMulti}) expectedFrames := data.Frames{expectedFrameA, expectedFrameB} httpResponse := &http.Response{StatusCode: 200, Body: io.NopCloser(strings.NewReader(body))} @@ -321,7 +321,7 @@ func TestConvertResponses(t *testing.T) { expectedFrame := data.NewFrame("A A", data.NewField("time", nil, []time.Time{time.Unix(1, 0).UTC(), time.Unix(2, 0).UTC(), time.Unix(3, 0).UTC()}), data.NewField("value", data.Labels{}, []*float64{&a, nil, &b}).SetConfig(&data.FieldConfig{DisplayNameFromDS: "target"}), - ) + ).SetMeta(&data.FrameMeta{Type: data.FrameTypeTimeSeriesMulti}) expectedFrames := data.Frames{expectedFrame} httpResponse := &http.Response{StatusCode: 200, Body: io.NopCloser(strings.NewReader(body))}