@@ -12,16 +12,47 @@ WITH total_objects AS (
12
12
UNION
13
13
SELECT
14
14
' t' AS relkind,
15
- ROUND(SUM (heap_blks_hit)::numeric / nullif(SUM (heap_blks_hit + heap_blks_read), 0 ), 2 ) AS ratio
16
- FROM pg_statio_user_tables
15
+ /*
16
+ Handle column names for both PG15 and 17
17
+ */
18
+ ROUND(
19
+ (
20
+ SUM (
21
+ COALESCE(
22
+ (to_jsonb(s) - >> ' rel_blks_hit' )::bigint ,
23
+ (to_jsonb(s) - >> ' heap_blks_hit' )::bigint ,
24
+ 0
25
+ )
26
+ )::numeric
27
+ /
28
+ nullif(
29
+ SUM (
30
+ COALESCE(
31
+ (to_jsonb(s) - >> ' rel_blks_hit' )::bigint ,
32
+ (to_jsonb(s) - >> ' heap_blks_hit' )::bigint ,
33
+ 0
34
+ )
35
+ +
36
+ COALESCE(
37
+ (to_jsonb(s) - >> ' rel_blks_read' )::bigint ,
38
+ (to_jsonb(s) - >> ' heap_blks_read' )::bigint ,
39
+ 0
40
+ )
41
+ ),
42
+ 0
43
+ )
44
+ ),
45
+ 2
46
+ ) AS ratio
47
+ FROM pg_statio_user_tables s
17
48
WHERE NOT schemaname LIKE ANY($1 )
18
49
)
19
50
SELECT
20
51
pg_size_pretty(pg_database_size($2 )) AS database_size,
21
- ( SELECT size FROM total_objects WHERE relkind = ' i' ) AS total_index_size,
22
- ( SELECT size FROM total_objects WHERE relkind = ' r' ) AS total_table_size,
23
- ( SELECT size FROM total_objects WHERE relkind = ' t' ) AS total_toast_size,
24
- ( SELECT (now() - stats_reset)::text FROM pg_stat_statements_info) AS time_since_stats_reset,
52
+ COALESCE(( SELECT size FROM total_objects WHERE relkind = ' i' ), ' 0 bytes ' ) AS total_index_size,
53
+ COALESCE(( SELECT size FROM total_objects WHERE relkind = ' r' ), ' 0 bytes ' ) AS total_table_size,
54
+ COALESCE(( SELECT size FROM total_objects WHERE relkind = ' t' ), ' 0 bytes ' ) AS total_toast_size,
55
+ COALESCE(( SELECT (now() - stats_reset)::text FROM pg_stat_statements_info), ' N/A ' ) AS time_since_stats_reset,
25
56
(SELECT COALESCE(ratio::text , ' N/A' ) FROM cache_hit WHERE relkind = ' i' ) AS index_hit_rate,
26
57
(SELECT COALESCE(ratio::text , ' N/A' ) FROM cache_hit WHERE relkind = ' t' ) AS table_hit_rate,
27
- ( SELECT pg_size_pretty(SUM (size)) FROM pg_ls_waldir()) AS wal_size
58
+ COALESCE(( SELECT pg_size_pretty(SUM (size)) FROM pg_ls_waldir()), ' 0 bytes ' ) AS wal_size
0 commit comments