@@ -22,12 +22,12 @@ var (
22
22
MissingDBConnection = errors .New ("unable to get default db connection" )
23
23
)
24
24
25
- func defaultKey (datasourceID int64 ) string {
26
- return fmt .Sprintf ("%d -%s" , datasourceID , defaultKeySuffix )
25
+ func defaultKey (datasourceUID string ) string {
26
+ return fmt .Sprintf ("%s -%s" , datasourceUID , defaultKeySuffix )
27
27
}
28
28
29
- func keyWithConnectionArgs (datasourceID int64 , connArgs json.RawMessage ) string {
30
- return fmt .Sprintf ("%d -%s" , datasourceID , string (connArgs ))
29
+ func keyWithConnectionArgs (datasourceUID string , connArgs json.RawMessage ) string {
30
+ return fmt .Sprintf ("%s -%s" , datasourceUID , string (connArgs ))
31
31
}
32
32
33
33
type dbConnection struct {
@@ -69,7 +69,7 @@ func (ds *sqldatasource) NewDatasource(settings backend.DataSourceInstanceSettin
69
69
if err != nil {
70
70
return nil , err
71
71
}
72
- key := defaultKey (settings .ID )
72
+ key := defaultKey (settings .UID )
73
73
ds .storeDBConnection (key , dbConnection {db , settings })
74
74
75
75
mux := http .NewServeMux ()
@@ -115,7 +115,7 @@ func (ds *sqldatasource) QueryData(ctx context.Context, req *backend.QueryDataRe
115
115
// Execute each query and store the results by query RefID
116
116
for _ , q := range req .Queries {
117
117
go func (query backend.DataQuery ) {
118
- frames , err := ds .handleQuery (ctx , query )
118
+ frames , err := ds .handleQuery (ctx , query , req . PluginContext . DataSourceInstanceSettings . UID )
119
119
120
120
response .Set (query .RefID , backend.DataResponse {
121
121
Frames : frames ,
@@ -131,13 +131,13 @@ func (ds *sqldatasource) QueryData(ctx context.Context, req *backend.QueryDataRe
131
131
132
132
}
133
133
134
- func (ds * sqldatasource ) getDBConnectionFromQuery (q * Query ) (string , dbConnection , error ) {
134
+ func (ds * sqldatasource ) getDBConnectionFromQuery (q * Query , datasourceUID string ) (string , dbConnection , error ) {
135
135
if ! ds .EnableMultipleConnections && len (q .ConnectionArgs ) > 0 {
136
136
return "" , dbConnection {}, MissingMultipleConnectionsConfig
137
137
}
138
138
// The database connection may vary depending on query arguments
139
139
// The raw arguments are used as key to store the db connection in memory so they can be reused
140
- key := defaultKey (q . DatasourceID )
140
+ key := defaultKey (datasourceUID )
141
141
dbConn , ok := ds .getDBConnection (key )
142
142
if ! ok {
143
143
return "" , dbConnection {}, MissingDBConnection
@@ -146,7 +146,7 @@ func (ds *sqldatasource) getDBConnectionFromQuery(q *Query) (string, dbConnectio
146
146
return key , dbConn , nil
147
147
}
148
148
149
- key = keyWithConnectionArgs (q . DatasourceID , q .ConnectionArgs )
149
+ key = keyWithConnectionArgs (datasourceUID , q .ConnectionArgs )
150
150
if cachedConn , ok := ds .getDBConnection (key ); ok {
151
151
return key , cachedConn , nil
152
152
}
@@ -164,7 +164,7 @@ func (ds *sqldatasource) getDBConnectionFromQuery(q *Query) (string, dbConnectio
164
164
}
165
165
166
166
// handleQuery will call query, and attempt to reconnect if the query failed
167
- func (ds * sqldatasource ) handleQuery (ctx context.Context , req backend.DataQuery ) (data.Frames , error ) {
167
+ func (ds * sqldatasource ) handleQuery (ctx context.Context , req backend.DataQuery , datasourceUID string ) (data.Frames , error ) {
168
168
// Convert the backend.DataQuery into a Query object
169
169
q , err := GetQuery (req )
170
170
if err != nil {
@@ -184,7 +184,7 @@ func (ds *sqldatasource) handleQuery(ctx context.Context, req backend.DataQuery)
184
184
}
185
185
186
186
// Retrieve the database connection
187
- cacheKey , dbConn , err := ds .getDBConnectionFromQuery (q )
187
+ cacheKey , dbConn , err := ds .getDBConnectionFromQuery (q , datasourceUID )
188
188
if err != nil {
189
189
return getErrorFrameFromQuery (q ), err
190
190
}
@@ -224,7 +224,7 @@ func (ds *sqldatasource) handleQuery(ctx context.Context, req backend.DataQuery)
224
224
225
225
// CheckHealth pings the connected SQL database
226
226
func (ds * sqldatasource ) CheckHealth (ctx context.Context , req * backend.CheckHealthRequest ) (* backend.CheckHealthResult , error ) {
227
- key := defaultKey (req .PluginContext .DataSourceInstanceSettings .ID )
227
+ key := defaultKey (req .PluginContext .DataSourceInstanceSettings .UID )
228
228
dbConn , ok := ds .getDBConnection (key )
229
229
if ! ok {
230
230
return nil , MissingDBConnection
0 commit comments