in internal/sqlcollector/sqlcollector_v1.go [87:120]
func (c *V1) executeSQL(ctx context.Context, query string) ([][]any, error) {
err := c.dbConn.PingContext(ctx)
if err != nil {
return nil, err
}
// Execute query
rows, err := c.dbConn.QueryContext(ctx, query)
if err != nil {
return nil, err
}
defer rows.Close()
cols, err := rows.Columns()
if err != nil {
return nil, err
}
width := len(cols)
var res [][]any
// Iterate through the result set.
for rows.Next() {
row := make([]any, width)
ptrs := make([]any, width)
for i := range row {
ptrs[i] = &row[i]
}
if err := rows.Scan(ptrs...); err != nil {
return nil, err
}
res = append(res, row)
}
return res, nil
}