github.com/netdata/go.d.plugin@v0.58.1/modules/postgres/do_query_indexes.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package postgres 4 5 import ( 6 "database/sql" 7 ) 8 9 func (p *Postgres) doQueryIndexesMetrics() error { 10 if err := p.doQueryStatUserIndexes(); err != nil { 11 return err 12 } 13 14 return nil 15 } 16 17 func (p *Postgres) doQueryStatUserIndexes() error { 18 if err := p.doDBQueryStatUserIndexes(p.db); err != nil { 19 p.Warning(err) 20 } 21 for _, conn := range p.dbConns { 22 if conn.db == nil { 23 continue 24 } 25 if err := p.doDBQueryStatUserIndexes(conn.db); err != nil { 26 p.Warning(err) 27 } 28 } 29 return nil 30 } 31 32 func (p *Postgres) doDBQueryStatUserIndexes(db *sql.DB) error { 33 q := queryStatUserIndexes() 34 35 var dbname, schema, table, name string 36 return p.doDBQuery(db, q, func(column, value string, _ bool) { 37 switch column { 38 case "datname": 39 dbname = value 40 case "schemaname": 41 schema = value 42 case "relname": 43 table = value 44 case "indexrelname": 45 name = value 46 p.getIndexMetrics(name, table, dbname, schema).updated = true 47 case "parent_relname": 48 p.getIndexMetrics(name, table, dbname, schema).parentTable = value 49 case "idx_scan": 50 p.getIndexMetrics(name, table, dbname, schema).idxScan = parseInt(value) 51 case "idx_tup_read": 52 p.getIndexMetrics(name, table, dbname, schema).idxTupRead = parseInt(value) 53 case "idx_tup_fetch": 54 p.getIndexMetrics(name, table, dbname, schema).idxTupFetch = parseInt(value) 55 case "size": 56 p.getIndexMetrics(name, table, dbname, schema).size = parseInt(value) 57 } 58 }) 59 }