Це передбачає , що матеріалізовані уявлення були relpages >= 8в pg_class, які не повинні бути. Насправді він може бути порожнім - ще не заселений, позначений символом pg_class.relispopulated = FALSE. У цьому випадку відповідний файл диска має нульовий розмір.
Спробуйте замість цього:
SELECT relname AS objectname
, relkind AS objecttype
, reltuples AS entries
, pg_size_pretty(pg_table_size(oid)) AS size -- depending - see below
FROM pg_class
WHERE relkind IN ('r', 'i', 'm')
ORDER BY pg_table_size(oid) DESC;
Де доступні типи :
r= звичайна таблиця,
i= індекс,
S= послідовність,
v= перегляд,
m= матеріалізований вигляд,
c= складений тип,
t= таблиця TOAST,
f= таблиця іноземної
Використовуйте одну з функцій розміру об'єкта бази даних, а не будуйте власну. Майте на увазі, що "розмір таблиці" можна визначити різними способами. Деталі: