Это предполагает , что материализованные представления были 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= внешняя таблица
Используйте одну из функций размера объекта базы данных, а не свою собственную. Имейте в виду, что «размер таблицы» можно определять по-разному. Детали: