From 4b1397d61f8615add1eb42d132102c123d3bb19c Mon Sep 17 00:00:00 2001 From: Nikolai Vaganov <electron17@yandex.ru> Date: Mon, 23 Sep 2024 23:18:25 +0300 Subject: [PATCH] fix converting NULL to uint64 is unsupported in size table Signed-off-by: Nikolai Vaganov <electron17@yandex.ru> --- collector/pg_wal.go | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/collector/pg_wal.go b/collector/pg_wal.go index afa8fcef..4cbb1793 100644 --- a/collector/pg_wal.go +++ b/collector/pg_wal.go @@ -15,7 +15,7 @@ package collector import ( "context" - + "database/sql" "github.com/prometheus/client_golang/prometheus" ) @@ -66,19 +66,34 @@ func (c PGWALCollector) Update(ctx context.Context, instance *instance, ch chan< pgWALQuery, ) - var segments uint64 - var size uint64 + var segments sql.NullInt64 + var size sql.NullInt64 err := row.Scan(&segments, &size) if err != nil { return err } + + var segmentsValue float64 + if segments.Valid { + segmentsValue = float64(segments.Int64) + } else { + segmentsValue = 0 + } + + var sizeValue float64 + if size.Valid { + sizeValue = float64(size.Int64) + } else { + sizeValue = 0 + } + ch <- prometheus.MustNewConstMetric( pgWALSegments, - prometheus.GaugeValue, float64(segments), + prometheus.GaugeValue, segmentsValue, ) ch <- prometheus.MustNewConstMetric( pgWALSize, - prometheus.GaugeValue, float64(size), + prometheus.GaugeValue, sizeValue, ) return nil }