@@ -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
@@ -84,20 +85,32 @@ func (PGProcessIdleCollector) Update(ctx context.Context, instance *instance, ch
84
85
var applicationName sql.NullString
85
86
var secondsSum sql.NullInt64
86
87
var secondsCount sql.NullInt64
87
- var seconds []uint64
88
- var secondsBucket []uint64
88
+ var rawSeconds []byte
89
+ var rawSecondsBucket []byte
89
90
90
- err := row .Scan (& applicationName , & secondsSum , & secondsCount , & seconds , & secondsBucket )
91
+ err := row .Scan (& applicationName , & secondsSum , & secondsCount , & rawSeconds , & rawSecondsBucket )
92
+ if err != nil {
93
+ return err
94
+ }
95
+
96
+ var seconds []float64
97
+ err = pq .Array (& seconds ).Scan (rawSeconds )
98
+ if err != nil {
99
+ return err
100
+ }
101
+
102
+ var secondsBucket []int64
103
+ err = pq .Array (& secondsBucket ).Scan (rawSecondsBucket )
104
+ if err != nil {
105
+ return err
106
+ }
91
107
92
108
var buckets = make (map [float64 ]uint64 , len (seconds ))
93
109
for i , second := range seconds {
94
110
if i >= len (secondsBucket ) {
95
111
break
96
112
}
97
- buckets [float64 (second )] = secondsBucket [i ]
98
- }
99
- if err != nil {
100
- return err
113
+ buckets [second ] = uint64 (secondsBucket [i ])
101
114
}
102
115
103
116
applicationNameLabel := "unknown"
0 commit comments