1 // This file contains the library routines for managing the
2 // table_lock_waits_summary_by_table table.
3 package table_lock_waits_summary_by_table
7 _ "github.com/go-sql-driver/mysql"
9 // "github.com/sjmudd/pstop/lib"
10 ps "github.com/sjmudd/pstop/performance_schema"
14 type Table_lock_waits_summary_by_table struct {
17 initial table_lock_waits_summary_by_table_rows // initial data for relative values
18 current table_lock_waits_summary_by_table_rows // last loaded values
19 results table_lock_waits_summary_by_table_rows // results (maybe with subtraction)
20 totals table_lock_waits_summary_by_table_row // totals of results
23 // Collect data from the db, then merge it in.
24 func (t *Table_lock_waits_summary_by_table) Collect(dbh *sql.DB) {
25 t.current = select_tlwsbt_rows(dbh)
27 if len(t.initial) == 0 && len(t.current) > 0 {
28 t.initial = make(table_lock_waits_summary_by_table_rows, len(t.current))
29 copy(t.initial, t.current)
32 // check for reload initial characteristics
33 if t.initial.needs_refresh(t.current) {
34 t.initial = make(table_lock_waits_summary_by_table_rows, len(t.current))
35 copy(t.initial, t.current)
41 func (t *Table_lock_waits_summary_by_table) make_results() {
42 // lib.Logger.Println( "- t.results set from t.current" )
43 t.results = make(table_lock_waits_summary_by_table_rows, len(t.current))
44 copy(t.results, t.current)
45 if t.WantRelativeStats() {
46 // lib.Logger.Println( "- subtracting t.initial from t.results as WantRelativeStats()" )
47 t.results.subtract(t.initial)
50 // lib.Logger.Println( "- sorting t.results" )
52 // lib.Logger.Println( "- collecting t.totals from t.results" )
53 t.totals = t.results.totals()
56 // reset the statistics to current values
57 func (t *Table_lock_waits_summary_by_table) UpdateInitialValues() {
59 t.initial = make(table_lock_waits_summary_by_table_rows, len(t.current))
60 copy(t.initial, t.current)
65 // return the headings for a table
66 func (t Table_lock_waits_summary_by_table) Headings() string {
67 var r table_lock_waits_summary_by_table_row
72 // return the rows we need for displaying
73 func (t Table_lock_waits_summary_by_table) RowContent(max_rows int) []string {
74 rows := make([]string, 0, max_rows)
76 for i := range t.results {
78 rows = append(rows, t.results[i].row_content(t.totals))
85 // return all the totals
86 func (t Table_lock_waits_summary_by_table) TotalRowContent() string {
87 return t.totals.row_content(t.totals)
90 // return an empty string of data (for filling in)
91 func (t Table_lock_waits_summary_by_table) EmptyRowContent() string {
92 var emtpy table_lock_waits_summary_by_table_row
93 return emtpy.row_content(emtpy)
96 func (t Table_lock_waits_summary_by_table) Description() string {
97 return "Locks by Table Name (table_lock_waits_summary_by_table)"