mysql:3636
From: "MINOHATA Norio" <"MINOHATA Norio" <minohata@xxxxxxxxxx>>
Date: Thu, 17 May 2001 11:05:29 +0900
Subject: [mysql 03636] 浮動小数がデタラメな数値に化けて出力されるバグ
浮動小数に関するバグを発見しました。 (環境) FreeBSD4.2 MySQL3.23.37, 3.23.38 configure --prefix=/usr/local/mysql --with-charset=ujis (症状) select * from tableA into outfile 'sample1.txt'; select * from tableA into outfile 'sample2.txt'; のように全く同じテーブルを2回ファイルに出力して diff sample1.txt sample2.txt で差分をとると浮動小数の項目が一致しないという現象が発生しました。 10万レコードのファイルで不一致が1件~2件程度です。 (不一致の例) 12355.25 が 63355.25 になる。<---上位桁がデタラメになる 12355.25 が 12355. になる。<---小数点以下が消える この症状がでた環境では、同時接続数が10個程度で 1分あたり100~200程度のクエリーが実行されています。 別のテスト用環境にテーブルをコピーして同じ操作を試してた所、 select ... into outfile ... を実行中に、別スレッドで他のクエリーが 実行された場合にこの症状が発生するらしいということがわかりました。 また、最初はデータ型に float(10,2) を使っていたのですが、 これを double や real に変更しても同じ症状が発生しました。 不一致のパターンもあわせて考えてみますと、浮動小数をアスキー文字列に 変換するルーチンがスレッドセーフになっていないような気がします。 # 一時変数をスレッド間で共有してしまっている? とりあえず、私の力で確認できたのはここまでです。 (ソースコードを追跡する能力がありませんので) -- 箕畑典男 minohata@xxxxxxxxxx
-> 3636 2001-05-17 11:05 ["MINOHATA Norio" <mi] 浮動小数がデタラメな数値に化けて出力されるバグ 3646 2001-05-21 20:45 ┗["MINOHATA Norio" <mi] 3650 2001-05-22 15:21 ┣[Akihiko Shinohara <s] 3652 2001-05-22 17:55 ┃┗["MINOHATA Norio" <mi] 3654 2001-05-23 03:11 ┗[tateyan <tateyan@xxx] 3658 2001-05-23 11:10 ┗[Yasuhide OMORI / 大�]