1
0
mirror of https://github.com/mariadb-corporation/mariadb-connector-c.git synced 2025-08-08 14:02:17 +03:00

Merge tag 'v3.0.6' into 10.3-server

This commit is contained in:
Sergei Golubchik
2018-08-10 15:01:16 +02:00
13 changed files with 86 additions and 31 deletions

View File

@@ -14,8 +14,13 @@ grep -o ">build-[0-9]*" index.html | grep -o "[0-9]*" | tac | while read -r line
echo "**************************************************************************"
wget -q -o /dev/null -O $line.html http://hasky.askmonty.org/archive/10.3/build-$line/kvm-deb-jessie-amd64/debs/binary/
grep -o ">[^\"]*\.deb" $line.html | grep -o "[^>]*\.deb" | while read -r file ; do
echo "download file: $file"
wget -q -o /dev/null -O .travis/build/$file http://hasky.askmonty.org/archive/10.3/build-$line/kvm-deb-jessie-amd64/debs/binary/$file
if [[ "$file" =~ ^mariadb-plugin.* ]] ;
then
echo "skipped file: $file"
else
echo "download file: $file"
wget -q -o /dev/null -O .travis/build/$file http://hasky.askmonty.org/archive/10.3/build-$line/kvm-deb-jessie-amd64/debs/binary/$file
fi
done
exit

View File

@@ -17,7 +17,7 @@ print_usage () {
gen_cert_subject () {
local fqdn="$1"
[[ "${fqdn}" != "" ]] || print_error "FQDN cannot be blank"
echo "/C=/ST=/O=/localityName=/CN=${fqdn}/organizationalUnitName=/emailAddress=/"
echo "/C=XX/ST=X/O=X/localityName=X/CN=${fqdn}/organizationalUnitName=X/emailAddress=X/"
}
main () {

View File

@@ -0,0 +1,19 @@
#!/bin/bash
# get latest server
git clone -b ${SERVER_BRANCH} https://github.com/mariadb/server ../workdir-server
# copy C/C into libmariadb in server
ls -l ../workdir-server/libmariadb
cp -r . ../workdir-server/libmariadb
cd ../workdir-server
# don't pull in submodules. We want the latest C/C as libmariadb
git config cmake.update-submodules no
# build latest server with latest C/C as libmariadb
# skip to build some storage engines to speed up the build
cmake -DPLUGIN_MROONGA=NO -DPLUGIN_ROCKSDB=NO -DPLUGIN_SPIDER=NO -DPLUGIN_TOKUDB=NO
make -j9
cd mysql-test/
./mysql-test-run.pl --suite=main ${TEST_OPTION} --parallel=auto

View File

@@ -5,7 +5,6 @@
CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR)
INCLUDE(CheckFunctionExists)
IF(COMMAND CMAKE_POLICY)
SET(OLD_POLICIES )
SET(NEW_POLICIES CMP0003 CMP0022 CMP0023)
FOREACH(TYPE OLD NEW)
FOREACH(P ${${TYPE}_POLICIES})
@@ -37,7 +36,7 @@ SET(CC_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
SET(CPACK_PACKAGE_VERSION_MAJOR 3)
SET(CPACK_PACKAGE_VERSION_MINOR 0)
SET(CPACK_PACKAGE_VERSION_PATCH 5)
SET(CPACK_PACKAGE_VERSION_PATCH 6)
SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
MATH(EXPR MARIADB_PACKAGE_VERSION_ID "${CPACK_PACKAGE_VERSION_MAJOR} * 10000 +
${CPACK_PACKAGE_VERSION_MINOR} * 100 +
@@ -256,6 +255,11 @@ INCLUDE(${CC_SOURCE_DIR}/cmake/CheckFunctions.cmake)
# check for various types
INCLUDE(${CC_SOURCE_DIR}/cmake/CheckTypes.cmake)
IF(NOT DEFAULT_CHARSET)
SET(DEFAULT_CHARSET "latin1")
ENDIF()
# convert SSL options to uppercase
IF(WITH_SSL)
STRING(TOUPPER ${WITH_SSL} WITH_SSL)

View File

@@ -31,13 +31,13 @@ IF(NOT INSTALL_LAYOUT)
ENDIF()
SET(INSTALL_LAYOUT ${INSTALL_LAYOUT} CACHE
STRING "Installation layout. Currently supported options are DEFAULT (tar.gz and zip) and RPM")
STRING "Installation layout. Currently supported options are DEFAULT (tar.gz and zip), RPM and DEB")
# On Windows we only provide zip and .msi. Latter one uses a different packager.
IF(UNIX)
IF(INSTALL_LAYOUT MATCHES "RPM")
SET(libmariadb_prefix "/usr")
ELSEIF(INSTALL_LAYOUT MATCHES "DEFAULT")
ELSEIF(INSTALL_LAYOUT MATCHES "DEFAULT|DEB")
SET(libmariadb_prefix ${CMAKE_INSTALL_PREFIX})
ENDIF()
ENDIF()
@@ -47,7 +47,7 @@ IF(CMAKE_DEFAULT_PREFIX_INITIALIZED_BY_DEFAULT)
ENDIF()
# check if the specified installation layout is valid
SET(VALID_INSTALL_LAYOUTS "DEFAULT" "RPM")
SET(VALID_INSTALL_LAYOUTS "DEFAULT" "RPM" "DEB")
LIST(FIND VALID_INSTALL_LAYOUTS "${INSTALL_LAYOUT}" layout_no)
IF(layout_no EQUAL -1)
MESSAGE(FATAL_ERROR "Invalid installation layout ${INSTALL_LAYOUT}. Please specify one of the following layouts: ${VALID_INSTALL_LAYOUTS}")
@@ -64,14 +64,12 @@ ENDIF()
# DEFAULT layout
#
SET(INSTALL_BINDIR_DEFAULT "bin")
SET(INSTALL_LIBDIR_DEFAULT "lib/mariadb")
SET(INSTALL_INCLUDEDIR_DEFAULT "include/mariadb")
SET(INSTALL_DOCDIR_DEFAULT "docs")
SET(INSTALL_PLUGINDIR_DEFAULT "lib/mariadb/plugin")
SET(LIBMARIADB_STATIC_DEFAULT "mariadbclient")
#
# RPM layout
#
@@ -85,6 +83,22 @@ ELSE()
ENDIF()
SET(INSTALL_INCLUDEDIR_RPM "include")
SET(INSTALL_DOCDIR_RPM "docs")
SET(LIBMARIADB_STATIC_RPM "mariadbclient")
#
# DEB layout
#
SET(INSTALL_BINDIR_DEB "bin")
SET(INSTALL_LIBDIR_DEB "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
IF(PLUGINDIR_DEB)
SET(INSTALL_PLUGINDIR_DEB "${INSTALL_LIBDIR_DEB}/${PLUGINDIR_DEB}/plugin")
ELSE()
SET(INSTALL_PLUGINDIR_DEB "${INSTALL_LIBDIR_DEB}/mariadb/plugin")
ENDIF()
SET(INSTALL_INCLUDEDIR_DEB "include/mariadb")
SET(LIBMARIADB_STATIC_DEB "mariadb")
#
# Overwrite defaults
@@ -119,3 +133,6 @@ FOREACH(dir "BIN" "LIB" "INCLUDE" "DOCS" "PLUGIN")
SET(INSTALL_${dir}DIR ${INSTALL_${dir}DIR_${INSTALL_LAYOUT}})
MARK_AS_ADVANCED(INSTALL_${dir}DIR)
ENDFOREACH()
SET(LIBMARIADB_STATIC_NAME ${LIBMARIADB_STATIC_${INSTALL_LAYOUT}})
MARK_AS_ADVANCED(LIBMARIADB_STATIC_NAME)

View File

@@ -265,3 +265,5 @@
#cmakedefine SOCKET_SIZE_TYPE @SOCKET_SIZE_TYPE@
#define MARIADB_DEFAULT_CHARSET "@DEFAULT_CHARSET@"

View File

@@ -387,7 +387,7 @@ ADD_LIBRARY(mariadbclient STATIC ${MARIADB_OBJECTS} ${EMPTY_FILE})
TARGET_LINK_LIBRARIES(mariadbclient ${SYSTEM_LIBS})
IF(UNIX)
ADD_LIBRARY(libmariadb SHARED ${libmariadb_RC} ${MARIADB_OBJECTS} ${EMPTY_FILE} mariadbclient.def)
ADD_LIBRARY(libmariadb SHARED ${libmariadb_RC} ${MARIADB_OBJECTS} ${EMPTY_FILE})
SET_TARGET_PROPERTIES(libmariadb PROPERTIES COMPILE_FLAGS "${CMAKE_SHARED_LIBRARY_C_FLAGS}")
ELSE()
ADD_LIBRARY(libmariadb SHARED ${libmariadb_RC} mariadbclient.def)
@@ -407,7 +407,7 @@ IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
IF (NOT WITH_ASAN)
TARGET_LINK_LIBRARIES (libmariadb "-Wl,--no-undefined")
ENDIF()
TARGET_LINK_LIBRARIES (libmariadb "${CC_BINARY_DIR}/libmariadb/mariadbclient.def")
SET_TARGET_PROPERTIES(libmariadb PROPERTIES LINK_FLAGS "${CC_BINARY_DIR}/libmariadb/mariadbclient.def")
ENDIF()
SET_TARGET_PROPERTIES(mariadbclient PROPERTIES IMPORTED_INTERFACE_LINK_LIBRARIES "${SYSTEM_LIBS}")
@@ -436,6 +436,10 @@ SET_TARGET_PROPERTIES(libmariadb PROPERTIES VERSION
${CPACK_PACKAGE_VERSION_MAJOR}
SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR})
IF(NOT WIN32)
SET_TARGET_PROPERTIES(mariadbclient PROPERTIES OUTPUT_NAME "${LIBMARIADB_STATIC_NAME}")
ENDIF()
INSTALL(TARGETS mariadbclient
COMPONENT Development
DESTINATION ${INSTALL_LIBDIR})
@@ -443,6 +447,7 @@ INSTALL(TARGETS libmariadb
COMPONENT SharedLibraries
DESTINATION ${INSTALL_LIBDIR})
IF(WIN32)
# On Windows, install PDB
INSTALL(FILES $<TARGET_PDB_FILE:libmariadb> DESTINATION "${INSTALL_LIBDIR}"

View File

@@ -22,7 +22,7 @@
#include <mariadb_ctype.h>
#include <ma_string.h>
MARIADB_CHARSET_INFO *ma_default_charset_info = (MARIADB_CHARSET_INFO *)&mariadb_compiled_charsets[21];
MARIADB_CHARSET_INFO *ma_default_charset_info; /* will be set in mysql_server_init */
MARIADB_CHARSET_INFO *ma_charset_bin= (MARIADB_CHARSET_INFO *)&mariadb_compiled_charsets[32];
MARIADB_CHARSET_INFO *ma_charset_latin1= (MARIADB_CHARSET_INFO *)&mariadb_compiled_charsets[5];
MARIADB_CHARSET_INFO *ma_charset_utf8_general_ci= (MARIADB_CHARSET_INFO *)&mariadb_compiled_charsets[21];

View File

@@ -90,6 +90,7 @@ extern my_bool mysql_ps_subsystem_initialized;
extern my_bool mysql_handle_local_infile(MYSQL *mysql, const char *filename);
extern const MARIADB_CHARSET_INFO * mysql_find_charset_nr(uint charsetnr);
extern const MARIADB_CHARSET_INFO * mysql_find_charset_name(const char * const name);
extern my_bool set_default_charset_by_name(const char *cs_name, myf flags __attribute__((unused)));
extern int run_plugin_auth(MYSQL *mysql, char *data, uint data_len,
const char *data_plugin, const char *db);
extern int net_add_multi_command(NET *net, uchar command, const uchar *packet,
@@ -996,7 +997,7 @@ mysql_init(MYSQL *mysql)
goto error;
mysql->options.report_data_truncation= 1;
mysql->options.connect_timeout=CONNECT_TIMEOUT;
mysql->charset= ma_default_charset_info;
mysql->charset= mysql_find_charset_name(MARIADB_DEFAULT_CHARSET);
mysql->methods= &MARIADB_DEFAULT_METHODS;
strcpy(mysql->net.sqlstate, "00000");
mysql->net.last_error[0]= mysql->net.last_errno= 0;
@@ -1483,14 +1484,14 @@ MYSQL *mthd_my_real_connect(MYSQL *mysql, const char *host, const char *user,
if (mysql->options.charset_name)
mysql->charset= mysql_find_charset_name(mysql->options.charset_name);
else
mysql->charset=ma_default_charset_info;
mysql->charset=mysql_find_charset_name(MARIADB_DEFAULT_CHARSET);
if (!mysql->charset)
{
net->last_errno=CR_CANT_READ_CHARSET;
sprintf(net->last_error,ER(net->last_errno),
mysql->options.charset_name ? mysql->options.charset_name :
"unknown",
MARIADB_DEFAULT_CHARSET,
"compiled_in");
goto error;
}
@@ -1724,9 +1725,9 @@ my_bool STDCALL mysql_change_user(MYSQL *mysql, const char *user,
int rc;
if (mysql->options.charset_name)
mysql->charset =mysql_find_charset_name(mysql->options.charset_name);
mysql->charset= mysql_find_charset_name(mysql->options.charset_name);
else
mysql->charset=ma_default_charset_info;
mysql->charset=mysql_find_charset_name(MARIADB_DEFAULT_CHARSET);
mysql->user= strdup(user ? user : "");
mysql->passwd= strdup(passwd ? passwd : "");
@@ -1744,7 +1745,7 @@ my_bool STDCALL mysql_change_user(MYSQL *mysql, const char *user,
free(s_passwd);
free(s_db);
if (db && !(mysql->db= strdup(db)))
if (!mysql->db && db && !(mysql->db= strdup(db)))
{
SET_CLIENT_ERROR(mysql, CR_OUT_OF_MEMORY, SQLSTATE_UNKNOWN, 0);
rc= 1;
@@ -3488,6 +3489,7 @@ static void mysql_once_init()
ma_init(); /* Will init threads */
init_client_errs();
get_default_configuration_dirs();
set_default_charset_by_name(MARIADB_DEFAULT_CHARSET, 0);
if (mysql_client_plugin_init())
{
#ifdef _WIN32

View File

@@ -726,15 +726,14 @@ ssize_t ma_tls_write_async(MARIADB_PVIO *pvio,
ssize_t ma_tls_read(MARIADB_TLS *ctls, const uchar* buffer, size_t length)
{
ssize_t rc;
MYSQL *mysql= (MYSQL *)SSL_get_app_data(ctls->ssl);
MARIADB_PVIO *pvio= mysql->net.pvio;
MARIADB_PVIO *pvio= ctls->pvio;
while ((rc= SSL_read((SSL *)ctls->ssl, (void *)buffer, (int)length)) < 0)
{
int error= SSL_get_error((SSL *)ctls->ssl, rc);
if (error != SSL_ERROR_WANT_READ)
return rc;
if (pvio->methods->wait_io_or_timeout(pvio, TRUE, mysql->options.read_timeout) < 1)
if (pvio->methods->wait_io_or_timeout(pvio, TRUE, pvio->mysql->options.read_timeout) < 1)
return rc;
}
return rc;
@@ -743,15 +742,14 @@ ssize_t ma_tls_read(MARIADB_TLS *ctls, const uchar* buffer, size_t length)
ssize_t ma_tls_write(MARIADB_TLS *ctls, const uchar* buffer, size_t length)
{
ssize_t rc;
MYSQL *mysql= (MYSQL *)SSL_get_app_data(ctls->ssl);
MARIADB_PVIO *pvio= mysql->net.pvio;
MARIADB_PVIO *pvio= ctls->pvio;
while ((rc= SSL_write((SSL *)ctls->ssl, (void *)buffer, (int)length)) <= 0)
{
int error= SSL_get_error((SSL *)ctls->ssl, rc);
if (error != SSL_ERROR_WANT_WRITE)
return rc;
if (pvio->methods->wait_io_or_timeout(pvio, TRUE, mysql->options.write_timeout) < 1)
if (pvio->methods->wait_io_or_timeout(pvio, TRUE, pvio->mysql->options.write_timeout) < 1)
return rc;
}
return rc;

View File

@@ -772,7 +772,7 @@ my_bool pvio_socket_connect(MARIADB_PVIO *pvio, MA_PVIO_CINFO *cinfo)
/* Abstract socket */
if (cinfo->unix_socket[0] == '@')
{
strcpy(UNIXaddr.sun_path + 1, cinfo->unix_socket + 1);
strncpy(UNIXaddr.sun_path + 1, cinfo->unix_socket + 1, 107);
port_length+= offsetof(struct sockaddr_un, sun_path);
}
else

View File

@@ -1084,6 +1084,7 @@ static int test_auth256(MYSQL *my)
if (!mysql_client_find_plugin(mysql, "sha256_password", 3))
{
diag("sha256_password plugin not available");
mysql_close(mysql);
return SKIP;
}
@@ -1097,6 +1098,7 @@ static int test_auth256(MYSQL *my)
if (!num_rows)
{
diag("server doesn't support sha256 authentication");
mysql_close(mysql);
return SKIP;
}
@@ -1365,12 +1367,13 @@ static int test_conc315(MYSQL *mysql)
return SKIP;
mysql_get_optionv(mysql, MYSQL_SET_CHARSET_NAME, (void *)&csname);
FAIL_UNLESS(strcmp(csname, "utf8") == 0, "Wrong default character set");
diag("csname=%s", csname);
FAIL_UNLESS(strcmp(csname, MARIADB_DEFAULT_CHARSET) == 0, "Wrong default character set");
rc= mysql_change_user(mysql, username, password, schema);
check_mysql_rc(rc, mysql);
mysql_get_optionv(mysql, MYSQL_SET_CHARSET_NAME, (void *)&csname);
FAIL_UNLESS(strcmp(csname, "utf8") == 0, "Wrong default character set");
FAIL_UNLESS(strcmp(csname, MARIADB_DEFAULT_CHARSET) == 0, "Wrong default character set");
return OK;
}
#ifndef WIN32
@@ -1531,7 +1534,7 @@ struct my_tests_st my_tests[] = {
{"test_conc327", test_conc327, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},
{"test_conc317", test_conc317, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},
#endif
{"test_conc315", test_conc315, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},
{"test_conc315", test_conc315, TEST_CONNECTION_NEW, 0, NULL, NULL},
{"test_expired_pw", test_expired_pw, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},
{"test_conc276", test_conc276, TEST_CONNECTION_NONE, 0, NULL, NULL},
{"test_mdev13100", test_mdev13100, TEST_CONNECTION_DEFAULT, 0, NULL, NULL},

View File

@@ -30,7 +30,7 @@ FOREACH(plugin ${PLUGINS_DYNAMIC})
SET(TARGET ${plugin})
# Get dependencies
SET(DYNAMIC_TARGETS ${DYNAMIC_TARGETS} ${TARGET})
GET_PROPERTY(FILE TARGET ${TARGET} PROPERTY LOCATION)
SET(FILE ${CC_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${TARGET}.dll)
MESSAGE(STATUS "Location for ${TARGET}: ${FILE}")
# build file list
STRING(REPLACE "$(Configuration)" "RelWithDebInfo" FILE ${FILE})