MCPcopy Create free account
hub / github.com/cloudnative-pg/cloudnative-pg / TryGetPgStatWAL

Method TryGetPgStatWAL

pkg/management/postgres/probes.go:601–665  ·  view source on GitHub ↗

TryGetPgStatWAL retrieves pg_stat_wal on pg version 14 and further

()

Source from the content-addressed store, hash-verified

599
600// TryGetPgStatWAL retrieves pg_stat_wal on pg version 14 and further
601func (instance *Instance) TryGetPgStatWAL() (*PgStatWal, error) {
602 version, err := instance.GetPgVersion()
603 if err != nil || version.Major() < 14 {
604 return nil, err
605 }
606
607 db, err := instance.GetMetricsDB("postgres")
608 if err != nil {
609 return nil, err
610 }
611
612 // Since PostgreSQL 18, `wal_write`, `wal_sync`, `wal_write_time` and
613 // `wal_sync_time` have been removed.
614 // See https://github.com/postgres/postgres/commit/2421e9a51d20bb83154e54a16ce628f9249fa907
615 var pgWalStat PgStatWal
616 if version.Major() < 18 {
617 row := db.QueryRow(
618 `SELECT
619 wal_records,
620 wal_fpi,
621 wal_bytes,
622 wal_buffers_full,
623 wal_write,
624 wal_sync,
625 wal_write_time,
626 wal_sync_time,
627 stats_reset
628 FROM pg_catalog.pg_stat_wal`)
629 if err := row.Scan(
630 &pgWalStat.WalRecords,
631 &pgWalStat.WalFpi,
632 &pgWalStat.WalBytes,
633 &pgWalStat.WALBuffersFull,
634 &pgWalStat.WalWrite,
635 &pgWalStat.WalSync,
636 &pgWalStat.WalWriteTime,
637 &pgWalStat.WalSyncTime,
638 &pgWalStat.StatsReset,
639 ); err != nil {
640 return nil, EnrichMetricsConnError(err)
641 }
642 }
643
644 if version.Major() >= 18 {
645 row := db.QueryRow(
646 `SELECT
647 wal_records,
648 wal_fpi,
649 wal_bytes,
650 wal_buffers_full,
651 stats_reset
652 FROM pg_catalog.pg_stat_wal`)
653 if err := row.Scan(
654 &pgWalStat.WalRecords,
655 &pgWalStat.WalFpi,
656 &pgWalStat.WalBytes,
657 &pgWalStat.WALBuffersFull,
658 &pgWalStat.StatsReset,

Callers 1

collectPGStatWALFunction · 0.80

Calls 3

GetPgVersionMethod · 0.95
GetMetricsDBMethod · 0.95
EnrichMetricsConnErrorFunction · 0.85

Tested by

no test coverage detected