Skip to main content

pg_extras/queries/
buffercache_stats.rs

1use crate::{queries::shared::Query, PgStatsVersion};
2use sqlx::{postgres::PgRow, Row};
3
4#[derive(Debug, Clone, serde::Serialize)]
5pub struct BuffercacheStats {
6    pub relname: String,
7    pub buffered: String,
8    pub buffer_percent: f64,
9    pub percent_of_relation: f64,
10}
11
12impl Query for BuffercacheStats {
13    fn new(row: &PgRow) -> Self {
14        Self {
15            relname: row.try_get("relname").unwrap_or_default(),
16            buffered: row.try_get("buffered").unwrap_or_default(),
17            buffer_percent: row.try_get("buffer_percent").unwrap_or_default(),
18            percent_of_relation: row.try_get("percent_of_relation").unwrap_or_default(),
19        }
20    }
21
22    fn to_row(&self) -> prettytable::Row {
23        row![
24            self.relname,
25            self.buffered,
26            self.buffer_percent.to_string(),
27            self.percent_of_relation.to_string()
28        ]
29    }
30
31    fn headers() -> prettytable::Row {
32        row![
33            "relname",
34            "buffered",
35            "buffer_percent",
36            "percent_of_relation"
37        ]
38    }
39
40    fn read_file(_pg_statement_version: Option<PgStatsVersion>) -> String {
41        include_str!("../sql/buffercache_stats.sql")
42            .to_string()
43            .to_string()
44    }
45}