Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

51.12. pg_collation #

目录 pg_collation 描述了可用的排序规则,它本质上是 SQL 名称到操作系统区域类别之间的映射。有关详细信息,请参见 第 23.2 节

表 51.12. pg_collation

列 类型

描述

oid oid

行标识符

collname name

排序规则名称(每个命名空间和编码是唯一的)

collnamespace oid(引用 pg_namespace.oid

包含该排序规则的命名空间的 OID

collowner oid(引用 pg_authid.oid

排序规则的所有者

collprovider char

对照的提供者:d = 数据库默认值,b = 内建的,c = libc,i = icu

collisdeterministic bool

对照是否确定?

collencoding int4

对照适用的编码,或 -1(如果对照适用于任何编码)

collcollate text

此对照对象的 LC_COLLATE。如果提供者不是 libccollcollateNULL,而使用 colllocale

collctype text

此对照对象的 LC_CTYPE。如果提供者不是 libccollctypeNULL,而使用 colllocale

colllocale text

此对照对象的对照提供者区域设置名称。如果提供者是 libccolllocaleNULL;而使用 collcollatecollctype

collicurules text

此对照对象的 ICU 对照规则

collversion text

对照的特定于提供者的版本。这在对照创建后记录,然后在对照使用时进行检查,以检测对照定义中的变更,这可能导致数据损坏。


请注意,此目录上的唯一键为 (collname, collencoding, collnamespace),而不仅仅是 (collname, collnamespace)。 PostgreSQL 通常忽略所有 collencoding 不等于当前数据库编码或 -1 的比较规则,并且禁止创建与 collencoding = -1 的条目同名的条目。因此,即使这根据目录定义不是唯一的,也可以使用限定的 SQL 名称(schema.name)来标识比较规则。以这种方式定义目录的原因是 initdb 在集群初始化时间填充目录,其中包含系统中所有可用的区域设置的条目,因此它必须能够保存集群中可能使用的所有编码的条目。

template0 数据库中,创建编码与数据库编码不匹配的比较规则可能很有用,因为它们可以匹配以后从 template0 克隆的数据库的编码。目前这必须手动完成。