diff --git a/libmariadb/dbug.c b/libmariadb/dbug.c index 1a0aeaef..f7bf6a0a 100644 --- a/libmariadb/dbug.c +++ b/libmariadb/dbug.c @@ -707,8 +707,8 @@ char ***_sframep_ __attribute__((unused))) int save_errno=errno; if (!init_done) _db_push_ (_DBUG_START_CONDITION_); - state=code_state(); - + if(!(state=code_state())) + return; *_sfunc_ = state->func; *_sfile_ = state->file; state->func =(char*) _func_; diff --git a/libmariadb/libmariadb.c b/libmariadb/libmariadb.c index bd5db790..5fba2146 100644 --- a/libmariadb/libmariadb.c +++ b/libmariadb/libmariadb.c @@ -3052,10 +3052,6 @@ void STDCALL mysql_server_end() if (my_init_done) my_end(0); -#ifdef THREAD - else - mysql_thread_end(); -#endif mysql_client_init= 0; my_init_done= 0; } diff --git a/unittest/libmariadb/CMakeLists.txt b/unittest/libmariadb/CMakeLists.txt index 16ec82d1..6eaf5d9b 100644 --- a/unittest/libmariadb/CMakeLists.txt +++ b/unittest/libmariadb/CMakeLists.txt @@ -21,7 +21,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/unittest/mytap) SET(API_TESTS "basic-t" "fetch" "charset" "logs" "cursor" "errors" "view" "ps" "ps_bugs" - "sp" "result" "connection" "misc" "ssl" "ps_new" "sqlite3") + "sp" "result" "connection" "misc" "ssl" "ps_new" "sqlite3" "thread") FOREACH(API_TEST ${API_TESTS}) ADD_EXECUTABLE(${API_TEST} ${API_TEST}.c) diff --git a/unittest/libmariadb/thread.c b/unittest/libmariadb/thread.c new file mode 100644 index 00000000..f10b2386 --- /dev/null +++ b/unittest/libmariadb/thread.c @@ -0,0 +1,60 @@ +/* +*/ + +#include "my_test.h" + +static int basic_connect(MYSQL *mysql) +{ + MYSQL_ROW row; + MYSQL_RES *res; + MYSQL_FIELD *field; + int rc; + + MYSQL *my= mysql_init(NULL); + FAIL_IF(!my, "mysql_init() failed"); + + FAIL_IF(!mysql_real_connect(my, hostname, username, password, schema, + port, socketname, 0), mysql_error(my)); + + rc= mysql_query(my, "SELECT @@version"); + check_mysql_rc(rc, my); + + res= mysql_store_result(my); + field= mysql_fetch_fields(res); + FAIL_IF(!res, mysql_error(my)); + + while ((row= mysql_fetch_row(res)) != NULL) + { + FAIL_IF(mysql_num_fields(res) != 1, "Got the wrong number of fields"); + } + FAIL_IF(mysql_errno(my), mysql_error(my)); + + mysql_free_result(res); + mysql_close(my); + + return OK; +} + +struct my_tests_st my_tests[] = { + {"basic_connect", basic_connect, TEST_CONNECTION_NONE, 0, NULL, NULL}, + {NULL, NULL, 0, 0, NULL, NULL} +}; + + +int main(int argc, char **argv) +{ + + mysql_library_init(0,0,NULL); + mysql_thread_init(); + mysql_thread_end(); + mysql_library_end(); + + if (argc > 1) + get_options(argc, argv); + + get_envvars(); + + run_tests(my_tests); + + return(exit_status()); +}