ページの先頭行へ戻る
Enterprise Postgres 17 リリース情報

2.2.247 テーブルのname型の列がデフォルトでC照合順序を持つように変更

非互換

FUJITSU Enterprise Postgres 12では、nameデータ型に対する比較演算子は、常にCではなく、任意の照合順序が使えるようになります。これまでの問い合わせの意味を維持するため、name型の列は明示的にC照合順序を持つと印付けされるようになります。これにより、name型の列に対する正規表現演算子が、ロケールに依存する正規表現パターン(psql の \w で実行される SQLなど)の振る舞いを決める際のデフォルトの照合順序がデータベースの照合順序からC照合順序に変更となります。

FUJITSU Enterprise Postgres 11以前の場合

name型の列は明示的にC照合順序を持つと印付けされません。

[例]

=# SELECT t.typname, t.typcollation, c.collname FROM pg_type t
-# JOIN pg_collation c ON (t.typcollation = c.oid) WHERE typname = 'name';
typname | typcollation | collname
---------+--------------+----------
(0 rows)
FUJITSU Enterprise Postgres 12の場合

name型の列は明示的にC照合順序を持つと印付けされます。

[例]

=# SELECT t.typname, t.typcollation, c.collname FROM pg_type t
-# JOIN pg_collation c ON (t.typcollation = c.oid) WHERE typname = 'name';
 typname | typcollation | collname
---------+--------------+----------
 name    |          950 | C
(1 row)

対処方法

name型の列に対する正規表現でC照合順序以外の振る舞いをさせる場合は、明示的にCOLLATE句を追加してください。