You've already forked mariadb-connector-c
mirror of
https://github.com/mariadb-corporation/mariadb-connector-c.git
synced 2025-08-07 02:42:49 +03:00
Added mingw support (Win32). Special thanks to Eric Trinh for his patch!
This commit is contained in:
@@ -28,7 +28,7 @@ OPTION(WITH_EXTERNAL_ZLIB "Enables use of external zlib" OFF)
|
|||||||
###############
|
###############
|
||||||
|
|
||||||
|
|
||||||
IF(WIN32)
|
IF(MSVC)
|
||||||
# Speedup system tests
|
# Speedup system tests
|
||||||
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/WindowsCache.cmake)
|
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/WindowsCache.cmake)
|
||||||
IF (MSVC)
|
IF (MSVC)
|
||||||
@@ -127,7 +127,9 @@ IF(WIN32)
|
|||||||
SET(HAVE_THREADS 1)
|
SET(HAVE_THREADS 1)
|
||||||
ADD_DEFINITIONS(-DHAVE_DLOPEN)
|
ADD_DEFINITIONS(-DHAVE_DLOPEN)
|
||||||
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
|
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()
|
ELSEIF()
|
||||||
SET(HAVE_THREADS ${CMAKE_USE_PTHREADS})
|
SET(HAVE_THREADS ${CMAKE_USE_PTHREADS})
|
||||||
ENDIF()
|
ENDIF()
|
||||||
@@ -179,7 +181,7 @@ IF(BUILD_DOCS)
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
|
||||||
IF(WIN32)
|
IF(MSVC)
|
||||||
SET(CMAKE_INSTALL_PREFIX "")
|
SET(CMAKE_INSTALL_PREFIX "")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
@@ -297,7 +297,9 @@ typedef unsigned short ushort;
|
|||||||
|
|
||||||
#if defined(__GNUC__)
|
#if defined(__GNUC__)
|
||||||
#define function_volatile volatile
|
#define function_volatile volatile
|
||||||
|
#ifndef my_reinterpret_cast
|
||||||
#define my_reinterpret_cast(A) reinterpret_cast<A>
|
#define my_reinterpret_cast(A) reinterpret_cast<A>
|
||||||
|
#endif
|
||||||
#define my_const_cast(A) const_cast<A>
|
#define my_const_cast(A) const_cast<A>
|
||||||
#elif !defined(my_reinterpret_cast)
|
#elif !defined(my_reinterpret_cast)
|
||||||
#define my_reinterpret_cast(A) (A)
|
#define my_reinterpret_cast(A) (A)
|
||||||
@@ -741,7 +743,7 @@ typedef char bool; /* Ordinary boolean values 0 1 */
|
|||||||
|
|
||||||
#define NOT_FIXED_DEC 31
|
#define NOT_FIXED_DEC 31
|
||||||
|
|
||||||
#ifdef _WIN32
|
#if defined(_WIN32) && defined(_MSVC)
|
||||||
#define MYSQLND_LLU_SPEC "%I64u"
|
#define MYSQLND_LLU_SPEC "%I64u"
|
||||||
#define MYSQLND_LL_SPEC "%I64d"
|
#define MYSQLND_LL_SPEC "%I64d"
|
||||||
#ifndef L64
|
#ifndef L64
|
||||||
|
@@ -61,10 +61,12 @@ typedef struct {
|
|||||||
CRITICAL_SECTION waiters_count_lock;
|
CRITICAL_SECTION waiters_count_lock;
|
||||||
} pthread_cond_t;
|
} pthread_cond_t;
|
||||||
|
|
||||||
|
#ifndef _TIMESPEC_DEFINED
|
||||||
struct timespec { /* For pthread_cond_timedwait() */
|
struct timespec { /* For pthread_cond_timedwait() */
|
||||||
time_t tv_sec;
|
time_t tv_sec;
|
||||||
long tv_nsec;
|
long tv_nsec;
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef int pthread_mutexattr_t;
|
typedef int pthread_mutexattr_t;
|
||||||
#define pthread_self() GetCurrentThreadId()
|
#define pthread_self() GetCurrentThreadId()
|
||||||
|
@@ -136,7 +136,9 @@ extern my_string my_strndup(const char *from, size_t length, myf MyFlags);
|
|||||||
#pragma alloca
|
#pragma alloca
|
||||||
#endif /* _AIX */
|
#endif /* _AIX */
|
||||||
#if defined(__GNUC__) && !defined(HAVE_ALLOCA_H)
|
#if defined(__GNUC__) && !defined(HAVE_ALLOCA_H)
|
||||||
|
#ifndef alloca
|
||||||
#define alloca __builtin_alloca
|
#define alloca __builtin_alloca
|
||||||
|
#endif
|
||||||
#endif /* GNUC */
|
#endif /* GNUC */
|
||||||
#define my_alloca(SZ) alloca((size_t) (SZ))
|
#define my_alloca(SZ) alloca((size_t) (SZ))
|
||||||
#define my_afree(PTR) {}
|
#define my_afree(PTR) {}
|
||||||
|
@@ -98,9 +98,12 @@ my_stmt_codec.c
|
|||||||
client_plugin.c
|
client_plugin.c
|
||||||
my_auth.c
|
my_auth.c
|
||||||
ma_secure.c
|
ma_secure.c
|
||||||
libmariadb_exports.def
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
IF(MSVC)
|
||||||
|
SET(LIBMARIADB_SOURCES ${LIBMARIADB_SOURCES} libmariadb_exports.def)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
IF(WIN32)
|
IF(WIN32)
|
||||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/win-iconv)
|
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/win-iconv)
|
||||||
SET(LIBMARIADB_SOURCES ${LIBMARIADB_SOURCES}
|
SET(LIBMARIADB_SOURCES ${LIBMARIADB_SOURCES}
|
||||||
@@ -208,9 +211,9 @@ ENDIF()
|
|||||||
|
|
||||||
INSTALL(TARGETS
|
INSTALL(TARGETS
|
||||||
libmariadb mariadbclient
|
libmariadb mariadbclient
|
||||||
RUNTIME DESTINATION "lib/mariadb"
|
RUNTIME DESTINATION "lib"
|
||||||
LIBRARY DESTINATION "lib/mariadb"
|
LIBRARY DESTINATION "lib"
|
||||||
ARCHIVE DESTINATION "lib/mariadb")
|
ARCHIVE DESTINATION "lib")
|
||||||
IF(NOT WIN32 AND WITH_MYSQLCOMPAT)
|
IF(NOT WIN32 AND WITH_MYSQLCOMPAT)
|
||||||
INSTALL(FILES "${CMAKE_BINARY_DIR}/libmariadb/libmysql${CMAKE_SHARED_LIBRARY_SUFFIX}"
|
INSTALL(FILES "${CMAKE_BINARY_DIR}/libmariadb/libmysql${CMAKE_SHARED_LIBRARY_SUFFIX}"
|
||||||
"${CMAKE_BINARY_DIR}/libmariadb/libmysqlclient${CMAKE_SHARED_LIBRARY_SUFFIX}"
|
"${CMAKE_BINARY_DIR}/libmariadb/libmysqlclient${CMAKE_SHARED_LIBRARY_SUFFIX}"
|
||||||
|
@@ -144,7 +144,7 @@ Vio *vio_new(my_socket sd, enum enum_vio_type type, my_bool localhost)
|
|||||||
{
|
{
|
||||||
/* set to blocking mode by default */
|
/* set to blocking mode by default */
|
||||||
ulong arg=0, r;
|
ulong arg=0, r;
|
||||||
r = ioctlsocket(vio->sd,FIONBIO,(void*) &arg, sizeof(arg));
|
r = ioctlsocket(vio->sd,FIONBIO,(void*) &arg/*, sizeof(arg)*/);
|
||||||
}
|
}
|
||||||
#endif
|
#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)
|
my_bool vio_read_peek(Vio *vio, size_t *bytes)
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
if (ioctlsocket(vio->sd, FIONREAD, (unsigned long)bytes))
|
if (ioctlsocket(vio->sd, FIONREAD, (unsigned long*)bytes))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
#else
|
#else
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
@@ -329,7 +329,7 @@ int vio_blocking(Vio * vio, my_bool set_blocking_mode)
|
|||||||
vio->fcntl_mode |= O_NONBLOCK; /* set bit */
|
vio->fcntl_mode |= O_NONBLOCK; /* set bit */
|
||||||
}
|
}
|
||||||
if (old_fcntl != vio->fcntl_mode)
|
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__) */
|
#endif /* !defined(_WIN32) && !defined(__EMX__) */
|
||||||
DBUG_RETURN(r);
|
DBUG_RETURN(r);
|
||||||
|
@@ -522,10 +522,8 @@ static int test_reconnect(MYSQL *mysql)
|
|||||||
|
|
||||||
diag("Thread_id before kill: %lu", mysql_thread_id(mysql1));
|
diag("Thread_id before kill: %lu", mysql_thread_id(mysql1));
|
||||||
mysql_kill(mysql, 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");
|
rc= mysql_query(mysql1, "SELECT 1 FROM DUAL LIMIT 0");
|
||||||
check_mysql_rc(rc, mysql1);
|
check_mysql_rc(rc, mysql1);
|
||||||
diag("Thread_id after kill: %lu", mysql_thread_id(mysql1));
|
diag("Thread_id after kill: %lu", mysql_thread_id(mysql1));
|
||||||
|
@@ -931,6 +931,16 @@ static int test_connect_attrs(MYSQL *my)
|
|||||||
MYSQL_RES *result;
|
MYSQL_RES *result;
|
||||||
int rc, len;
|
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= mysql_init(NULL);
|
||||||
|
|
||||||
mysql_options4(mysql, MYSQL_OPT_CONNECT_ATTR_ADD, "foo0", "bar0");
|
mysql_options4(mysql, MYSQL_OPT_CONNECT_ATTR_ADD, "foo0", "bar0");
|
||||||
|
Reference in New Issue
Block a user