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