読者です 読者をやめる 読者になる 読者になる

oracle-enhanced 1.7.11 and 1.6.9 has been released

JRuby (JDBC) に対する変更のみで、MRI (oci8) への変更点はなしのリリースとなる。

JRuby 用の OracleEnhancedJDBCConnection を使ったときに BINARY_FLOAT データベース型にマッピングされている AR のスキーマで定義した float に対して nil が返っているところを、MRI 用の OracleEnhancedOCIConnection での挙動と同じく近似値の Float インスタンスを返すようにしたのが変更点。注意点としては BINARY_FLOAT 型として格納する性質上、データベースに保存した値に対して丸め誤差が生じること。

github.com

丸め誤差のない形を期待する場合は、float ではなく decimal を使った AR スキーマ定義による保存を検討するのが良いと思う。

なお、MySQLPostgreSQL のアダプタでは float に対してそもそもの保存するデータベース型が異なり、丸め誤差が起きないようになっている模様。