From: Owen Rudge orudge@codeweavers.com
--- dlls/odbc32/proxyodbc.c | 4 ++-- dlls/odbc32/tests/odbc32.c | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c index 5884980ef72..62c240b6e90 100644 --- a/dlls/odbc32/proxyodbc.c +++ b/dlls/odbc32/proxyodbc.c @@ -2776,7 +2776,7 @@ SQLRETURN WINAPI SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMAL SQLSMALLINT BufferLength, SQLSMALLINT *TextLength) { struct object *obj = lock_object( Handle, HandleType ); - SQLRETURN ret = SQL_ERROR; + SQLRETURN ret = SQL_NO_DATA;
TRACE("(HandleType %d, Handle %p, RecNumber %d, SqlState %p, NativeError %p, MessageText %p, BufferLength %d," " TextLength %p)\n", HandleType, Handle, RecNumber, SqlState, NativeError, MessageText, BufferLength, @@ -6546,7 +6546,7 @@ SQLRETURN WINAPI SQLGetDiagRecW(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMA SQLSMALLINT *TextLength) { struct object *obj = lock_object( Handle, HandleType ); - SQLRETURN ret = SQL_ERROR; + SQLRETURN ret = SQL_NO_DATA;
TRACE("(HandleType %d, Handle %p, RecNumber %d, SqlState %p, NativeError %p, MessageText %p, BufferLength %d," " TextLength %p)\n", HandleType, Handle, RecNumber, SqlState, NativeError, MessageText, BufferLength, diff --git a/dlls/odbc32/tests/odbc32.c b/dlls/odbc32/tests/odbc32.c index 905ab2ba482..499451f7182 100644 --- a/dlls/odbc32/tests/odbc32.c +++ b/dlls/odbc32/tests/odbc32.c @@ -77,6 +77,30 @@ static void diag( SQLHANDLE handle, SQLSMALLINT type ) if (ret == SQL_SUCCESS) trace( "state '%s' err %d msg '%s' len %d\n", state, err, msg, len ); }
+static void test_SQLGetDiagRec( void ) +{ + SQLHANDLE handle; + SQLINTEGER err; + SQLSMALLINT len; + SQLCHAR state[6], msg[256]; + SQLRETURN ret; + + handle = (void *)0xdeadbeef; + ret = SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &handle ); + ok( ret == SQL_SUCCESS, "got %d\n", ret ); + ok( handle != (void *)0xdeadbeef, "handle not set\n" ); + + state[0] = 0; + msg[0] = 0; + err = -1; + len = 0; + ret = SQLGetDiagRec( SQL_HANDLE_ENV, handle, 1, state, &err, msg, sizeof(msg), &len ); + ok( ret == SQL_NO_DATA, "got %d\n", ret ); + + ret = SQLFreeHandle( SQL_HANDLE_ENV, handle ); + ok( ret == SQL_SUCCESS, "got %d\n", ret ); +} + static void test_SQLConnect( void ) { SQLHENV env; @@ -608,6 +632,7 @@ static void test_SQLSetConnectAttr(void) START_TEST(odbc32) { test_SQLAllocHandle(); + test_SQLGetDiagRec(); test_SQLConnect(); test_SQLDriverConnect(); test_SQLBrowseConnect();