Thread: Error when getting text longer than MaxLongVarcharSize

Error when getting text longer than MaxLongVarcharSize

From
Åsmund Kveim Lie
Date:
Hi,

When fetching text data longer than MaxLongVarcharSize, the driver
returns the length of the actual data in the database rather than the
truncated length to retrieve.

The last parameter (StrLen_or_IndPtr) to SQLBindCol() is a pointer to
where to place the length of the data to get. When we later call
SQLExtendedFetch() it will update this value to be the length of the
string. If you have a text in the database which is longer than the
MaxLongVarcharSize the ODBC will truncate the value to return down to
MaxLongVarcharSize (as printed in the log file).

The bug is that in version 08.01.200 (ANSI) SQLExtendedFetch() updates
the string length to be the length in the database and NOT the length of
the actual (truncated) value returned. We later rely on this value to
get the string value from memory. We use PostgreSQL 8.1.3 on Debian
Sarge and ODBC on Windows.

I hope this is enough information to enable you locate the bug. If you
need more information or MyLog please let me know, but I have not
attached it because my posts with log attachments does not seem to get
through on this mailing list.

Best regards,

Åsmund Lie



Re: Error when getting text longer than MaxLongVarcharSize

From
Hiroshi Inoue
Date:
Åsmund Kveim Lie wrote:
> Hi,
>
> When fetching text data longer than MaxLongVarcharSize, the driver
> returns the length of the actual data in the database rather than the
> truncated length to retrieve.

Not only in the above case but in other all cases the ODBC driver returns
actual length not the truncated length.

regards,
Hiroshi Inoue