Module: wine Branch: master Commit: ea2dfd1c14942ada174b3e425f90fd13721183d6 URL: https://gitlab.winehq.org/wine/wine/-/commit/ea2dfd1c14942ada174b3e425f90fd1...
Author: Hans Leidekker hans@codeweavers.com Date: Wed Jul 10 14:02:23 2024 +0200
odbc32: Implement SQLGetInfo(SQL_ODBC_VER).
---
dlls/odbc32/proxyodbc.c | 38 ++++++++++++++++++++++++++++++++++++++ dlls/odbc32/tests/odbc32.c | 22 ++++++++++++---------- 2 files changed, 50 insertions(+), 10 deletions(-)
diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c index 925abcfc063..c48e9c60917 100644 --- a/dlls/odbc32/proxyodbc.c +++ b/dlls/odbc32/proxyodbc.c @@ -1823,6 +1823,25 @@ SQLRETURN WINAPI SQLGetInfo(SQLHDBC ConnectionHandle, SQLUSMALLINT InfoType, SQL
if (!handle) return SQL_INVALID_HANDLE;
+ switch (InfoType) + { + case SQL_ODBC_VER: + { + const char version[] = "03.80.0000"; + int len = sizeof(version); + char *value = InfoValue; + + if (StringLength) *StringLength = len; + if (value && BufferLength >= len) + { + strcpy( value, version ); + if (StringLength) *StringLength = len - 1; + } + return SQL_SUCCESS; + } + default: break; + } + if (handle->unix_handle) { struct SQLGetInfo_params params = { handle->unix_handle, InfoType, InfoValue, BufferLength, StringLength }; @@ -4122,6 +4141,25 @@ SQLRETURN WINAPI SQLGetInfoW(SQLHDBC ConnectionHandle, SQLUSMALLINT InfoType, SQ
if (!handle) return SQL_INVALID_HANDLE;
+ switch (InfoType) + { + case SQL_ODBC_VER: + { + const WCHAR version[] = L"03.80.0000"; + int len = ARRAY_SIZE(version); + WCHAR *value = InfoValue; + + if (StringLength) *StringLength = len; + if (value && BufferLength >= len) + { + wcscpy( value, version ); + if (StringLength) *StringLength = len - 1; + } + return SQL_SUCCESS; + } + default: break; + } + if (handle->unix_handle) { struct SQLGetInfoW_params params = { handle->unix_handle, InfoType, InfoValue, BufferLength, StringLength }; diff --git a/dlls/odbc32/tests/odbc32.c b/dlls/odbc32/tests/odbc32.c index 01b8795e86e..8282e5a47ea 100644 --- a/dlls/odbc32/tests/odbc32.c +++ b/dlls/odbc32/tests/odbc32.c @@ -107,6 +107,18 @@ static void test_SQLConnect( void ) ret = SQLAllocConnect( env, &con ); ok( ret == SQL_SUCCESS, "got %d\n", ret );
+ len = -1; + ret = SQLGetInfo( con, SQL_ODBC_VER, NULL, 0, &len ); + ok( ret == SQL_SUCCESS, "got %d\n", ret ); + ok( len != -1, "len not set\n" ); + + memset( str, 0, sizeof(str) ); + ret = SQLGetInfo( con, SQL_ODBC_VER, str, sizeof(str), &len ); + ok( ret == SQL_SUCCESS, "got %d\n", ret ); + ok( str[0], "empty string\n" ); + ok( len == strlen(str), "got %d\n", len ); + trace( "version %s\n", str ); + ret = SQLConnect( con, (SQLCHAR *)"winetest", 8, (SQLCHAR *)"winetest", 8, (SQLCHAR *)"winetest", 8 ); if (ret == SQL_ERROR) diag( con, SQL_HANDLE_DBC ); if (ret != SQL_SUCCESS) @@ -124,16 +136,6 @@ static void test_SQLConnect( void ) ok( timeout != 0xdeadbeef, "timeout not set\n" ); ok( size == -1, "size set\n" );
- len = -1; - memset( str, 0, sizeof(str) ); - ret = SQLGetInfo( con, SQL_ODBC_VER, str, sizeof(str), &len ); - if (ret == SQL_SUCCESS) - { - ok( str[0], "empty string\n" ); - ok( len != -1, "len not set\n" ); - trace( "version %s\n", str ); - } - ret = SQLDisconnect( con ); ok( ret == SQL_SUCCESS, "got %d\n", ret );