pg_collation
pg_collation
カタログは利用可能、SQL名とオペレーティングシステムのロケールカテゴリとの基本的な対応付けを行う照合順序を記述します。
詳細は 23.2を参照してください。
表51.12 pg_collation
の列
名前 | 型 | 参照先 | 説明 |
---|---|---|---|
oid | oid | 行識別子(隠し属性です。明示的に選択しなければなりません) | |
collname | name | 照合順序の名前(名前空間およびエンコード方式で一意) | |
collnamespace | oid |
| この照合順序を含む名前空間のOID |
collowner | oid |
| 照合順序の所有者 |
collprovider | char | 照合順序の提供者。d はデータベースのデフォルト、c はlibc、i はICU。 | |
collencoding | int4 | この照合順序を適用することができるエンコード方式。任意のエンコード方式で動作する場合は-1 | |
collcollate | name | この照合順序オブジェクト用のLC_COLLATE | |
collctype | name | この照合順序オブジェクト用のLC_CTYPE | |
collversion | text | Provider-specific version of the collation. This is recorded when the collation is created and then checked when it is used, to detect changes in the collation definition that could lead to data corruption. |
このカタログの一意キーは(collname
, collnamespace
)だけではなく(collname
,collencoding
, collnamespace
)です。
PostgreSQLは通常、collencoding
が現在のデータベースのエンコード方式または-1と一致しない照合順序をすべて無視します。
また、collencoding
= -1を持つ項目と名前が一致する新しい項目の作成は許されません。
したがって照合順序を識別するためには、カタログの定義に従った一意ではない場合であっても、限定されたSQL名称(schema
.name
)を使用することで十分です。
このようにカタログを定義した理由は、クラスタの初期化時にinitdb がシステムで利用可能なすべてのロケール用の項目でこのカタログにデータを投入するためです。
その為、今後そのクラスタで使用される可能性があるすべてのエンコード方式のエントリーを保持できるようにしなければなりません。
後でtemplate0
から複製されるデータベースのエンコード方式と一致するかもしれないので、template0
データベースのデータベースのエンコード方式と一致しないものの照合順を作成することが有用になるかもしれません。
現在これは手作業で行う必要があります。