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

Hiroshi Inoue Inoue @ tpf.co.jp
2002年 5月 24日 (金) 11:03:15 JST


井上です。

Tetsuya Kakura wrote:
> 
> 加倉です。
> 
> Hiroshi Inoue wrote on Thu, 23 May 2002 18:41:26 +0900
> 
> > 最新のソースでは
> > #ifdef (ODBCVER >= 0x0300) 以下
> >   ODBC3.X用にいくつか追加されています。
> 
> 最新のソースについてはまとまったリリースができたときに使わせていただき
> ます。楽しみに待ってます♪

7.2.xはバグフィクスのみなので、まとまったリリースは7.3に
なります。ただし正直これではたまらないのでWindows版に関
しては適宜バイナリ・リリースを行なっていますが。

> よく分からないのが、『ODBCでは254を境にSQL_VARCHARからSQL_LONGVARCHARへ
> と別の扱いになってしまいます。』の部分なのですが、これは PostgreSQL の
> ODBC 固有の仕様ですか?ODBC の一般的な仕様ですか?
> 
> ODBC 3.51 の文章中に SQL_VARCHAR は最大長 254 というのは見つけられなか
> ったのですが、254 を超えても SQL_LONGVARCHAR にせずに SQL_VARCHAR のま
> までよいのではないでしょうか?

PostgreSQLの固有仕様ではありません。逆にPostgreSQLでは
VARCHARは必ずSQL_VARCHARを返します(インチキだと思いま
すが私も積極的に修正したいという気にならない)。にも
関わらず255以上を返すとMS Accessではテキスト型ではなく
メモ型の扱いになります。

> 
> それにいままで OCTET_LENGTH は実装されていなかったのですから、バイト数で
> 返しても互換性については特に問題はないのではないでしょうか?

そうかもしれません。クライアントエンコーディングを見て
最大長を計算するやり方に変えてみますかね。SJISだと
2倍ですみますが、EUC_JPだとやはり3倍にせざるをえない
のかも。

Hiroshi Inoue
	http://w2422.nsk.ne.jp/~inoue/



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