From ce2f9089bd1eb658a237ba29fcd03afadaa1af85 Mon Sep 17 00:00:00 2001
From: Michael Banck <michael.banck@credativ.de>
Date: Wed, 1 Dec 2021 10:16:37 +0100
Subject: [PATCH] Correctly set short_version for major version 10 and up.

Before, postgres_exporter reported a full three-digit semver for Postgres
versions in the pg_static metric, padding the version with a extra .0, e.g.
13.3 -> 13.3.0.

Fixes: https://github.com/prometheus-community/postgres_exporter/issues/349
Signed-off-by: Michael Banck <michael.banck@credativ.de>
---
 cmd/postgres_exporter/postgres_exporter.go | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/cmd/postgres_exporter/postgres_exporter.go b/cmd/postgres_exporter/postgres_exporter.go
index fa34eecc..8f4d57fd 100644
--- a/cmd/postgres_exporter/postgres_exporter.go
+++ b/cmd/postgres_exporter/postgres_exporter.go
@@ -653,9 +653,15 @@ func (e *Exporter) checkMapVersions(ch chan<- prometheus.Metric, server *Server)
 	versionDesc := prometheus.NewDesc(fmt.Sprintf("%s_%s", namespace, staticLabelName),
 		"Version string as reported by postgres", []string{"version", "short_version"}, server.labels)
 
+	var semanticVersionShort = semanticVersion.String()
+	if semanticVersion.GE(semver.MustParse("10.0.0")) {
+		var versionSplit = strings.Split(semanticVersion.String(), ".")
+		semanticVersionShort = versionSplit[0] + "." + versionSplit[1]
+
+	}
 	if !e.disableDefaultMetrics && server.master {
 		ch <- prometheus.MustNewConstMetric(versionDesc,
-			prometheus.UntypedValue, 1, versionString, semanticVersion.String())
+			prometheus.UntypedValue, 1, versionString, semanticVersionShort)
 	}
 	return nil
 }