Skip to content

Commit b2f5c20

Browse files
committed
fix: set ref id for data frame
1 parent c99d334 commit b2f5c20

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

pkg/plugin/datasource.go

+16-5
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,20 @@ func NewDatasource(ctx context.Context, settings backend.DataSourceInstanceSetti
3939

4040
return &Datasource{
4141
engine: engine,
42-
queries: make(map[string]string),
42+
queries: map[string]queryReq{},
4343
}, nil
4444
}
4545

46+
type queryReq struct {
47+
SQL string
48+
RefID string
49+
}
50+
4651
// Datasource is an example datasource which can respond to data queries, reports
4752
// its health and has streaming skills.
4853
type Datasource struct {
4954
engine timeplus.Engine
50-
queries map[string]string
55+
queries map[string]queryReq
5156
}
5257

5358
func (d *Datasource) QueryData(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error) {
@@ -77,7 +82,10 @@ func (d *Datasource) QueryData(ctx context.Context, req *backend.QueryDataReques
7782

7883
if isStreaming {
7984
id := uuid.NewString()
80-
d.queries[id] = q.SQL
85+
d.queries[id] = queryReq{
86+
SQL: q.SQL,
87+
RefID: query.RefID,
88+
}
8189
channel := live.Channel{
8290
Scope: live.ScopeDatasource,
8391
Namespace: req.PluginContext.DataSourceInstanceSettings.UID,
@@ -165,12 +173,12 @@ func (d *Datasource) RunStream(ctx context.Context, req *backend.RunStreamReques
165173
logger := log.DefaultLogger.FromContext(ctx)
166174

167175
path := req.Path
168-
sql, ok := d.queries[path]
176+
queryReq, ok := d.queries[path]
169177
if !ok {
170178
return nil
171179
}
172180

173-
columnTypes, ch, err := d.engine.RunQuery(ctx, sql)
181+
columnTypes, ch, err := d.engine.RunQuery(ctx, queryReq.SQL)
174182
if err != nil {
175183
return err
176184
}
@@ -193,6 +201,9 @@ func (d *Datasource) RunStream(ctx context.Context, req *backend.RunStreamReques
193201
if frame == nil {
194202
frame = data.NewFrame("response")
195203

204+
// RefID is needed for some grafana features. (e.g. Transformations -> Config from query results)
205+
frame.RefID = queryReq.RefID
206+
196207
for _, c := range columnTypes {
197208
frame.Fields = append(frame.Fields, timeplus.NewDataFieldByType(c.Name(), c.DatabaseTypeName()))
198209
}

0 commit comments

Comments
 (0)