Skip to content

Commit 22155b0

Browse files
authored
Merge pull request #4 from mackerelio/supported-version-mysql57-or-more
Supported version MySQL 5.7 or more
2 parents c5210bc + eab517b commit 22155b0

3 files changed

Lines changed: 196 additions & 189 deletions

File tree

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,6 @@ mackerel-plugin-mysql [-host=<host>] [-port=<port>] [-username=<username>] [-pas
1616
command = "/path/to/mackerel-plugin-mysql"
1717
```
1818

19+
## Supported MySQL version
20+
21+
mysql 5.7, 8.0 and above

lib/mysql.go

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -231,29 +231,13 @@ func (m *MySQLPlugin) fetchShowInnodbStatus(db *sql.DB, stat map[string]float64)
231231
}
232232
defer rows.Close()
233233

234-
columns, err := rows.Columns()
235-
if err != nil {
236-
return fmt.Errorf("FetchMetrics (fetchShowInnodbStatus): error: %w", err)
237-
}
238-
239-
// when mysql 5.0, return result 1 column.
240-
// when more than mysql 5.1, return result 3 columns.
241-
count := len(columns)
242-
scanner := make([]interface{}, count)
243-
scannerPtr := make([]interface{}, count)
244-
for i := range columns {
245-
scannerPtr[i] = &scanner[i]
246-
}
247-
248234
for rows.Next() {
249-
if err := rows.Scan(scannerPtr...); err != nil {
235+
var status string
236+
if err = rows.Scan(trashScanner{}, trashScanner{}, &status); err != nil {
250237
return fmt.Errorf("FetchMetrics (fetchShowInnodbStatus): error: %w", err)
251238
}
252239

253-
c, ok := scanner[count-1].([]byte)
254-
if ok {
255-
parseInnodbStatus(string(c), stat)
256-
}
240+
parseInnodbStatus(status, stat)
257241
}
258242
return nil
259243
}
@@ -411,6 +395,15 @@ func (m *MySQLPlugin) FetchMetrics() (map[string]float64, error) {
411395
}
412396
defer db.Close()
413397

398+
v, err := m.fetchVersion(db)
399+
if err != nil {
400+
log.Println(err)
401+
} else {
402+
if v[0] < 5 || v[0] == 5 && v[1] < 7 {
403+
log.Fatalln("This mysql server version is not supported.")
404+
}
405+
}
406+
414407
stat := make(map[string]float64)
415408
err = m.fetchShowStatus(db, stat)
416409
if err != nil {

0 commit comments

Comments
 (0)