无法运行pg_buffercache_pages()函数的问题求助
解决pg_buffercache_pages()函数调用错误的方法
首先确认pg_buffercache扩展已创建(若未创建,执行以下命令):
CREATE EXTENSION IF NOT EXISTS pg_buffercache;
正确调用pg_buffercache_pages()函数
pg_buffercache_pages()返回record类型,必须显式指定完整的列定义列表才能正确查询,完整的列定义与函数返回结构一致:
SELECT * FROM pg_buffercache_pages() AS p ( bufferid integer, relfilenode oid, reltablespace oid, reldatabase oid, relforknumber smallint, relblocknumber bigint, isdirty boolean, usagecount smallint, pinning_backends integer );
更简便的替代方案
直接使用pg_buffercache视图,该视图已封装了pg_buffercache_pages()的返回结构,无需手动指定列定义:
SELECT * FROM pg_buffercache;
错误原因说明
ERROR: return type must be a row type:pg_buffercache_pages()返回行类型,不能直接用SELECT 函数()的标量查询方式,必须通过SELECT * FROM 函数()调用。ERROR: a column definition list is required for functions returning "record":返回record类型的函数,PostgreSQL无法自动识别列结构,必须显式提供列定义列表。ERROR: incorrect number of output arguments:你指定的列数量与函数实际返回的字段数量不匹配,导致报错。
内容的提问来源于stack exchange,提问作者Ayush Vatsa
相关产品推荐
相关产品推荐

