@@ -62,14 +62,23 @@ func (ds *sqldatasource) storeDBConnection(key string, dbConn dbConnection) {
62
62
ds .dbConnections .Store (key , dbConn )
63
63
}
64
64
65
+ func getDatasourceUID (settings backend.DataSourceInstanceSettings ) string {
66
+ datasourceUID := settings .UID
67
+ // Grafana < 8.0 won't include the UID yet
68
+ if datasourceUID == "" {
69
+ datasourceUID = fmt .Sprintf ("%d" , settings .ID )
70
+ }
71
+ return datasourceUID
72
+ }
73
+
65
74
// NewDatasource creates a new `sqldatasource`.
66
75
// It uses the provided settings argument to call the ds.Driver to connect to the SQL server
67
76
func (ds * sqldatasource ) NewDatasource (settings backend.DataSourceInstanceSettings ) (instancemgmt.Instance , error ) {
68
77
db , err := ds .c .Connect (settings , nil )
69
78
if err != nil {
70
79
return nil , err
71
80
}
72
- key := defaultKey (settings . UID )
81
+ key := defaultKey (getDatasourceUID ( settings ) )
73
82
ds .storeDBConnection (key , dbConnection {db , settings })
74
83
75
84
mux := http .NewServeMux ()
@@ -115,7 +124,7 @@ func (ds *sqldatasource) QueryData(ctx context.Context, req *backend.QueryDataRe
115
124
// Execute each query and store the results by query RefID
116
125
for _ , q := range req .Queries {
117
126
go func (query backend.DataQuery ) {
118
- frames , err := ds .handleQuery (ctx , query , req .PluginContext .DataSourceInstanceSettings . UID )
127
+ frames , err := ds .handleQuery (ctx , query , getDatasourceUID ( * req .PluginContext .DataSourceInstanceSettings ) )
119
128
120
129
response .Set (query .RefID , backend.DataResponse {
121
130
Frames : frames ,
0 commit comments