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