From: Piotr Caban <piotr@codeweavers.com> --- dlls/odbc32/proxyodbc.c | 49 ++++++++++++-------------------------- dlls/odbc32/tests/odbc32.c | 3 +++ 2 files changed, 18 insertions(+), 34 deletions(-) diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c index 695b9548dcc..566950d3faf 100644 --- a/dlls/odbc32/proxyodbc.c +++ b/dlls/odbc32/proxyodbc.c @@ -3911,19 +3911,6 @@ SQLRETURN WINAPI SQLSetDescRec(SQLHDESC DescriptorHandle, SQLSMALLINT RecNumber, return ret; } -static SQLRETURN set_env_attr_unix( struct environment *env, SQLINTEGER attr, SQLPOINTER value, SQLINTEGER len ) -{ - struct SQLSetEnvAttr_params params = { env->hdr.unix_handle, attr, value, len }; - return ODBC_CALL( SQLSetEnvAttr, ¶ms ); -} - -static SQLRETURN set_env_attr_win32( struct environment *env, SQLINTEGER attr, SQLPOINTER value, SQLINTEGER len ) -{ - if (env->hdr.win32_funcs->SQLSetEnvAttr) - return env->hdr.win32_funcs->SQLSetEnvAttr( env->hdr.win32_handle, attr, value, len ); - return SQL_ERROR; -} - /************************************************************************* * SQLSetEnvAttr [ODBC32.075] */ @@ -3942,31 +3929,25 @@ SQLRETURN WINAPI SQLSetEnvAttr(SQLHENV EnvironmentHandle, SQLINTEGER Attribute, return SQL_SUCCESS; } - if (env->hdr.unix_handle) - { - ret = set_env_attr_unix( env, Attribute, Value, StringLength ); - } - else if (env->hdr.win32_handle) - { - ret = set_env_attr_win32( env, Attribute, Value, StringLength ); - } - else + switch (Attribute) { - switch (Attribute) + case SQL_ATTR_ODBC_VERSION: + if (!list_empty( &env->hdr.children )) { - case SQL_ATTR_ODBC_VERSION: - env->attr_version = (UINT32)(ULONG_PTR)Value; - break; + FIXME( "report S1010 error\n" ); + return SQL_ERROR; + } + env->attr_version = (UINT32)(ULONG_PTR)Value; + break; - case SQL_ATTR_CONNECTION_POOLING: - FIXME("Ignore Pooling value\n"); - break; + case SQL_ATTR_CONNECTION_POOLING: + FIXME("Ignore Pooling value\n"); + break; - default: - FIXME( "unhandled attribute %d\n", Attribute ); - ret = SQL_ERROR; - break; - } + default: + FIXME( "unhandled attribute %d\n", Attribute ); + ret = SQL_ERROR; + break; } TRACE("Returning %d\n", ret); diff --git a/dlls/odbc32/tests/odbc32.c b/dlls/odbc32/tests/odbc32.c index 3f105d22483..0450ab5675a 100644 --- a/dlls/odbc32/tests/odbc32.c +++ b/dlls/odbc32/tests/odbc32.c @@ -761,6 +761,9 @@ static void test_SQLConnect( void ) ok (ret == SQL_SUCCESS, "got %d\n", ret ); if (ret == SQL_ERROR) diag( con, SQL_HANDLE_DBC ); + ret = SQLSetEnvAttr( env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC2, 0 ); + ok( ret == SQL_ERROR, "got %d\n", ret ); + ret = SQLGetEnvAttr( env, SQL_ATTR_ODBC_VERSION, &version, sizeof(version), NULL ); ok( ret == SQL_SUCCESS, "got %d\n", ret ); ok( version == SQL_OV_ODBC2, "version = %d\n", version ); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10669