"""Probe: postgres.metadata.tables"""
from core.base_probe import BaseProbe
from core.registry import register
[docs]
@register
class PgTablesProbe(BaseProbe):
[docs]
@staticmethod
def probe_name() -> str:
return "postgres.metadata.tables"
[docs]
@staticmethod
def description() -> str:
return "Extract table names, row estimates, and size from pg_catalog"
[docs]
def execute(self, connection, schema: str, **kwargs) -> list[dict]:
with connection.cursor() as cur:
cur.execute("""
SELECT c.relname, c.reltuples::bigint, pg_total_relation_size(c.oid) AS size_bytes,
obj_description(c.oid) AS comment
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE n.nspname = %s AND c.relkind = 'r'
ORDER BY c.relname
""", (schema,))
return [{"table_name": r[0], "row_estimate": r[1], "size_bytes": r[2], "comment": r[3]} for r in cur.fetchall()]