OracleとJ2SE5で致命的なバグ

02/22

まだこの記事を見に来る人が多いので1つ追加。
パッチのリリース予定日は2007年8月とのこと。

What effect does Oracle/Java5 bug have for comp... | Oracle Community

Support just got back to me and told me:

that a fix for this issue will be available in 10.2.0.4.0 JDBC Driver
which is scheduled for august 2007.

01/12 修正情報が投稿されました。

http://forums.oracle.com/forums/thread.jspa?forumID=99&threadID=461701
まだ落とせませんが、近いうちにOTNに投稿されるであろう、ドライバ10.2.0.4にて修正されるそうです。
ドライバは10gでなくとも、互換性があるとのことです。

This is bug# 5527479 and it is fixed in 10.2.0.4 upcoming patch set; a backport request has also been filed for 10.1.0.x.

Yes, the latest versions of the JDBC driver are compatible with older versions of the database.

01/10 ここから

Be careful when you are using Oracle and Java 5

JavaLobbyにて以下の組み合わせでJDBCを利用すると、BigDecimalの値が変わってしまうという致命的なバグが報告されている。
Config: oracle version 9.2, java version 1.5. JDBC driver is ojdbc14.jar

RESEARCH
==========
Found bug for 10.2.0.2

Hdr: 5527479 10.2.0.2.0 JDBC 10.2.0.2.0 PRODID-972 PORTID-226
Abstract: USING SETBIGDECIMAL CAUSES THE WRONG VALUE TO BE INSERTED INTO THE DATABASE.

Fix is noted to be in 11.x jdbc driver.

Workaround: Use jdk 1.4.

========================================================

Additional information: Changes from jdk 1.4 to 1.5 in BigDecimal.toString().... please see below:

With JDK1.5 the format of the text returned from toString() has changed;
see:
http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigDecimal.html#toString()
http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html#toString()
http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html#toPlainString()

========================== 

コメントの記事などを含めて読むと、J2SE1.5ではJDBCBigDecimalのtoString()のフォーマットが変更され、toPlainString()が拡張されているらしい。
Oracleがその変更に関してテストを怠ったのではないかという主張が見られる。

http://www.javalobby.org/java/forums/t88158.html#92123712

問題はOracleが対処として、11gの修正を待つか、JDK1.4を利用せよといっているらしい。投稿者は当然猛反発している。
現在、Oracleのフォーラムに投稿した人が出ているようだが、どうなるのかはまだわからない。ただこの件で感じることは有料のサポートというものは結局何なのだろうかということだろう。よくOSSはサポートがないから怖くて使えないという話を聞くが、サポートを契約しているのに、修正がもらえないという話は実は多くないだろうか?


また個人的にStringのフォーマット変更が原因ということが気になっている。
とりあえず後で読み直す予定。