Postgres : Handle when server is in recovery
anayrat committed
Mar 9, 2018 at 20:17 UTC
79ec2dce4925688b762ea1e76187be79ad8e51ed
1 file changed
+7
-7
python.d/postgres.chart.py
+7
-7
@@ -83,8 +83,8 @@ SELECT
83
count(*) FILTER (WHERE type = 'written') AS written_wal
84
FROM
85
(SELECT wal.name,
86
- pg_{0}file_name(pg_current_{0}_{1}()),
87
- CASE WHEN wal.name > pg_{0}file_name(pg_current_{0}_{1}()) THEN 'recycled'
86
+ pg_{0}file_name(CASE pg_is_in_recovery() WHEN true THEN NULL ELSE pg_current_{0}_{1}() END ),
87
+ CASE WHEN wal.name > pg_{0}file_name(CASE pg_is_in_recovery() WHEN true THEN NULL ELSE pg_current_{0}_{1}() END ) THEN 'recycled'
88
ELSE 'written'
89
END AS type
90
FROM pg_catalog.pg_ls_dir('pg_{0}') AS wal(name)
@@ -175,12 +175,12 @@ GROUP BY application_name;
175
""",
176
STANDBY_DELTA="""
177
SELECT application_name,
178
- pg_{0}_{1}_diff(pg_current_{0}_{1}() , sent_{1}) AS sent_delta,
179
- pg_{0}_{1}_diff(pg_current_{0}_{1}() , write_{1}) AS write_delta,
180
- pg_{0}_{1}_diff(pg_current_{0}_{1}() , flush_{1}) AS flush_delta,
181
- pg_{0}_{1}_diff(pg_current_{0}_{1}() , replay_{1}) AS replay_delta
178
+ pg_{0}_{1}_diff(CASE pg_is_in_recovery() WHEN true THEN pg_last_{0}_receive_{1}() ELSE pg_current_{0}_{1}() END , sent_{1}) AS sent_delta,
179
+ pg_{0}_{1}_diff(CASE pg_is_in_recovery() WHEN true THEN pg_last_{0}_receive_{1}() ELSE pg_current_{0}_{1}() END , write_{1}) AS write_delta,
180
+ pg_{0}_{1}_diff(CASE pg_is_in_recovery() WHEN true THEN pg_last_{0}_receive_{1}() ELSE pg_current_{0}_{1}() END , flush_{1}) AS flush_delta,
181
+ pg_{0}_{1}_diff(CASE pg_is_in_recovery() WHEN true THEN pg_last_{0}_receive_{1}() ELSE pg_current_{0}_{1}() END , replay_{1}) AS replay_delta
182
FROM pg_stat_replication
183
-WHERE application_name IS NOT NULL
183
+WHERE application_name IS NOT NULL;
184
""",
185
IF_SUPERUSER="""
186
SELECT current_setting('is_superuser') = 'on' AS is_superuser;