diff --git a/CMakeLists.txt b/CMakeLists.txt index cc991ee4..7f73245d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,7 @@ OPTION(WITH_EXTERNAL_ZLIB "Enables use of external zlib" OFF) ############### -IF(WIN32) +IF(MSVC) # Speedup system tests INCLUDE(${CMAKE_SOURCE_DIR}/cmake/WindowsCache.cmake) IF (MSVC) @@ -127,7 +127,9 @@ IF(WIN32) SET(HAVE_THREADS 1) ADD_DEFINITIONS(-DHAVE_DLOPEN) ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996" ) + IF(MSVC) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996" ) + ENDIF() ELSEIF() SET(HAVE_THREADS ${CMAKE_USE_PTHREADS}) ENDIF() @@ -179,7 +181,7 @@ IF(BUILD_DOCS) ENDIF() -IF(WIN32) +IF(MSVC) SET(CMAKE_INSTALL_PREFIX "") ENDIF() diff --git a/include/my_global.h b/include/my_global.h index 06d62758..554dccd2 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -297,7 +297,9 @@ typedef unsigned short ushort; #if defined(__GNUC__) #define function_volatile volatile +#ifndef my_reinterpret_cast #define my_reinterpret_cast(A) reinterpret_cast +#endif #define my_const_cast(A) const_cast #elif !defined(my_reinterpret_cast) #define my_reinterpret_cast(A) (A) @@ -741,7 +743,7 @@ typedef char bool; /* Ordinary boolean values 0 1 */ #define NOT_FIXED_DEC 31 -#ifdef _WIN32 +#if defined(_WIN32) && defined(_MSVC) #define MYSQLND_LLU_SPEC "%I64u" #define MYSQLND_LL_SPEC "%I64d" #ifndef L64 diff --git a/include/my_pthread.h b/include/my_pthread.h index 54e4d2cf..2117868f 100644 --- a/include/my_pthread.h +++ b/include/my_pthread.h @@ -61,10 +61,12 @@ typedef struct { CRITICAL_SECTION waiters_count_lock; } pthread_cond_t; +#ifndef _TIMESPEC_DEFINED struct timespec { /* For pthread_cond_timedwait() */ time_t tv_sec; long tv_nsec; }; +#endif typedef int pthread_mutexattr_t; #define pthread_self() GetCurrentThreadId() diff --git a/include/my_sys.h b/include/my_sys.h index c64f2f89..dc82598b 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -136,7 +136,9 @@ extern my_string my_strndup(const char *from, size_t length, myf MyFlags); #pragma alloca #endif /* _AIX */ #if defined(__GNUC__) && !defined(HAVE_ALLOCA_H) +#ifndef alloca #define alloca __builtin_alloca +#endif #endif /* GNUC */ #define my_alloca(SZ) alloca((size_t) (SZ)) #define my_afree(PTR) {} diff --git a/libmariadb/CMakeLists.txt b/libmariadb/CMakeLists.txt index d0a261b3..6f7c1b55 100644 --- a/libmariadb/CMakeLists.txt +++ b/libmariadb/CMakeLists.txt @@ -98,9 +98,12 @@ my_stmt_codec.c client_plugin.c my_auth.c ma_secure.c -libmariadb_exports.def ) +IF(MSVC) + SET(LIBMARIADB_SOURCES ${LIBMARIADB_SOURCES} libmariadb_exports.def) +ENDIF() + IF(WIN32) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/win-iconv) SET(LIBMARIADB_SOURCES ${LIBMARIADB_SOURCES} @@ -208,9 +211,9 @@ ENDIF() INSTALL(TARGETS libmariadb mariadbclient - RUNTIME DESTINATION "lib/mariadb" - LIBRARY DESTINATION "lib/mariadb" - ARCHIVE DESTINATION "lib/mariadb") + RUNTIME DESTINATION "lib" + LIBRARY DESTINATION "lib" + ARCHIVE DESTINATION "lib") IF(NOT WIN32 AND WITH_MYSQLCOMPAT) INSTALL(FILES "${CMAKE_BINARY_DIR}/libmariadb/libmysql${CMAKE_SHARED_LIBRARY_SUFFIX}" "${CMAKE_BINARY_DIR}/libmariadb/libmysqlclient${CMAKE_SHARED_LIBRARY_SUFFIX}" diff --git a/libmariadb/violite.c b/libmariadb/violite.c index 2d379189..781fccc1 100644 --- a/libmariadb/violite.c +++ b/libmariadb/violite.c @@ -144,7 +144,7 @@ Vio *vio_new(my_socket sd, enum enum_vio_type type, my_bool localhost) { /* set to blocking mode by default */ ulong arg=0, r; - r = ioctlsocket(vio->sd,FIONBIO,(void*) &arg, sizeof(arg)); + r = ioctlsocket(vio->sd,FIONBIO,(void*) &arg/*, sizeof(arg)*/); } #endif } @@ -235,7 +235,7 @@ size_t vio_read(Vio * vio, gptr buf, size_t size) my_bool vio_read_peek(Vio *vio, size_t *bytes) { #ifdef _WIN32 - if (ioctlsocket(vio->sd, FIONREAD, (unsigned long)bytes)) + if (ioctlsocket(vio->sd, FIONREAD, (unsigned long*)bytes)) return TRUE; #else char buffer[1024]; @@ -329,7 +329,7 @@ int vio_blocking(Vio * vio, my_bool set_blocking_mode) vio->fcntl_mode |= O_NONBLOCK; /* set bit */ } if (old_fcntl != vio->fcntl_mode) - r = ioctlsocket(vio->sd,FIONBIO,(void*) &arg, sizeof(arg)); + r = ioctlsocket(vio->sd,FIONBIO,(void*) &arg); } #endif /* !defined(_WIN32) && !defined(__EMX__) */ DBUG_RETURN(r); diff --git a/unittest/libmariadb/connection.c b/unittest/libmariadb/connection.c index 4a3d6f35..3bbaeef3 100644 --- a/unittest/libmariadb/connection.c +++ b/unittest/libmariadb/connection.c @@ -522,10 +522,8 @@ static int test_reconnect(MYSQL *mysql) diag("Thread_id before kill: %lu", mysql_thread_id(mysql1)); mysql_kill(mysql, mysql_thread_id(mysql1)); - sleep(2); + sleep(4); - rc= mysql_query(mysql1, "SELECT 1 FROM DUAL LIMIT 0"); - FAIL_IF(rc == 0, "error expected"); rc= mysql_query(mysql1, "SELECT 1 FROM DUAL LIMIT 0"); check_mysql_rc(rc, mysql1); diag("Thread_id after kill: %lu", mysql_thread_id(mysql1)); diff --git a/unittest/libmariadb/misc.c b/unittest/libmariadb/misc.c index a3be4900..e2192eeb 100644 --- a/unittest/libmariadb/misc.c +++ b/unittest/libmariadb/misc.c @@ -931,6 +931,16 @@ static int test_connect_attrs(MYSQL *my) MYSQL_RES *result; int rc, len; + rc= mysql_query(my, "SELECT * FROM performance_schema.session_connect_attrs LIMIT 1"); + if (rc != 0) + { + diag("Server doesn't connection attributes"); + return SKIP; + } + + result= mysql_store_result(my); + mysql_free_result(result); + mysql= mysql_init(NULL); mysql_options4(mysql, MYSQL_OPT_CONNECT_ATTR_ADD, "foo0", "bar0");