pg_relation_is_publishable()
是一个系统函数,用于确定关系是否可以成为 发布 的一部分。
pg_relation_is_publishable()
在 PostgreSQL 10 中添加。
用法
pg_relation_is_publishable (regclass
) →boolean
如果关系是非-系统目录、非临时表或 分区表,则返回 true
,否则返回 false
。
如果提供的 OID
不对应于关系,则返回 NULL
。
pg_relation_is_publishable()
旨在用于检查与关系关联的 发布。虽然它是为 psql 创建的,但它也可能对显示关系元数据的其他客户端有用。
截至 PostgreSQL 15,pg_relation_is_publishable()
未记录在文档中。
更改历史记录
- PostgreSQL 10
- 添加(提交 a2141c42)
示例
基于 psql 使用的查询,pg_relation_is_publishable()
的用法示例
postgres=# SELECT pubname, NULL, NULL FROM pg_publication p JOIN pg_publication_namespace pn ON p.oid = pn.pnpubid JOIN pg_class pc ON pc.relnamespace = pn.pnnspid WHERE pc.oid ='foo'::regclass and pg_relation_is_publishable('foo') UNION SELECT pubname, pg_get_expr(pr.prqual, c.oid), (CASE WHEN pr.prattrs IS NOT NULL THEN (SELECT string_agg(attname, ', ') FROM generate_series(0, array_upper(pr.prattrs::int2[], 1)) s, pg_attribute WHERE attrelid = pr.prrelid AND attnum = prattrs[s]) ELSE NULL END) FROM pg_publication p JOIN pg_publication_rel pr ON p.oid = pr.prpubid JOIN pg_class c ON c.oid = pr.prrelid WHERE pr.prrelid = 'foo'::regclass UNION SELECT pubname, NULL, NULL FROM pg_publication p WHERE p.puballtables AND pg_relation_is_publishable('foo') ORDER BY 1; pubname | ?column? | ?column? ----------+----------+---------- test_pub | | (1 row)