ODBC Row Status Array (SQL_ATTR_ROW_STATUS_PTR) Populated As SQLUINTEGER Rather Than SQLUSMALLINT (Doc ID 1472987.1)

Last updated on JULY 05, 2017

Applies to:

Oracle ODBC Driver - Version 11.2.0.1 to 11.2.0.3 [Release 11.2]
Information in this document applies to any platform.

Symptoms

Using the Oracle 11gR1 or later ODBC driver, having called SQLSetStmtAttr to set up SQL_ATTR_ROW_STATUS_PTR, after a subsequent fetch the row status is being returned as 4 byte values (writing off the end of allocated memory) rather than as 2 byte values.

This issue reproduces with all versions of the Oracle ODBC driver since 11.1.0.6.  It is a 32-bit-only problem; in 64-bit mode the status values are 64-bit and this has been correctly implemented (the bug being due most likely to a simple oversight and some inconsistency between 32-bit and 64-bit Windows: if a value is 64 bits in 64-bit mode then it would be expected to be 32 bits in 32-bit mode, but in fact it is 16 bits in 32-bit mode).

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms