1 // This file contains the library routines for managing the
2 // table_io_waits_by_table table.
12 root@localhost [i_s]> show create table i_s\G
13 *************************** 1. row ***************************
14 CREATE TEMPORARY TABLE `PROCESSLIST` (
15 `ID` bigint(21) unsigned NOT NULL DEFAULT '0',
16 `USER` varchar(16) NOT NULL DEFAULT '',
17 `HOST` varchar(64) NOT NULL DEFAULT '',
18 `DB` varchar(64) DEFAULT NULL, `COMMAND` varchar(16) NOT NULL DEFAULT '', `TIME` int(7) NOT NULL DEFAULT '0', `STATE` varchar(64) DEFAULT NULL,
20 ) ENGINE=MyISAM DEFAULT CHARSET=utf8
21 1 row in set (0.02 sec)
24 // a row from information_schema.processlist
25 type table_row struct {
35 type table_rows []table_row
37 // get the output of I_S.PROCESSLIST
38 func select_processlist(dbh *sql.DB) table_rows {
41 var user sql.NullString
42 var host sql.NullString
44 var command sql.NullString
45 var time sql.NullInt64
46 var state sql.NullString
47 var info sql.NullString
49 // we collect all information even if it's mainly empty as we may reference it later
51 sql := "SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM INFORMATION_SCHEMA.PROCESSLIST"
53 rows, err := dbh.Query(sql)
72 r.ID = uint64(id.Int64)
78 r.COMMAND = command.String
79 r.TIME = uint64(time.Int64)
81 r.STATE = state.String
86 if err := rows.Err(); err != nil {
93 // describe a whole row
94 func (r table_row) String() string {
95 return fmt.Sprintf("FIXME otuput of i_s")
98 // describe a whole table
99 func (t table_rows) String() string {
100 return fmt.Sprintf("FIXME otuput of i_s")