pg_relation_is_publishable()

一个函数,用于显示关系是否可以成为发布的一部分

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 15pg_relation_is_publishable() 未记录在文档中。

更改历史记录

示例

基于 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)

类别

分区系统目录系统函数

另请参阅

pg_publication

反馈

提交任何关于“pg_relation_is_publishable()”的评论、建议或更正 此处