pg_relation_filenode() 是一个系统函数,用于获取具有指定 OID 或名称的关系(relation)的 filenode 号。
pg_relation_filenode() 添加于 PostgreSQL 9.0。
用法
pg_relation_filenode (relationregclass) →oid
返回的 oid 对应于 pg_class 中 relfilenode 字段的值,但对于某些 系统目录表,该值为 0。因此,必须使用此函数来可靠地确定关系的 filenode。
如果该关系是视图(view)这类没有磁盘存储的类型,则返回 NULL。
变更历史
- PostgreSQL 9.0
- 添加于 (提交 b9b8831a)
示例
postgres=# SELECT pg_relation_filenode('foo');
pg_relation_filenode
----------------------
16499
(1 row)
尝试查询不存在的关系的 filenode
postgres=# SELECT pg_relation_filenode('bar');
ERROR: relation "bar" does not exist
LINE 1: SELECT pg_relation_filenode('bar');
尝试查询不存储数据的关系(relation)的 filenode
postgres=# CREATE VIEW bar AS SELECT * FROM foo; CREATE VIEW postgres=# SELECT pg_relation_filenode('bar') IS NULL; ?column? ---------- t (1 row)
有关更多示例,请参阅 filenode。
参考资料
- PostgreSQL 文档: 数据库对象位置函数
有用链接
- PG 中 OID 和 RELFILENODE 的映射 - HighGo 于 2021 年 1 月的博客文章
