[pgsql-jp: 33346] Re: Postgresql7.4.2 char列に対するmax関数の動作が7.3.3と異なる
ISHIDA Akio
iakio @ mono-space.net
2004年 6月 23日 (水) 12:00:59 JST
こんにちは。石田@苫小牧市です。
On Wed, Jun 23, 2004 at 02:37:40AM +0900, aya wrote:
> PostgreSQL7.3.3で正常に動いていたecpgプログラムを
> PostgreSQL7.4.2にしてコンパイルしたところ動きが異なりました。
>
> not null制約のあるchar(1)型の列に対し、max関数で問合せを実行したところ、
> 見つかるはずのデータがブランクの場合、ホスト変数にブランクが入りません。
> sqlcodeを見ると0が戻っているのでデータは1件とれていると思います。
>
> Postgresql7.3.3の場合、ホスト変数に正常にブランクが入ります。
>
> 仕様が変わったのかと思いバージョンがあがったときの
> 変更点を一通りみたのですが、見つけることが出来ませんでした、、
> char型の列に集計関数を使うのがおかしいと言われると
> 確かにそうかと思うのですが、スペース以外の場合は
> 値が戻ってくるので、動くようにも思えます。
> バグのように感じているのですが、どうでしょうか、、、
char(n)型での空白の扱いが 7.3 と 7.4 で違っていることが
原因かもしれません。
====7.3.6
=# SELECT '<' || ' '::char(5) || '>';
?column?
----------
< >
(1 row)
====7.4.2
=# SELECT '<' || ' '::char(5) || '>';
?column?
----------
<>
(1 row)
7.4のリリースノートでは、
http://www.postgresql.jp/document/pg743doc/html/release-7-4.html
====
char(n) から varchar(n) もしくは textへの変換時、最後の空白は除去される
ようになりました。 これは、ほとんどのユーザが常にそうなってほしいと期待
している動作です。
====
とありますが、この辺の話なんでしょうか? > 識者の方
pgsql-jp メーリングリストの案内