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");