I just discovered that in the Mac OS X 10.8 SDK, sqlucode.h, all of the Wide (Unicode) variants of about 37 APIs are marked as 
DEPRECATED_IN_MAC_OS_X_VERSION_10_8_AND_LATER. Example:

SQLRETURN SQL_API SQLGetConnectAttrW (
    SQLHDBC   hdbc,
    SQLINTEGER   fAttribute,
    SQLPOINTER   rgbValue,
    SQLINTEGER   cbValueMax,
    SQLINTEGER * pcbValue) DEPRECATED_IN_MAC_OS_X_VERSION_10_8_AND_LATER;

FYI: If UNICODE is defined and SQL_NOUNICODEMAP is not defined, then a normal call to SQLGetConnectAttr gets mapped to the wide version.
#define SQLGetConnectAttr SQLGetConnectAttrW


So if these are deprecated, what are we supposed to use instead?


Also, and possibly unrelated, I am calling the above SQLGetConnectAttrW (via the Unicode mapping) like so:

SQLTCHAR catalogName[100];
retcode = SQLGetConnectAttr( hdbc, SQL_ATTR_CURRENT_CATALOG
(SQLPOINTER)&catalogName, sizeof(catalogName), NULL);

And I get back a string that is not a wide string:
catalogName SQLTCHAR [100]
[0] SQLTCHAR user
[1] SQLTCHAR s\0\0\0

This is using Actual's "SQL Server" driver, if it matters.

--Michael