Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 11 additions & 6 deletions mamonsu/plugins/pgsql/cfs.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,18 @@ class Cfs(Plugin):
}

query_cfs_compressed_ratio = """
WITH cfs_data AS MATERIALIZED (
SELECT
n.nspname || '.' || c.relname AS table_name,
cfs_compression_ratio(c.oid::regclass) AS ratio,
(pg_catalog.pg_total_relation_size(c.oid::regclass) - pg_catalog.pg_indexes_size(c.oid::regclass)) AS compressed_size
FROM
pg_catalog.pg_class AS c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.reltablespace IN (SELECT oid FROM pg_catalog.pg_tablespace WHERE spcoptions::text ~ 'compression')
AND c.relkind IN ('r','v','m','S','f','p','')
AND cfs_compression_ratio(c.oid::regclass) <> 'NaN'
WHERE c.reltablespace IN (
SELECT oid FROM pg_catalog.pg_tablespace
WHERE spcoptions::text ~ 'compression' AND spcname NOT IN ('pg_default', 'pg_global')
) AND c.relkind IN ('r','m','S') -- only relkinds with physical storage

UNION ALL

Expand All @@ -34,9 +36,12 @@ class Cfs(Plugin):
FROM
pg_catalog.pg_class AS c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.reltablespace IN (SELECT oid FROM pg_catalog.pg_tablespace WHERE spcoptions::text ~ 'compression')
AND c.relkind = 'i'
AND cfs_compression_ratio(c.oid::regclass) <> 'NaN';
WHERE c.reltablespace IN (
SELECT oid FROM pg_catalog.pg_tablespace
WHERE spcoptions::text ~ 'compression' AND spcname NOT IN ('pg_default', 'pg_global')
) AND c.relkind = 'i'
-- subquery + outer NaN filter prevent planner from calling cfs_compression_ratio() before reltablespace/relkind filters
) SELECT table_name, ratio, compressed_size FROM cfs_data WHERE ratio <> 'NaN';
"""

query_cfs_activity = """
Expand Down