[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 メーリングリストの案内