SQLGetDiagField(SQL_DIAG_NUMBER) with SQL_HANDLE_DBC returns SQL_NO_DATA even if an error record exists.
if I request one of unimplemented info types
SQL_DATETIME_LITERALS
SQL_STANDARD_CLI_CONFORMANCE
SQL_XOPEN_CLI_YEAR
SQLUINTEGER bitmask;
SQLRETURN rc;
rc = SQLGetInfo(hdbc, SQL_DATETIME_LITERALS, &bitmask, sizeof(bitmask), NULL); // _ASSERT(rc == 0);
if (rc != SQL_SUCCESS)
{
SQLLEN numRecs;
SQLCHAR Msg[SQL_MAX_MESSAGE_LENGTH + 1];
rc = SQLGetDiagField(SQL_HANDLE_DBC, hdbc, 0, SQL_DIAG_NUMBER, &numRecs, 0, nullptr); // _ASSERT(rc == 0);
// returns SQL_NO_DATA
// but this returns valid message
rc = SQLGetDiagRec(SQL_HANDLE_DBC, hdbc, 1, NULL, NULL, Msg, sizeof(Msg), NULL); _ASSERT(rc == 0);
__debugbreak();
}
Also there is a typo in function PGAPI_GetTypeInfo(HSTMT hstmt, SQLSMALLINT fSqlType) [info.c]
https://git.postgresql.org/gitweb/?p=psqlodbc.git;a=blob;f=info.c;h=2ce1a5acd19052c2525bdd5b2ab02701eb6cba1d;hb=HEAD#l1161"RECISION" should be "PRECISION"