Skip to content

Commit 78926c6

Browse files
committed
Postgres 18 changes 3/n: new fields in Checkpointer
1 parent f0815b4 commit 78926c6

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

collector/collect.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3061,13 +3061,19 @@ func (c *collector) getCheckpointer() {
30613061

30623062
q := `SELECT num_timed, num_requested, restartpoints_timed,
30633063
restartpoints_req, restartpoints_done, write_time, sync_time,
3064-
buffers_written, COALESCE(EXTRACT(EPOCH FROM stats_reset)::bigint, 0)
3064+
buffers_written, COALESCE(EXTRACT(EPOCH FROM stats_reset)::bigint, 0),
3065+
num_done, slru_written
30653066
FROM pg_stat_checkpointer`
3067+
if c.version < pgv18 { // num_done and slru_written only in pg >= v18
3068+
q = strings.Replace(q, "num_done", "0", 1)
3069+
q = strings.Replace(q, "slru_written", "0", 1)
3070+
}
30663071

30673072
var ckp pgmetrics.Checkpointer
30683073
err := c.db.QueryRowContext(ctx, q).Scan(&ckp.NumTimed, &ckp.NumRequested,
30693074
&ckp.RestartpointsTimed, &ckp.RestartpointsRequested, &ckp.RestartpointsDone,
3070-
&ckp.WriteTime, &ckp.SyncTime, &ckp.BuffersWritten, &ckp.StatsReset)
3075+
&ckp.WriteTime, &ckp.SyncTime, &ckp.BuffersWritten, &ckp.StatsReset,
3076+
&ckp.NumDone, &ckp.SLRUWritten)
30713077
if err != nil {
30723078
log.Fatalf("pg_stat_checkpointer query failed: %v", err)
30733079
}

model.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,4 +1145,7 @@ type Checkpointer struct {
11451145
SyncTime float64 `json:"sync_time"`
11461146
BuffersWritten int64 `json:"buffers_written"`
11471147
StatsReset int64 `json:"stats_reset"`
1148+
// following fields present only in schema 1.19 and later
1149+
NumDone int64 `json:"num_done,omitempty"` // pg >= v18
1150+
SLRUWritten int64 `json:"slru_written,omitempty"` // pg >= v18
11481151
}

0 commit comments

Comments
 (0)