Skip to content

Commit

Permalink
SQL: Fixes issues with showing value column name prefix in legends (#…
Browse files Browse the repository at this point in the history
…35839)

* rename strategy

* Update pkg/tsdb/sqleng/sql_engine.go

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>

* more strict constraints

* Fixed so that it works on multi series results

* only apply the logic when original query returns 3 fields

* removed part of comment

* Update mysql test

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
(cherry picked from commit 1d6e99b)
  • Loading branch information
ryantxu authored and grafanabot committed Jun 18, 2021
1 parent 1f65d8a commit 51ed718
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 4 deletions.
4 changes: 2 additions & 2 deletions pkg/tsdb/mysql/mysql_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -732,8 +732,8 @@ func TestMySQL(t *testing.T) {
frames, _ := queryResult.Dataframes.Decoded()
require.Len(t, frames, 1)
require.Len(t, frames[0].Fields, 3)
require.Equal(t, data.Labels{"metric": "Metric A - value one"}, frames[0].Fields[1].Labels)
require.Equal(t, data.Labels{"metric": "Metric B - value one"}, frames[0].Fields[2].Labels)
require.Equal(t, "Metric A - value one", frames[0].Fields[1].Name)
require.Equal(t, "Metric B - value one", frames[0].Fields[2].Name)
})

t.Run("When doing a metric query with metric column and multiple value columns", func(t *testing.T) {
Expand Down
4 changes: 2 additions & 2 deletions pkg/tsdb/postgres/postgres_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -795,8 +795,8 @@ func TestPostgres(t *testing.T) {
frames, _ := queryResult.Dataframes.Decoded()
require.Equal(t, 1, len(frames))
require.Equal(t, 3, len(frames[0].Fields))
require.Equal(t, data.Labels{"metric": "Metric A - value one"}, frames[0].Fields[1].Labels)
require.Equal(t, data.Labels{"metric": "Metric B - value one"}, frames[0].Fields[2].Labels)
require.Equal(t, "Metric A - value one", frames[0].Fields[1].Name)
require.Equal(t, "Metric B - value one", frames[0].Fields[2].Name)
})

t.Run("When doing a metric query with metric column and multiple value columns", func(t *testing.T) {
Expand Down
16 changes: 16 additions & 0 deletions pkg/tsdb/sqleng/sql_engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -298,11 +298,27 @@ func (e *dataPlugin) executeQuery(query plugins.DataSubQuery, wg *sync.WaitGroup
tsSchema := frame.TimeSeriesSchema()
if tsSchema.Type == data.TimeSeriesTypeLong {
var err error
originalData := frame
frame, err = data.LongToWide(frame, qm.FillMissing)
if err != nil {
errAppendDebug("failed to convert long to wide series when converting from dataframe", err, interpolatedQuery)
return
}

// Before 8x, a special metric column was used to name time series. The LongToWide transforms that into a metric label on the value field.
// But that makes series name have both the value column name AND the metric name. So here we are removing the metric label here and moving it to the
// field name to get the same naming for the series as pre v8
if len(originalData.Fields) == 3 {
for _, field := range frame.Fields {
if len(field.Labels) == 1 { // 7x only supported one label
name, ok := field.Labels["metric"]
if ok {
field.Name = name
field.Labels = nil
}
}
}
}
}
if qm.FillMissing != nil {
var err error
Expand Down

0 comments on commit 51ed718

Please sign in to comment.