@@ -18,6 +18,7 @@ import (
18
18
"database/sql"
19
19
20
20
"github.com/go-kit/log"
21
+ "github.com/lib/pq"
21
22
"github.com/prometheus/client_golang/prometheus"
22
23
)
23
24
@@ -82,22 +83,22 @@ func (PGProcessIdleCollector) Update(ctx context.Context, instance *instance, ch
82
83
GROUP BY 1, 2, 3;` )
83
84
84
85
var applicationName sql.NullString
85
- var secondsSum sql.NullInt64
86
+ var secondsSum sql.NullFloat64
86
87
var secondsCount sql.NullInt64
87
- var seconds []uint64
88
- var secondsBucket []uint64
88
+ var seconds []float64
89
+ var secondsBucket []int64
89
90
90
- err := row .Scan (& applicationName , & secondsSum , & secondsCount , & seconds , & secondsBucket )
91
+ err := row .Scan (& applicationName , & secondsSum , & secondsCount , pq .Array (& seconds ), pq .Array (& secondsBucket ))
92
+ if err != nil {
93
+ return err
94
+ }
91
95
92
96
var buckets = make (map [float64 ]uint64 , len (seconds ))
93
97
for i , second := range seconds {
94
98
if i >= len (secondsBucket ) {
95
99
break
96
100
}
97
- buckets [float64 (second )] = secondsBucket [i ]
98
- }
99
- if err != nil {
100
- return err
101
+ buckets [second ] = uint64 (secondsBucket [i ])
101
102
}
102
103
103
104
applicationNameLabel := "unknown"
@@ -111,7 +112,7 @@ func (PGProcessIdleCollector) Update(ctx context.Context, instance *instance, ch
111
112
}
112
113
secondsSumMetric := 0.0
113
114
if secondsSum .Valid {
114
- secondsSumMetric = float64 ( secondsSum .Int64 )
115
+ secondsSumMetric = secondsSum .Float64
115
116
}
116
117
ch <- prometheus .MustNewConstHistogram (
117
118
pgProcessIdleSeconds ,
0 commit comments