[pgsql-jp: 38214] Re: ロケールCでインストールしないとLIKEで invalid memory alloc request

Hiroki Kataoka kataoka @ interwiz.jp
2007年 3月 22日 (木) 19:57:22 JST


片岡です。

ITAGAKI Takahiro wrote:
> 例えば、PostgreSQL ソースコード中の、以下の strcoll() の使い方は間違っています。
> データベースサーバのエンコーディングと、
> Cランタイムライブラリが処理可能なエンコーディングを混同しています。

 PostgreSQLにロケールを持ち込んだのは、主に単一エンコーディングしか使わ
ない1バイト圏の人たちです。確か石井さんを含めて数人が反対意見を出してい
たと思うのですが、とうてい彼らにはこの問題の重要性は理解できず、そのまま
搭載となったわけです。それどころか、特にヨーロッパ圏の人たちにはコレー
ションが重要なため、ある意味待ち焦がれていた機能でもあります。

 同じ問題はメッセージカタログ(gettext)にもあります。これも主に1バイト
圏の人たちがある意味何も考えずに組み込んだため、サーバエンコーディングや
クライアントエンコーディングには無関係に、Cランタイムのロケールでいろん
なメッセージを出してきます。

 現時点でPostgreSQLに搭載されている機能から判断しようとすると機能的に矛
盾があり「間違っている」と思われがちですが、実は良く似た2つのローカライ
ゼーション機能(Cランタイムのロケール、PostgreSQLのエンコーディング)が
それぞれ別のポリシーのもとに組み込まれており、ユーザはこれらを理解して矛
盾なく利用しないとおかしなことになり得るかもよ?な状況なのです。

-- 
Hiroki Kataoka <kataoka @ interwiz.jp>



pgsql-jp メーリングリストの案内