pg_total_relation_size
我正在尝试使用如下方法获取公共模式中表的大小:
SELECT table_name, table_schema, table_catalog,
pg_size_pretty(pg_total_relation_size(table_name)) as table_size
FROM information_schema.tables
WHERE table_schema = 'public'
当我这样做时,我收到错误:
[42883] ERROR: function pg_total_relation_size(information_schema.sql_identifier) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Position: 72
由于某种原因,它试图pg_total_relation_size
在表上使用该函数information_schema.sql_identifier
,即使该WHERE
子句过滤掉了整个函数。
事实上,如果我运行查询:
SELECT table_name, table_schema, table_catalog
FROM information_schema.tables
WHERE table_schema = 'public'
我可以看到它information_schema.sql_identifier
没有包含在结果集中。如果删除WHERE
“我确实看到”条款information_schema.sql_identifier
。
唯一明显的是 WHERE 子句由于某种原因被忽略。
如何使其按预期运行并仅返回 PUBLIC 方案中表的大小?
该错误实际上是说:
那是一种类型而不是列。该函数需要一个
regclass
而不是一个sql_identifier
。你想这样称呼它