Files
percona-toolkit/src/go/pt-pg-summary/models/tableaccess.xo.go
2019-09-03 15:26:26 -03:00

56 lines
1.1 KiB
Go

// Package models contains the types for schema 'public'.
package models
// Code generated by xo. DO NOT EDIT.
import (
"database/sql"
)
// Table Access
type TableAccess struct {
Relname string // relname
Relkind string // relkind
Datname string // datname
Count sql.NullInt64 // count
}
// GetTableAccesses runs a custom query, returning results as TableAccess.
func GetTableAccesses(db XODB) ([]*TableAccess, error) {
var err error
// sql query
var sqlstr = `SELECT c.relname, c.relkind, b.datname, count(*) FROM pg_locks a ` +
`JOIN pg_stat_database b ` +
`ON a.database=b.datid ` +
`JOIN pg_class c ` +
`ON a.relation=c.oid ` +
`WHERE a.relation IS NOT NULL ` +
`AND a.database IS NOT NULL ` +
`GROUP BY 1,2,3`
// run query
XOLog(sqlstr)
q, err := db.Query(sqlstr)
if err != nil {
return nil, err
}
defer q.Close()
// load results
res := []*TableAccess{}
for q.Next() {
ta := TableAccess{}
// scan
err = q.Scan(&ta.Relname, &ta.Relkind, &ta.Datname, &ta.Count)
if err != nil {
return nil, err
}
res = append(res, &ta)
}
return res, nil
}