[pgsql-jp: 26085] 7.2 ODBC ドライバで SQL_DESC_OCTET_LENGTH を取得すると 0 になる。

Tetsuya Kakura kakura @ saki.netwk.ntt-at.co.jp
2002年 5月 23日 (木) 14:46:08 JST


こんにちは。
加倉です。

PostgreSQL 7.2.1 用の ODBC ドライバの SQLColAttribute で以下の様な現象が起きていま
す。これは不具合のような気がしますがどうでしょう?

■現象
- VARCHAR(40) の列の OCTET LENGTH に 0 が返される。
- OCTET_LENGTH の取得は SQLColAttribute で SQL_DESC_OCTET_LENGTH を指定しています。
 SQLRETURN は SQL_SUCCESS が返されています。
※参考までに、Column Size, Display Size は各々 40 と 40 が返されています。

■加倉の認識
- PostgreSQL 7.2.1 では VARCHAR は文字単位になっているので、OCTET LENGTH (転送に必
 要なバッファのバイトサイズ)は、EUC_JP の場合 2(または3)×ColumnSize が戻らなけれ
 ばならないと思うのですが・・・

■確認した環境
OS : Solaris 2.6
PostgreSQL: 7.2.1
 configure option: --enable-multibyte --enable-odbc --odbc-unixodbc --with-unixodbc
ODBC Driver: 7.2.1 添付のドライバ
ODBC Manager: unixODBC 2.1
使用しているDBのコーディング: EUC_JP

■補足
- 開発中のプログラムは PostgreSQL 7.2.1 以外の ODBC Driver にも対応しますので、
 『ColumnSize× 2(または3)』のロジックをプログラムに埋め込むわけに行かないので 
 OCTET_LENGTH を取得できる方法が欲しいのです。

宜しくお願いします。

--
Tetsuya Kakura / kakura @ saki.netwk.ntt-at.co.jp



pgsql-jp メーリングリストの案内