The last parameter of SQLDescribeCol(), the "NumericAttributePtr" is an
out parameter that should always point to a SQLLEN value (for both x64
and x32 builds), despite this value being assigned different width
values.
The x32 API definition uses a "void *" that would allow passing pointers
to various width integers, but the spec does require an SQLLEN and other
drivers and apps aligned to it. Some apps seem however to not cast down
to the width corresponding to the various attributes, which can lead to
incorrect behavior. The driver now scales up all values to an SQLLEN.
Also, returning of the SQL_DESC_NUM_PREC_RADIX attribute is
corrected.
The last parameter of SQLDescribeCol(), the "NumericAttributePtr" is an out parameter that should always point to a SQLLEN value (for both x64 and x32 builds), despite this value being assigned different width values.
The x32 API definition uses a "void *" that would allow passing pointers to various width integers, but the spec does require an SQLLEN and other drivers and apps aligned to it. Some apps seem however to not cast down to the width corresponding to the various attributes, which can lead to incorrect behavior. The driver now scales up all values to an SQLLEN.
Also, returning of the SQL_DESC_NUM_PREC_RADIX attribute is corrected.