You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: schema-qualify catalog references in monitoring queries (cloudnative-pg#10576)
Unqualified references to `pg_catalog` functions and views are resolved
via `search_path`, which can be manipulated by a database user to shadow
built-in objects. Use explicit `pg_catalog`. qualification throughout
the shipped default-monitoring config and documentation samples.
Closescloudnative-pg#10575
Assisted-by: Claude
Signed-off-by: Gabriele Bartolini <gabriele.bartolini@enterprisedb.com>
Signed-off-by: Leonardo Cecchi <leonardo.cecchi@enterprisedb.com>
Signed-off-by: Marco Nenciarini <marco.nenciarini@enterprisedb.com>
Signed-off-by: Niccolò Fei <niccolo.fei@enterprisedb.com>
Co-authored-by: Leonardo Cecchi <leonardo.cecchi@enterprisedb.com>
Co-authored-by: Marco Nenciarini <marco.nenciarini@enterprisedb.com>
Co-authored-by: Niccolò Fei <niccolo.fei@enterprisedb.com>
(cherry picked from commit 6a3a85b)
Copy file name to clipboardExpand all lines: config/manager/default-monitoring.yaml
+16-16Lines changed: 16 additions & 16 deletions
Original file line number
Diff line number
Diff line change
@@ -27,11 +27,11 @@ data:
27
27
, state
28
28
, usename
29
29
, COALESCE(application_name, '') AS application_name
30
-
, COUNT(*)
31
-
, COALESCE(EXTRACT (EPOCH FROM (max(now() - xact_start))), 0) AS max_tx_secs
30
+
, pg_catalog.count(*)
31
+
, COALESCE(EXTRACT (EPOCH FROM (pg_catalog.max(pg_catalog.now() OPERATOR(pg_catalog.-) xact_start))), 0) AS max_tx_secs
32
32
FROM pg_catalog.pg_stat_activity
33
33
GROUP BY datname, state, usename, application_name
34
-
) sa ON states.state = sa.state
34
+
) sa ON states.state OPERATOR(pg_catalog.=) sa.state
35
35
WHERE sa.usename IS NOT NULL
36
36
metrics:
37
37
- datname:
@@ -55,10 +55,10 @@ data:
55
55
56
56
backends_waiting:
57
57
query: |
58
-
SELECT count(*) AS total
58
+
SELECT pg_catalog.count(*) AS total
59
59
FROM pg_catalog.pg_locks blocked_locks
60
60
JOIN pg_catalog.pg_locks blocking_locks
61
-
ON blocking_locks.locktype = blocked_locks.locktype
61
+
ON blocking_locks.locktype OPERATOR(pg_catalog.=) blocked_locks.locktype
62
62
AND blocking_locks.database IS NOT DISTINCT FROM blocked_locks.database
63
63
AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation
64
64
AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page
@@ -68,8 +68,8 @@ data:
68
68
AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid
69
69
AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid
70
70
AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid
71
-
AND blocking_locks.pid != blocked_locks.pid
72
-
JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid
71
+
AND blocking_locks.pid OPERATOR(pg_catalog.<>) blocked_locks.pid
72
+
JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid OPERATOR(pg_catalog.=) blocking_locks.pid
73
73
WHERE NOT blocked_locks.granted
74
74
metrics:
75
75
- total:
@@ -110,14 +110,14 @@ data:
110
110
pg_replication:
111
111
query: "SELECT CASE WHEN (
112
112
NOT pg_catalog.pg_is_in_recovery()
113
-
OR pg_catalog.pg_last_wal_receive_lsn() = pg_catalog.pg_last_wal_replay_lsn())
113
+
OR pg_catalog.pg_last_wal_receive_lsn() OPERATOR(pg_catalog.=) pg_catalog.pg_last_wal_replay_lsn())
114
114
THEN 0
115
115
ELSE GREATEST (0,
116
-
EXTRACT(EPOCH FROM (now() - pg_catalog.pg_last_xact_replay_timestamp())))
116
+
EXTRACT(EPOCH FROM (pg_catalog.now() OPERATOR(pg_catalog.-) pg_catalog.pg_last_xact_replay_timestamp())))
117
117
END AS lag,
118
118
pg_catalog.pg_is_in_recovery() AS in_recovery,
119
-
EXISTS (TABLE pg_stat_wal_receiver) AS is_wal_receiver_up,
120
-
(SELECT count(*) FROM pg_catalog.pg_stat_replication) AS streaming_replicas"
119
+
EXISTS (TABLE pg_catalog.pg_stat_wal_receiver) AS is_wal_receiver_up,
120
+
(SELECT pg_catalog.count(*) FROM pg_catalog.pg_stat_replication) AS streaming_replicas"
121
121
metrics:
122
122
- lag:
123
123
usage: "GAUGE"
@@ -165,17 +165,17 @@ data:
165
165
query: |
166
166
SELECT archived_count
167
167
, failed_count
168
-
, COALESCE(EXTRACT(EPOCH FROM (now() - last_archived_time)), -1) AS seconds_since_last_archival
169
-
, COALESCE(EXTRACT(EPOCH FROM (now() - last_failed_time)), -1) AS seconds_since_last_failure
168
+
, COALESCE(EXTRACT(EPOCH FROM (pg_catalog.now() OPERATOR(pg_catalog.-) last_archived_time)), -1) AS seconds_since_last_archival
169
+
, COALESCE(EXTRACT(EPOCH FROM (pg_catalog.now() OPERATOR(pg_catalog.-) last_failed_time)), -1) AS seconds_since_last_failure
170
170
, COALESCE(EXTRACT(EPOCH FROM last_archived_time), -1) AS last_archived_time
171
171
, COALESCE(EXTRACT(EPOCH FROM last_failed_time), -1) AS last_failed_time
172
-
, COALESCE(CAST(CAST('x'||pg_catalog.right(pg_catalog.split_part(last_archived_wal, '.', 1), 16) AS pg_catalog.bit(64)) AS pg_catalog.int8), -1) AS last_archived_wal_start_lsn
173
-
, COALESCE(CAST(CAST('x'||pg_catalog.right(pg_catalog.split_part(last_failed_wal, '.', 1), 16) AS pg_catalog.bit(64)) AS pg_catalog.int8), -1) AS last_failed_wal_start_lsn
172
+
, COALESCE(CAST(CAST('x' OPERATOR(pg_catalog.||) pg_catalog.right(pg_catalog.split_part(last_archived_wal, '.', 1), 16) AS pg_catalog.bit(64)) AS pg_catalog.int8), -1) AS last_archived_wal_start_lsn
173
+
, COALESCE(CAST(CAST('x' OPERATOR(pg_catalog.||) pg_catalog.right(pg_catalog.split_part(last_failed_wal, '.', 1), 16) AS pg_catalog.bit(64)) AS pg_catalog.int8), -1) AS last_failed_wal_start_lsn
174
174
, EXTRACT(EPOCH FROM stats_reset) AS stats_reset_time
175
175
FROM pg_catalog.pg_stat_archiver
176
176
predicate_query: |
177
177
SELECT NOT pg_catalog.pg_is_in_recovery()
178
-
OR pg_catalog.current_setting('archive_mode') = 'always'
178
+
OR pg_catalog.current_setting('archive_mode') OPERATOR(pg_catalog.=) 'always'
0 commit comments