Re: SQLSetConnectAttr/SQLGetConnectAttr attribute values

Nick Gorham <[email protected]>
Newsgroups gmane.comp.db.unixodbc.devel
Message-ID <[email protected]>
[email protected] wrote:
>
> I ran into the following 32-bit/64-bit ODBC issue.
>
> The current Microsoft spec for SQLSetConnectAttr/SQLGetConnectAttr 
> describes the numeric attribute values as SQLUINTEGER.  This is at 
> variance with the SQLSetStmtAttr/SQLGetStmtAttr attribute values which 
> are described as SQLULEN.
>
> There is one connection attribute, SQL_ATTR_ODBC_CURSORS, that is 
> handled by the Microsoft ODBC Driver Manager. The ODBC spec says the 
> following.
> ------------------
> SQL_ATTR_ODBC_CURSORS (ODBC 2.0)
>
> An SQLUINTEGER value specifying how the Driver Manager uses the ODBC 
> cursor library:
>
> SQL_CUR_USE_IF_NEEDED = The Driver Manager uses the ODBC cursor 
> library only if it is needed. If the driver supports the 
> SQL_FETCH_PRIOR option in *SQLFetchScroll*, the Driver Manager uses 
> the scrolling capabilities of the driver. Otherwise, it uses the ODBC 
> cursor library.
>
> SQL_CUR_USE_ODBC = The Driver Manager uses the ODBC cursor library.
>
> SQL_CUR_USE_DRIVER = The Driver Manager uses the scrolling 
> capabilities of the driver. This is the default setting.
> ------------------
>
> Despite what the spec says, here is the observed behavior in a 64-bit 
> test application that I wrote.
>
> The SQLGetConnectAttr call is handled in the driver manager.   Notice 
> the before and after value.  This is NOT treated as SQLUINTEGER.
>
>                         0x1234567812345678        unsigned __int64
> rc = SQLGetConnectAttr( hdbc, attr, &datavalue, 0, 0 );
>                         0x0000000000000002        unsigned __int64
>
>
> I checked out the behaviour of the Microsoft SQL Server ODBC driver, 
> wondering if the spec was in error.  For all other connection 
> attributes, Microsoft's ODBC driver returns SQLUINTEGER (the same 
> behavior as the SQL Anywhere ODBC driver).
>
> I would rule the SQL_ATTR_ODBC_CURSORS behavior as a Microsoft Driver 
> Manager bug.
>
> A question for the unixODBC folks.  How do you handle the numeric 
> attribute values for SQLSetConnectAttr/SQLGetConnectAttr - SQLUINTEGER 
> or SQLULEN?
>
> Jack Schueler
>
>   
Hi,

For better or worst, unixODBC 2.3.0 treats the attribute in question as 
a SQLLEN.

-- 
Nick
_______________________________________________
unixODBC-dev mailing list
[email protected]
http://mailman.unixodbc.org/mailman/listinfo/unixodbc-dev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.