diff --git a/pkg/tsdb/mysql/mysql_test.go b/pkg/tsdb/mysql/mysql_test.go index b0025ae14e7..dd848138b05 100644 --- a/pkg/tsdb/mysql/mysql_test.go +++ b/pkg/tsdb/mysql/mysql_test.go @@ -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) { diff --git a/pkg/tsdb/postgres/postgres_test.go b/pkg/tsdb/postgres/postgres_test.go index bc64256c32f..7d9ca7e739e 100644 --- a/pkg/tsdb/postgres/postgres_test.go +++ b/pkg/tsdb/postgres/postgres_test.go @@ -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) { diff --git a/pkg/tsdb/sqleng/sql_engine.go b/pkg/tsdb/sqleng/sql_engine.go index 5f8112590c7..20a23c55034 100644 --- a/pkg/tsdb/sqleng/sql_engine.go +++ b/pkg/tsdb/sqleng/sql_engine.go @@ -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