2006-11-17

[pgsql-jp: 37649] ODBC ADODB.Recordset で Null 値が、NULL文字列になってしまう

PostgreSQLの日本語版ODBCドライバに不具合があるようです。
該当の方はバグが修正されている最新バージョン(8.2.0201)を取得しましょう。
昨日、Windows版PostgreSQL を 8.1.5にバージョンアップしたところ、今まで動作していたアプリケーションが異常な動作をするので、原因を調査したところ、
ODBC ドライバーが、 8.01.0200 から、 8.02.0200 に上がると挙動が変わることが分かりました。
具体的には、VB6のADODB.Recordset で、VARCHAR 型に対して Null 値を書き込むと、 DB の Null 値で書き込まれていたものが、Null文字列で、書き込まれてしまう様になってしまいました。

まず第一にバグ自体はずっと存在していたもので8.2固有のものではありません。
ただし、このバグはNULL文字列を格納処理すれば必ず発症するというようなものではないため、発症するしないはかなり微妙です。たとえばODBC3.0以前の古いスタイルを踏襲しているアプリやミドルウェアでは発症しません。今回問題になっているADO使用の場合でも、他に非NULL項目を一緒に更新したりすると、ADOが処理方法を変えてしまうせいか発症しないようです。
ADO使用によるNULL文字列更新に関していえば、8.1.0200でテストした所発症はしませんでした。何かの要因があるAPIの発行を阻んでいるようでラッキーだったということでしょう。なお8.2.0201では大元のバグが修正されています。


いのっち父のページ
http://www.geocities.jp/inocchichichi/

本家 JP版 ODBCドライバ配布 FTPサイト(2006.11.17現在まだ反映されていません)
ftp://ftp.jp.postgresql.org/odbc/versions/

via [pgsql-jp: 37649] ODBC ADODB.Recordset で Null 値が、NULL文字列になってしまう
コメントを投稿