ResultSetMetaDataのgetColumnLabel()とgetColumnName()

基本この2つのメソッドは同じ値を返す実装に各JDBCドライバはなってると思うのだけど(少ない私の経験上は今までそうだった)、mysql-connector 5.1.6で初めて違うパターンに巡り合いました。

「select xxx as yyy from zzz」

なんてSQLを書くとまあ、「yyy」が返ってくるのを期待するわけなんですが、mysql-connector 5.1.6では、getColumnLabel()だと「yyy」、getColumnName()だと「xxx」。

数年前MySQL使った時はこんな結果じゃなかった気がするなあ。
Java SE 6 から採用のJDBC4.0がらみの変更やもしれん(未確認)。Java SE 6のJavaDocのコメントを見る限りにおいてはこれが正しい動作なような気がするし。


まあDAOのライブラリでも自作しないと触らない部分ではあるとは思いますが。