github.com/netdata/go.d.plugin@v0.58.1/modules/postgres/do_query_columns.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package postgres 4 5 import "database/sql" 6 7 func (p *Postgres) doQueryColumns() error { 8 if err := p.doDBQueryColumns(p.db); err != nil { 9 p.Warning(err) 10 } 11 for _, conn := range p.dbConns { 12 if conn.db == nil { 13 continue 14 } 15 if err := p.doDBQueryColumns(conn.db); err != nil { 16 p.Warning(err) 17 } 18 } 19 return nil 20 } 21 22 func (p *Postgres) doDBQueryColumns(db *sql.DB) error { 23 q := queryColumnsStats() 24 25 for _, m := range p.mx.tables { 26 if m.nullColumns != nil { 27 m.nullColumns = newInt(0) 28 } 29 } 30 31 var dbname, schema, table string 32 var nullPerc int64 33 return p.doDBQuery(db, q, func(column, value string, rowEnd bool) { 34 switch column { 35 case "datname": 36 dbname = value 37 case "schemaname": 38 schema = value 39 case "relname": 40 table = value 41 case "null_percent": 42 nullPerc = parseInt(value) 43 } 44 if !rowEnd { 45 return 46 } 47 if nullPerc == 100 && p.hasTableMetrics(table, dbname, schema) { 48 v := p.getTableMetrics(table, dbname, schema) 49 if v.nullColumns == nil { 50 v.nullColumns = newInt(0) 51 } 52 *v.nullColumns++ 53 } 54 }) 55 }