pg_collation_is_visible() 是一个系统函数,用于确定排序规则在当前模式搜索路径中是否可见。
pg_collation_is_visible() 在 PostgreSQL 9.1 中添加。
用法
pg_collation_is_visible (collationoid) →boolean
可以使用包含排序规则名称的 regcollation OID 别名 以文本值的形式提供 collation 参数。在这种情况下,名称应提供为模式限定值(例如,“someschema.somecollation”),否则,如果排序规则存在但不在当前搜索路径中可见,则会引发 ERROR。
变更历史
- PostgreSQL 9.1
- 添加(提交 414c5a2e)
示例
假设已创建以下排序规则,pg_collation_is_visible() 的示例用法
postgres=# CREATE COLLATION collations.british_english (locale = 'en_GB.utf8'); CREATE COLLATION
dads
postgres=# SHOW search_path; search_path ----------------- "$user", public (1 row) postgres=# SELECT pg_collation_is_visible('collations.british_english'); ERROR: invalid input syntax for type oid: "collations.british_english" LINE 1: SELECT pg_collation_is_visible('collations.british_english')... postgres=# SET search_path TO public, collations; SET postgres=# SELECT pg_collation_is_visible('collations.british_english'::regcollation); pg_collation_is_visible ------------------------- t (1 row)
如果排序规则不存在,或者存在但未进行模式限定且不在当前搜索路径中,则会引发 ERROR。
postgres=# SELECT pg_collation_is_visible('collations.foo'::regcollation);
ERROR: collation "collations.foo" for encoding "UTF8" does not exist
LINE 1: SELECT pg_collation_is_visible('collations.foo'::regcollatio...
postgres=# SHOW search_path;
search_path
-----------------
"$user", public
(1 row)
postgres=# SELECT pg_collation_is_visible('british_english'::regcollation);
ERROR: collation "british_english" for encoding "UTF8" does not exist
LINE 1: SELECT pg_collation_is_visible('british_english'::regcollati...
参考资料
- PostgreSQL 文档: pg_collation_is_visible()
