summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt1
-rw-r--r--client/CMakeLists.txt43
-rw-r--r--client/client_priv.h1
-rw-r--r--client/get_password.c (renamed from mysys/get_password.c)0
-rw-r--r--client/mysql.cc35
-rw-r--r--client/mysql_plugin.c1
-rw-r--r--client/mysqladmin.cc28
-rw-r--r--client/mysqlbinlog.cc22
-rw-r--r--client/mysqlcheck.c3
-rw-r--r--client/mysqldump.c4
-rw-r--r--client/mysqlimport.c4
-rw-r--r--client/mysqlshow.c4
-rw-r--r--client/mysqltest.cc40
-rw-r--r--cmake/iconv.cmake78
-rw-r--r--cmake/make_dist.cmake.in12
-rw-r--r--cmake/mariadb_connector_c.cmake27
-rw-r--r--include/my_global.h9
-rw-r--r--include/my_sys.h1
-rw-r--r--include/mysql.h5
-rw-r--r--include/mysql_com.h7
-rw-r--r--include/sql_common.h6
-rw-r--r--include/sslopt-vars.h1
-rw-r--r--libmariadb/CMakeLists.txt127
-rw-r--r--libmysql/CMakeLists.txt97
-rw-r--r--libmysqld/CMakeLists.txt4
-rw-r--r--libmysqld/lib_sql.cc18
-rw-r--r--mysql-test/r/openssl_1.result56
-rw-r--r--mysql-test/r/openssl_6975,tlsv10.result12
-rw-r--r--mysql-test/r/openssl_6975,tlsv12.result12
-rw-r--r--mysql-test/r/ssl.result16
-rw-r--r--mysql-test/r/ssl_8k_key.result4
-rw-r--r--mysql-test/r/ssl_ca.result18
-rw-r--r--mysql-test/r/ssl_compress.result12
-rw-r--r--mysql-test/r/ssl_timeout.result6
-rw-r--r--mysql-test/r/userstat.result14
-rw-r--r--mysql-test/t/openssl_1.test58
-rw-r--r--mysql-test/t/ssl.test10
-rw-r--r--mysql-test/t/ssl_7937.test2
-rw-r--r--mysql-test/t/ssl_8k_key-master.opt1
-rw-r--r--mysql-test/t/ssl_8k_key.test2
-rw-r--r--mysql-test/t/ssl_ca.test17
-rw-r--r--mysql-test/t/ssl_compress.test6
-rw-r--r--mysql-test/t/ssl_timeout.test3
-rw-r--r--mysql-test/t/userstat.test3
-rw-r--r--mysys/CMakeLists.txt3
-rw-r--r--mysys/typelib.c7
-rw-r--r--sql-common/client.c13
-rw-r--r--sql-common/my_time.c5
-rw-r--r--sql/CMakeLists.txt2
-rw-r--r--sql/log_event.cc2
-rw-r--r--sql/mysqld.cc2
-rw-r--r--sql/slave.cc20
-rw-r--r--sql/sql_acl.cc4
-rw-r--r--sql/sql_class.cc38
-rw-r--r--sql/sql_class.h27
-rw-r--r--sql/sql_connect.cc4
-rw-r--r--tests/CMakeLists.txt20
-rw-r--r--tests/mysql_client_fw.c7
-rw-r--r--tests/mysql_client_test.c59
-rw-r--r--tests/nonblock-wrappers.h3
-rw-r--r--unittest/mysys/CMakeLists.txt3
61 files changed, 412 insertions, 637 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 89b2d6b8abf..3ace4084acd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -359,7 +359,6 @@ ADD_SUBDIRECTORY(strings)
ADD_SUBDIRECTORY(vio)
ADD_SUBDIRECTORY(mysys)
ADD_SUBDIRECTORY(mysys_ssl)
-ADD_SUBDIRECTORY(libmariadb)
ADD_SUBDIRECTORY(libmysql)
ADD_SUBDIRECTORY(client)
ADD_SUBDIRECTORY(extra)
diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt
index 50280834a68..e4643ad9358 100644
--- a/client/CMakeLists.txt
+++ b/client/CMakeLists.txt
@@ -26,23 +26,13 @@ INCLUDE_DIRECTORIES(
${CMAKE_CURRENT_BINARY_DIR}
)
-ADD_DEFINITIONS(-DHAVE_OPENSSL=1)
-
-INCLUDE_DIRECTORIES(
-BEFORE
-${CONNECTOR_C_INSTALLDIR}/include/mariadb)
-
## We will need libeay32.dll and ssleay32.dll when running client executables.
COPY_OPENSSL_DLLS(copy_openssl_client)
-
-ADD_DEFINITIONS(-DHAVE_LIBMARIADB=1)
-SET(CLIENT_LIB ${CONNECTOR_C_LIBS} mysys)
-
ADD_DEFINITIONS(${SSL_DEFINES})
MYSQL_ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc
${CMAKE_SOURCE_DIR}/sql/sql_string.cc)
-TARGET_LINK_LIBRARIES(mysql ${CLIENT_LIB})
+TARGET_LINK_LIBRARIES(mysql mysqlclient)
IF(UNIX)
TARGET_LINK_LIBRARIES(mysql ${MY_READLINE_LIBRARY})
SET_TARGET_PROPERTIES(mysql PROPERTIES ENABLE_EXPORTS TRUE)
@@ -50,40 +40,39 @@ ENDIF(UNIX)
MYSQL_ADD_EXECUTABLE(mysqltest mysqltest.cc COMPONENT Test)
SET_SOURCE_FILES_PROPERTIES(mysqltest.cc PROPERTIES COMPILE_FLAGS "-DTHREADS")
-TARGET_LINK_LIBRARIES(mysqltest ${CLIENT_LIB} pcre pcreposix)
+TARGET_LINK_LIBRARIES(mysqltest mysqlclient pcre pcreposix)
SET_TARGET_PROPERTIES(mysqltest PROPERTIES ENABLE_EXPORTS TRUE)
MYSQL_ADD_EXECUTABLE(mysqlcheck mysqlcheck.c)
-TARGET_LINK_LIBRARIES(mysqlcheck ${CLIENT_LIB})
+TARGET_LINK_LIBRARIES(mysqlcheck mysqlclient)
MYSQL_ADD_EXECUTABLE(mysqldump mysqldump.c ../sql-common/my_user.c)
-TARGET_LINK_LIBRARIES(mysqldump ${CLIENT_LIB})
-
+TARGET_LINK_LIBRARIES(mysqldump mysqlclient)
MYSQL_ADD_EXECUTABLE(mysqlimport mysqlimport.c)
SET_SOURCE_FILES_PROPERTIES(mysqlimport.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
-TARGET_LINK_LIBRARIES(mysqlimport ${CLIENT_LIB})
+TARGET_LINK_LIBRARIES(mysqlimport mysqlclient)
MYSQL_ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c COMPONENT Server)
-TARGET_LINK_LIBRARIES(mysql_upgrade ${CLIENT_LIB})
+TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient)
ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs)
MYSQL_ADD_EXECUTABLE(mysqlshow mysqlshow.c)
-TARGET_LINK_LIBRARIES(mysqlshow ${CLIENT_LIB})
+TARGET_LINK_LIBRARIES(mysqlshow mysqlclient)
MYSQL_ADD_EXECUTABLE(mysql_plugin mysql_plugin.c)
-TARGET_LINK_LIBRARIES(mysql_plugin ${CLIENT_LIB})
+TARGET_LINK_LIBRARIES(mysql_plugin mysqlclient)
MYSQL_ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc)
-TARGET_LINK_LIBRARIES(mysqlbinlog ${CLIENT_LIB})
+TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient)
-MYSQL_ADD_EXECUTABLE(mysqladmin mysqladmin.cc ../sql/password.c)
-TARGET_LINK_LIBRARIES(mysqladmin ${CLIENT_LIB})
+MYSQL_ADD_EXECUTABLE(mysqladmin mysqladmin.cc)
+TARGET_LINK_LIBRARIES(mysqladmin mysqlclient)
MYSQL_ADD_EXECUTABLE(mysqlslap mysqlslap.c)
SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
-TARGET_LINK_LIBRARIES(mysqlslap ${CLIENT_LIB})
+TARGET_LINK_LIBRARIES(mysqlslap mysqlclient)
# "WIN32" also covers 64 bit. "echo" is used in some files below "mysql-test/".
IF(WIN32)
@@ -92,16 +81,10 @@ ENDIF(WIN32)
# async_example is just a code example, do not install it.
ADD_EXECUTABLE(async_example async_example.c)
-TARGET_LINK_LIBRARIES(async_example ${CLIENT_LIB})
+TARGET_LINK_LIBRARIES(async_example mysqlclient)
SET_TARGET_PROPERTIES (mysqlcheck mysqldump mysqlimport mysql_upgrade mysqlshow mysqlslap mysql_plugin async_example
PROPERTIES HAS_CXX TRUE)
-
-FOREACH(t mysql mysqltest mysqltest mysqlcheck mysqldump mysqlimport mysql_upgrade mysqlshow mysql_plugin mysqlbinlog
- mysqladmin mysqlslap async_example)
- ADD_DEPENDENCIES(${t} GenError mariadb_connector_c)
-ENDFOREACH()
-
ADD_DEFINITIONS(-DHAVE_DLOPEN)
diff --git a/client/client_priv.h b/client/client_priv.h
index 1d85791fa73..c0c4954cdf0 100644
--- a/client/client_priv.h
+++ b/client/client_priv.h
@@ -24,7 +24,6 @@
#include <mysql.h>
#include <errmsg.h>
#include <my_getopt.h>
-#include <mysql_version.h>
#ifndef WEXITSTATUS
# ifdef __WIN__
diff --git a/mysys/get_password.c b/client/get_password.c
index 8a507d94e9b..8a507d94e9b 100644
--- a/mysys/get_password.c
+++ b/client/get_password.c
diff --git a/client/mysql.cc b/client/mysql.cc
index 181320e436e..2cc818bd6c1 100644
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -1143,9 +1143,6 @@ int main(int argc,char *argv[])
outfile[0]=0; // no (default) outfile
strmov(pager, "stdout"); // the default, if --pager wasn't given
-
- mysql_init(&mysql);
-
{
char *tmp=getenv("PAGER");
if (tmp && strlen(tmp))
@@ -1206,6 +1203,7 @@ int main(int argc,char *argv[])
glob_buffer.realloc(512);
completion_hash_init(&ht, 128);
init_alloc_root(&hash_mem_root, 16384, 0, MYF(0));
+ bzero((char*) &mysql, sizeof(mysql));
if (sql_connect(current_host,current_db,current_user,opt_password,
opt_silent))
{
@@ -1367,8 +1365,6 @@ static bool do_connect(MYSQL *mysql, const char *host, const char *user,
opt_ssl_capath, opt_ssl_cipher);
mysql_options(mysql, MYSQL_OPT_SSL_CRL, opt_ssl_crl);
mysql_options(mysql, MYSQL_OPT_SSL_CRLPATH, opt_ssl_crlpath);
- char enforce= 1;
- mysql_options(mysql, MYSQL_OPT_SSL_ENFORCE, &enforce);
}
mysql_options(mysql,MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
(char*)&opt_ssl_verify_server_cert);
@@ -4621,23 +4617,6 @@ sql_real_connect(char *host,char *database,char *user,char *password,
mysql_options(&mysql,MYSQL_OPT_COMPRESS,NullS);
if (using_opt_local_infile)
mysql_options(&mysql,MYSQL_OPT_LOCAL_INFILE, (char*) &opt_local_infile);
-#if !defined(EMBEDDED_LIBRARY)
- if (opt_use_ssl)
- {
- mysql_ssl_set(&mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca,
- opt_ssl_capath, opt_ssl_cipher);
- mysql_options(&mysql, MYSQL_OPT_SSL_CRL, opt_ssl_crl);
- mysql_options(&mysql, MYSQL_OPT_SSL_CRLPATH, opt_ssl_crlpath);
- }
- mysql_options(&mysql,MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
- (my_bool*)&opt_ssl_verify_server_cert);
-#endif
- if (opt_protocol)
- mysql_options(&mysql,MYSQL_OPT_PROTOCOL,(char*)&opt_protocol);
-#ifdef HAVE_SMEM
- if (shared_memory_base_name)
- mysql_options(&mysql,MYSQL_SHARED_MEMORY_BASE_NAME,shared_memory_base_name);
-#endif
if (safe_updates)
{
char init_command[100];
@@ -4662,13 +4641,12 @@ sql_real_connect(char *host,char *database,char *user,char *password,
}
return -1; // Retryable
}
-
- charset_info= get_charset_by_name(mysql.charset->name, MYF(0));
-
+
+ charset_info= mysql.charset;
connected=1;
#ifndef EMBEDDED_LIBRARY
- mysql_options(&mysql, MYSQL_OPT_RECONNECT, &debug_info_flag);
+ mysql.reconnect= debug_info_flag; // We want to know if this happens
/*
CLIENT_PROGRESS_OBSOLETE is set only if we requested it in
@@ -4677,10 +4655,7 @@ sql_real_connect(char *host,char *database,char *user,char *password,
if (mysql.client_flag & CLIENT_PROGRESS_OBSOLETE)
mysql_options(&mysql, MYSQL_PROGRESS_CALLBACK, (void*) report_progress);
#else
- {
- my_bool reconnect= 1;
- mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect);
- }
+ mysql.reconnect= 1;
#endif
#ifdef HAVE_READLINE
build_completion_hash(opt_rehash, 1);
diff --git a/client/mysql_plugin.c b/client/mysql_plugin.c
index 72fa9485c6c..ebf04c9a8c3 100644
--- a/client/mysql_plugin.c
+++ b/client/mysql_plugin.c
@@ -20,7 +20,6 @@
#include <mysql.h>
#include <my_getopt.h>
#include <my_dir.h>
-#include <mysql_version.h>
#define SHOW_VERSION "1.0.0"
#define PRINT_VERSION do { printf("%s Ver %s Distrib %s\n", \
diff --git a/client/mysqladmin.cc b/client/mysqladmin.cc
index fcc4e626f2f..fe9db6ea93d 100644
--- a/client/mysqladmin.cc
+++ b/client/mysqladmin.cc
@@ -23,10 +23,8 @@
#include <sys/stat.h>
#include <mysql.h>
#include <sql_common.h>
-#include <mysql_version.h>
#include <welcome_copyright_notice.h>
#include <my_rnd.h>
-#include <password.h>
#define ADMIN_VERSION "9.1"
#define MAX_MYSQL_VAR 512
@@ -442,7 +440,7 @@ int main(int argc,char *argv[])
didn't signal for us to die. Otherwise, signal failure.
*/
- if (mysql.net.pvio == 0)
+ if (mysql.net.vio == 0)
{
if (option_wait && !interrupted)
{
@@ -523,8 +521,7 @@ static my_bool sql_connect(MYSQL *mysql, uint wait)
if (mysql_real_connect(mysql,host,user,opt_password,NullS,tcp_port,
unix_port, CLIENT_REMEMBER_OPTIONS))
{
- my_bool reconnect= 1;
- mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
+ mysql->reconnect= 1;
if (info)
{
fputs("\n",stderr);
@@ -545,16 +542,16 @@ static my_bool sql_connect(MYSQL *mysql, uint wait)
{
fprintf(stderr,
"Check that mysqld is running and that the socket: '%s' exists!\n",
- unix_port ? unix_port : MYSQL_UNIX_ADDR);
+ unix_port ? unix_port : mysql_unix_port);
}
else if (mysql_errno(mysql) == CR_CONN_HOST_ERROR ||
mysql_errno(mysql) == CR_UNKNOWN_HOST)
{
fprintf(stderr,"Check that mysqld is running on %s",host);
fprintf(stderr," and that the port is %d.\n",
- tcp_port ? tcp_port: MYSQL_PORT);
+ tcp_port ? tcp_port: mysql_port);
fprintf(stderr,"You can check this by doing 'telnet %s %d'\n",
- host, tcp_port ? tcp_port: MYSQL_PORT);
+ host, tcp_port ? tcp_port: mysql_port);
}
}
return 1;
@@ -1080,9 +1077,9 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
}
}
if (old)
- my_make_scrambled_password_323(crypted_pw, typed_password, sizeof(crypted_pw));
+ make_scrambled_password_323(crypted_pw, typed_password);
else
- my_make_scrambled_password(crypted_pw, typed_password, sizeof(crypted_pw));
+ make_scrambled_password(crypted_pw, typed_password);
}
else
crypted_pw[0]=0; /* No password */
@@ -1190,9 +1187,7 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
break;
}
case ADMIN_PING:
- {
- my_bool reconnect= 0;
- mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
+ mysql->reconnect=0; /* We want to know of reconnects */
if (!mysql_ping(mysql))
{
if (option_silent < 2)
@@ -1202,8 +1197,7 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
{
if (mysql_errno(mysql) == CR_SERVER_GONE_ERROR)
{
- reconnect= 1;
- mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
+ mysql->reconnect=1;
if (!mysql_ping(mysql))
puts("connection was down, but mysqld is now alive");
}
@@ -1214,10 +1208,8 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
return -1;
}
}
- reconnect=1; /* Automatic reconnect is default */
- mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
+ mysql->reconnect=1; /* Automatic reconnect is default */
break;
- }
default:
my_printf_error(0, "Unknown command: '%-.60s'", error_flags, argv[0]);
return 1;
diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc
index b3c73d3ce68..fa75c423d1b 100644
--- a/client/mysqlbinlog.cc
+++ b/client/mysqlbinlog.cc
@@ -52,18 +52,14 @@
#include <algorithm>
-#ifdef LIBMARIADB
-#define my_net_write ma_net_write
-#define net_flush ma_net_flush
-#define net_safe_read ma_net_safe_read
-#define my_net_read ma_net_read
-#endif
-
Rpl_filter *binlog_filter= 0;
#define BIN_LOG_HEADER_SIZE 4
#define PROBE_HEADER_LEN (EVENT_LEN_OFFSET+4)
+
+#define CLIENT_CAPABILITIES (CLIENT_LONG_PASSWORD | CLIENT_LONG_FLAG | CLIENT_LOCAL_FILES)
+
/* Needed for Rpl_filter */
CHARSET_INFO* system_charset_info= &my_charset_utf8_general_ci;
@@ -90,11 +86,6 @@ static const char *load_groups[]=
static void error(const char *format, ...) ATTRIBUTE_FORMAT(printf, 1, 2);
static void warning(const char *format, ...) ATTRIBUTE_FORMAT(printf, 1, 2);
-
-extern "C" ulong my_net_read(NET *net);
-extern "C" unsigned char *mysql_net_store_length(unsigned char *packet, size_t length);
-#define net_store_length mysql_net_store_length
-
static bool one_database=0, to_last_remote_log= 0, disable_log_bin= 0;
static bool opt_hexdump= 0, opt_version= 0;
const char *base64_output_mode_names[]=
@@ -1773,7 +1764,6 @@ static int parse_args(int *argc, char*** argv)
*/
static Exit_status safe_connect()
{
- my_bool reconnect= 1;
/* Close any old connections to MySQL */
if (mysql)
mysql_close(mysql);
@@ -1819,7 +1809,7 @@ static Exit_status safe_connect()
error("Failed on connect: %s", mysql_error(mysql));
return ERROR_STOP;
}
- mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
+ mysql->reconnect= 1;
return OK_CONTINUE;
}
@@ -2283,7 +2273,7 @@ static Exit_status dump_remote_log_entries(PRINT_EVENT_INFO *print_event_info,
for (;;)
{
- len= net_safe_read(mysql);
+ len= cli_safe_read(mysql);
if (len == packet_error)
{
error("Got error reading packet from server: %s", mysql_error(mysql));
@@ -2853,8 +2843,6 @@ struct encryption_service_st encryption_handler=
#include "my_decimal.h"
#include "decimal.c"
#include "my_decimal.cc"
-#include "../sql-common/my_time.c"
-#include "password.c"
#include "log_event.cc"
#include "log_event_old.cc"
#include "rpl_utility.cc"
diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c
index f0f25dbeb71..3e821b183bd 100644
--- a/client/mysqlcheck.c
+++ b/client/mysqlcheck.c
@@ -1086,7 +1086,6 @@ static void print_result()
static int dbConnect(char *host, char *user, char *passwd)
{
- my_bool reconnect= 1;
DBUG_ENTER("dbConnect");
if (verbose > 1)
{
@@ -1125,7 +1124,7 @@ static int dbConnect(char *host, char *user, char *passwd)
DBerror(&mysql_connection, "when trying to connect");
DBUG_RETURN(1);
}
- mysql_options(&mysql_connection, MYSQL_OPT_RECONNECT, &reconnect);
+ mysql_connection.reconnect= 1;
DBUG_RETURN(0);
} /* dbConnect */
diff --git a/client/mysqldump.c b/client/mysqldump.c
index acb72a12bf3..60f244bf591 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -1643,7 +1643,6 @@ static void maybe_exit(int error)
static int connect_to_db(char *host, char *user,char *passwd)
{
char buff[20+FN_REFLEN];
- my_bool reconnect;
DBUG_ENTER("connect_to_db");
verbose_msg("-- Connecting to %s...\n", host ? host : "localhost");
@@ -1698,8 +1697,7 @@ static int connect_to_db(char *host, char *user,char *passwd)
As we're going to set SQL_MODE, it would be lost on reconnect, so we
cannot reconnect.
*/
- reconnect= 0;
- mysql_options(&mysql_connection, MYSQL_OPT_RECONNECT, &reconnect);
+ mysql->reconnect= 0;
my_snprintf(buff, sizeof(buff), "/*!40100 SET @@SQL_MODE='%s' */",
compatible_mode_normal_str);
if (mysql_query_with_error_report(mysql, 0, buff))
diff --git a/client/mysqlimport.c b/client/mysqlimport.c
index 37807a4eea5..5b15155e039 100644
--- a/client/mysqlimport.c
+++ b/client/mysqlimport.c
@@ -419,7 +419,6 @@ static MYSQL *db_connect(char *host, char *database,
char *user, char *passwd)
{
MYSQL *mysql;
- my_bool reconnect;
if (verbose)
fprintf(stdout, "Connecting to %s\n", host ? host : "localhost");
if (!(mysql= mysql_init(NULL)))
@@ -464,8 +463,7 @@ static MYSQL *db_connect(char *host, char *database,
ignore_errors=0; /* NO RETURN FROM db_error */
db_error(mysql);
}
- reconnect= 0;
- mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
+ mysql->reconnect= 0;
if (verbose)
fprintf(stdout, "Selecting database %s\n", database);
if (mysql_select_db(mysql, database))
diff --git a/client/mysqlshow.c b/client/mysqlshow.c
index e3e30abc426..eec4a8d3268 100644
--- a/client/mysqlshow.c
+++ b/client/mysqlshow.c
@@ -68,7 +68,6 @@ int main(int argc, char **argv)
my_bool first_argument_uses_wildcards=0;
char *wild;
MYSQL mysql;
- my_bool reconnect;
static char **defaults_argv;
MY_INIT(argv[0]);
sf_leaking_memory=1; /* don't report memory leaks on early exits */
@@ -156,8 +155,7 @@ int main(int argc, char **argv)
error= 1;
goto error;
}
- reconnect= 1;
- mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect);
+ mysql.reconnect= 1;
switch (argc) {
case 0: error=list_dbs(&mysql,wild); break;
diff --git a/client/mysqltest.cc b/client/mysqltest.cc
index 92f602c2444..4ff408bfa9d 100644
--- a/client/mysqltest.cc
+++ b/client/mysqltest.cc
@@ -190,8 +190,6 @@ static char global_subst_from[200];
static char global_subst_to[200];
static char *global_subst= NULL;
static MEM_ROOT require_file_root;
-static const my_bool my_true= 1;
-static const my_bool my_false= 0;
/* Block stack */
enum block_cmd {
@@ -5407,6 +5405,18 @@ static char *get_string(char **to_ptr, char **from_ptr,
}
+void set_reconnect(MYSQL* mysql, my_bool val)
+{
+ my_bool reconnect= val;
+ DBUG_ENTER("set_reconnect");
+ DBUG_PRINT("info", ("val: %d", (int) val));
+#if MYSQL_VERSION_ID < 50000
+ mysql->reconnect= reconnect;
+#else
+ mysql_options(mysql, MYSQL_OPT_RECONNECT, (char *)&reconnect);
+#endif
+ DBUG_VOID_RETURN;
+}
/**
@@ -5491,7 +5501,11 @@ void do_close_connection(struct st_command *command)
#ifndef EMBEDDED_LIBRARY
if (command->type == Q_DIRTY_CLOSE)
{
- mariadb_cancel(con->mysql);
+ if (con->mysql->net.vio)
+ {
+ vio_delete(con->mysql->net.vio);
+ con->mysql->net.vio = 0;
+ }
}
#endif /*!EMBEDDED_LIBRARY*/
if (con->stmt)
@@ -8215,18 +8229,10 @@ end:
revert_properties();
/* Close the statement if reconnect, need new prepare */
+ if (mysql->reconnect)
{
-#ifndef EMBEDDED_LIBRARY
- my_bool reconnect;
- mysql_get_option(mysql, MYSQL_OPT_RECONNECT, &reconnect);
- if (reconnect)
-#else
- if (mysql->reconnect)
-#endif
- {
- mysql_stmt_close(stmt);
- cn->stmt= NULL;
- }
+ mysql_stmt_close(stmt);
+ cn->stmt= NULL;
}
DBUG_VOID_RETURN;
@@ -8758,7 +8764,7 @@ static void dump_backtrace(void)
#endif
}
fputs("Attempting backtrace...\n", stderr);
- my_print_stacktrace(NULL, (ulong)my_thread_stack_size);
+ my_print_stacktrace(NULL, my_thread_stack_size);
}
#else
@@ -9401,10 +9407,10 @@ int main(int argc, char **argv)
non_blocking_api_enabled= 1;
break;
case Q_DISABLE_RECONNECT:
- mysql_options(cur_con->mysql, MYSQL_OPT_RECONNECT, &my_false);
+ set_reconnect(cur_con->mysql, 0);
break;
case Q_ENABLE_RECONNECT:
- mysql_options(cur_con->mysql, MYSQL_OPT_RECONNECT, &my_true);
+ set_reconnect(cur_con->mysql, 1);
/* Close any open statements - no reconnect, need new prepare */
close_statements();
break;
diff --git a/cmake/iconv.cmake b/cmake/iconv.cmake
deleted file mode 100644
index f6afd9d102a..00000000000
--- a/cmake/iconv.cmake
+++ /dev/null
@@ -1,78 +0,0 @@
-#
-# Copyright (c) 2010 Michael Bell <michael.bell@web.de>
-# 2015-2016 MariaDB Corporation AB
-
-if (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
- # Already in cache, be silent
- set(ICONV_FIND_QUIETLY TRUE)
-endif (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
-
-
-IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
- # There is some libiconv.so in /usr/local that must
- # be avoided, iconv routines are in libc
- find_library(ICONV_LIBRARIES NAMES c)
-ELSEIF(APPLE)
- find_path(ICONV_INCLUDE_DIR iconv.h PATHS
- /usr/include/
- /opt/local/include/
- )
- find_library(ICONV_LIBRARIES NAMES iconv libiconv PATHS
- /usr/lib/
- /opt/local/lib/
- )
- SET(ICONV_EXTERNAL TRUE)
-ELSE()
- find_path(ICONV_INCLUDE_DIR iconv.h)
- find_library(ICONV_LIBRARIES NAMES iconv libiconv libiconv-2)
- IF(ICONV_LIBRARIES)
- SET(ICONV_EXTERNAL TRUE)
- ELSE()
- find_library(ICONV_LIBRARIES NAMES c)
- ENDIF()
-ENDIF()
-
-if (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
- set (ICONV_FOUND TRUE)
-endif (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
-
-set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR})
-IF(ICONV_EXTERNAL)
- set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES})
-ENDIF()
-
-if (ICONV_FOUND)
- include(CheckCSourceCompiles)
- CHECK_C_SOURCE_COMPILES("
- #include <iconv.h>
- int main(){
- iconv_t conv = 0;
- const char* in = 0;
- size_t ilen = 0;
- char* out = 0;
- size_t olen = 0;
- iconv(conv, &in, &ilen, &out, &olen);
- return 0;
- }
-" ICONV_SECOND_ARGUMENT_IS_CONST )
-endif (ICONV_FOUND)
-
-set (CMAKE_REQUIRED_INCLUDES)
-set (CMAKE_REQUIRED_LIBRARIES)
-
-if (ICONV_FOUND)
- if (NOT ICONV_FIND_QUIETLY)
- message (STATUS "Found Iconv: ${ICONV_LIBRARIES}")
- endif (NOT ICONV_FIND_QUIETLY)
-else (ICONV_FOUND)
- if (Iconv_FIND_REQUIRED)
- message (FATAL_ERROR "Could not find Iconv")
- endif (Iconv_FIND_REQUIRED)
-endif (ICONV_FOUND)
-
-MARK_AS_ADVANCED(
- ICONV_INCLUDE_DIR
- ICONV_LIBRARIES
- ICONV_EXTERNAL
- ICONV_SECOND_ARGUMENT_IS_CONST
-)
diff --git a/cmake/make_dist.cmake.in b/cmake/make_dist.cmake.in
index 32ea5b130ad..f35d16834b6 100644
--- a/cmake/make_dist.cmake.in
+++ b/cmake/make_dist.cmake.in
@@ -28,7 +28,6 @@ SET(TAR_EXECUTABLE "@TAR_EXECUTABLE@")
SET(CMAKE_GENERATOR "@CMAKE_GENERATOR@")
SET(CMAKE_MAKE_PROGRAM "@CMAKE_MAKE_PROGRAM@")
SET(CMAKE_SYSTEM_NAME "@CMAKE_SYSTEM_NAME@")
-SET(CONNECTOR_C_GIT_TAG "@CONNECTOR_C_GIT_TAG@")
SET(VERSION "@VERSION@")
@@ -47,16 +46,9 @@ IF(GIT_EXECUTABLE)
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE RESULT
)
- IF(RESULT EQUAL 0)
- MESSAGE(STATUS "Cloning Connector/C ")
- EXECUTE_PROCESS(
- COMMAND "${GIT_EXECUTABLE}" clone https://github.com/MariaDB/mariadb-connector-c -b ${CONNECTOR_C_GIT_TAG}
- WORKING_DIRECTORY ${PACKAGE_DIR}
- RESULT_VARIABLE RESULT
- )
- ENDIF()
+
IF(NOT RESULT EQUAL 0)
- SET(GIT_EXECUTABLE)
+ SET(GIT_EXECUTABLE)
ENDIF()
ENDIF()
diff --git a/cmake/mariadb_connector_c.cmake b/cmake/mariadb_connector_c.cmake
deleted file mode 100644
index 33062c011bd..00000000000
--- a/cmake/mariadb_connector_c.cmake
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Configuration options for Connector/C
-#
-IF(WIN32)
- # todo: libcurl for windows
-ELSE()
- SET(CC_LIBS ${LIBDL} ${LIBM} ${LIBPTHREAD})
- FIND_PACKAGE(OpenSSL)
- #FIND_PACKAGE(GnuTLS)
- IF(OPENSSL_FOUND)
- SET(CC_LIBS ${CC_LIBS} ${OPENSSL_LIBRARIES} ${OPENSSL_CRYPTO_LIBRARIES})
- SET(CC_CMAKE_OPTS "-DWITH_SSL=OPENSSL")
- ELSEIF (GNUTLS_FOUND)
- SET(CC_LIBS ${CC_LIBS} ${GNUTLS_LIBRARY})
- SET(CC_CMAKE_OPTS "-DWITH_SSL=GNUTLS")
- ELSE()
- SET(CC_CMAKE_OPTS "-DWITH_SSL=OFF")
- ENDIF()
- INCLUDE(${CMAKE_SOURCE_DIR}/cmake/iconv.cmake)
- IF(ICONV_FOUND)
- IF(ICONV_EXTERNAL)
- SET(CC_LIBS ${CC_LIBS} ${ICONV_LIBRARIES})
- ENDIF()
- ENDIF()
-ENDIF()
-MARK_AS_ADVANCED(CC_LIBS CC_CMAKE_OPTS)
-
diff --git a/include/my_global.h b/include/my_global.h
index a3d6ebba96e..1cf3f217549 100644
--- a/include/my_global.h
+++ b/include/my_global.h
@@ -1250,13 +1250,4 @@ static inline double rint(double x)
#endif
#endif
-#define FLOATING_POINT_DECIMALS 31
-
-/* Keep client compatible with earlier versions */
-#ifdef MYSQL_SERVER
-#define NOT_FIXED_DEC DECIMAL_NOT_SPECIFIED
-#else
-#define NOT_FIXED_DEC FLOATING_POINT_DECIMALS
-#endif
-
#endif /* my_global_h */
diff --git a/include/my_sys.h b/include/my_sys.h
index 25554701a8c..7b7158573b4 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -1019,7 +1019,6 @@ extern void add_compiled_collation(struct charset_info_st *cs);
extern size_t escape_string_for_mysql(CHARSET_INFO *charset_info,
char *to, size_t to_length,
const char *from, size_t length);
-extern char *get_tty_password(const char *opt_message);
#ifdef __WIN__
#define BACKSLASH_MBTAIL
/* File system character set */
diff --git a/include/mysql.h b/include/mysql.h
index 314cc40dd6c..19099b4f404 100644
--- a/include/mysql.h
+++ b/include/mysql.h
@@ -351,6 +351,10 @@ typedef struct st_mysql_parameters
*/
#define MYSQL_WAIT_TIMEOUT 8
+#if !defined(MYSQL_SERVER) && !defined(EMBEDDED_LIBRARY)
+#define max_allowed_packet (*mysql_get_parameters()->p_max_allowed_packet)
+#define net_buffer_length (*mysql_get_parameters()->p_net_buffer_length)
+#endif
/*
Set up and bring down the server; to ensure that applications will
@@ -858,7 +862,6 @@ void STDCALL mysql_close(MYSQL *sock);
int STDCALL mysql_close_start(MYSQL *sock);
int STDCALL mysql_close_cont(MYSQL *sock, int status);
my_socket STDCALL mysql_get_socket(const MYSQL *mysql);
-int STDCALL mysql_cancel(MYSQL *mysql);
unsigned int STDCALL mysql_get_timeout_value(const MYSQL *mysql);
unsigned int STDCALL mysql_get_timeout_value_ms(const MYSQL *mysql);
diff --git a/include/mysql_com.h b/include/mysql_com.h
index 7003e7b6bd7..c65c5de7f66 100644
--- a/include/mysql_com.h
+++ b/include/mysql_com.h
@@ -654,5 +654,12 @@ uchar *safe_net_store_length(uchar *pkg, size_t pkg_len, ulonglong length);
decimals
*/
+#define FLOATING_POINT_DECIMALS 31
+/* Keep client compatible with earlier versions */
+#ifdef MYSQL_SERVER
+#define NOT_FIXED_DEC DECIMAL_NOT_SPECIFIED
+#else
+#define NOT_FIXED_DEC FLOATING_POINT_DECIMALS
+#endif
#endif
diff --git a/include/sql_common.h b/include/sql_common.h
index b1fc89e9104..39b8ce18517 100644
--- a/include/sql_common.h
+++ b/include/sql_common.h
@@ -77,13 +77,9 @@ typedef struct st_mysql_methods
#endif
} MYSQL_METHODS;
-#ifdef LIBMARIADB
-#define simple_command(mysql, command, arg, length, skip_check) ma_simple_command(mysql, command, (char *)arg, length, skip_check, NULL)
-#else
#define simple_command(mysql, command, arg, length, skip_check) \
(*(mysql)->methods->advanced_command)(mysql, command, 0, \
0, arg, length, skip_check, NULL)
-#endif
#define stmt_command(mysql, command, arg, length, stmt) \
(*(mysql)->methods->advanced_command)(mysql, command, 0, \
0, arg, length, 1, stmt)
@@ -114,7 +110,7 @@ void set_mysql_extended_error(MYSQL *mysql, int errcode, const char *sqlstate,
/* client side of the pluggable authentication */
struct st_plugin_vio_info;
-
+void mpvio_info(Vio *vio, struct st_plugin_vio_info *info);
int run_plugin_auth(MYSQL *mysql, char *data, uint data_len,
const char *data_plugin, const char *db);
int mysql_client_plugin_init();
diff --git a/include/sslopt-vars.h b/include/sslopt-vars.h
index 5f55aaf7c5b..8e669760faf 100644
--- a/include/sslopt-vars.h
+++ b/include/sslopt-vars.h
@@ -35,4 +35,3 @@ SSL_STATIC my_bool opt_ssl_verify_server_cert= 0;
#endif
#endif
#endif /* SSLOPT_VARS_INCLUDED */
-
diff --git a/libmariadb/CMakeLists.txt b/libmariadb/CMakeLists.txt
deleted file mode 100644
index 1f6b299d4d8..00000000000
--- a/libmariadb/CMakeLists.txt
+++ /dev/null
@@ -1,127 +0,0 @@
-INCLUDE(${CMAKE_SOURCE_DIR}/cmake/mariadb_connector_c.cmake)
-
-SET(CONNECTOR_C_INSTALLDIR "${CMAKE_CURRENT_BINARY_DIR}/mariadb-connector-c/${CMAKE_CFG_INTDIR}" CACHE STRING "")
-SET(CONNECTOR_C_INSTALL_PREFIX ${CONNECTOR_C_INSTALLDIR})
-
-
-IF(NOT "${CMAKE_CFG_INTDIR}" STREQUAL ".")
- STRING(REPLACE "${CMAKE_CFG_INTDIR}" "\${BUILD_TYPE}" CONNECTOR_C_INSTALL_PREFIX "${CONNECTOR_C_INSTALLDIR}")
-ENDIF()
-
-SET(CONNECTOR_C_GIT_TAG "v3.0-cc-server-integ-0" CACHE STRING "Git tag or branch for connector/c")
-IF(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/mariadb-connector-c)
- # Building from source package
- SET(CONNECTOR_C_SOURCE_DIR ${CMAKE_SOURCE_DIR}/mariadb-connector-c)
- SET(GIT_PARAMS)
-ELSE()
- # Building from git, use git to get Connector/C
- SET(GIT_PARAMS
- GIT_REPOSITORY "https://github.com/MariaDB/mariadb-connector-c/"
- GIT_TAG ${CONNECTOR_C_GIT_TAG}
- )
- SET(CONNECTOR_C_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/mariadb-connector-c-src)
-ENDIF()
-
-IF(TARGET zlib)
- GET_PROPERTY(ZLIB_LIBRARY_LOCATION TARGET zlib PROPERTY LOCATION)
-ELSE()
- SET(ZLIB_LIBRARY_LOCATION ${ZLIB_LIBRARY})
-ENDIF()
-
-
-INCLUDE(ExternalProject)
-ExternalProject_Add(
- mariadb_connector_c
- ${GIT_PARAMS}
- UPDATE_COMMAND ""
- PATCH_COMMAND ""
- SOURCE_DIR ${CONNECTOR_C_SOURCE_DIR}
- INSTALL_DIR ${CONNECTOR_C_INSTALLDIR}
- CMAKE_ARGS ${CC_CMAKE_OPTS}
- -DCMAKE_INSTALL_PREFIX=${CONNECTOR_C_INSTALL_PREFIX}
- -DWITH_EXTERNAL_ZLIB=1
- -DZLIB_FOUND=1
- -DZLIB_LIBRARY=${ZLIB_LIBRARY_LOCATION}
- -DZLIB_INCLUDE_DIR=${ZLIB_INCLUDE_DIR}
- -DSKIP_TESTS=1
- -DMARIADB_PORT=${MYSQL_TCP_PORT}
- -DMARIADB_UNIX_ADDR=${MYSQL_UNIX_ADDR}
- -DSHARED_LIB_MAJOR_VERSION=${SHARED_LIB_MAJOR_VERSION}
- -DPLUGINDIR=${INSTALL_PLUGINDIR}
- -DFOR_SERVER=1
- TEST_COMMAND ""
-)
-
-IF(TARGET zlib)
- ADD_DEPENDENCIES(mariadb_connector_c zlib)
-ENDIF()
-
-SET(STATIC_LIB_LOCATION "${CONNECTOR_C_INSTALLDIR}/lib/mariadb/${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient${CMAKE_STATIC_LIBRARY_SUFFIX}")
-
-IF(WIN32)
- SET(SHARED_LIB_LOCATION "${CONNECTOR_C_INSTALLDIR}/lib/mariadb/libmysql${CMAKE_SHARED_LIBRARY_SUFFIX}")
-ELSE()
- SET(SHARED_LIB_LOCATION "${CONNECTOR_C_INSTALLDIR}/lib/mariadb/libmysqlclient${CMAKE_SHARED_LIBRARY_SUFFIX}")
-ENDIF()
-IF(WIN32)
- # On Windows, we need to install import library. We also install PDB for debugging
- STRING(REPLACE ".dll" ".lib" IMPORT_LIB_LOCATION ${SHARED_LIB_LOCATION})
- STRING(REPLACE ".dll" ".pdb" PDB_LOCATION ${SHARED_LIB_LOCATION})
-ENDIF()
-
-ADD_LIBRARY(mariadbclient STATIC IMPORTED GLOBAL)
-SET_TARGET_PROPERTIES(mariadbclient PROPERTIES IMPORTED_LOCATION ${STATIC_LIB_LOCATION})
-ADD_DEPENDENCIES(mariadbclient mariadb_connector_c GenError)
-
-ADD_LIBRARY(libmariadb SHARED IMPORTED GLOBAL)
-SET_TARGET_PROPERTIES(libmariadb PROPERTIES IMPORTED_LOCATION ${SHARED_LIB_LOCATION})
-ADD_DEPENDENCIES(libmariadb mariadb_connector_c GenError)
-
-SET(CONNECTOR_C_LIBS ${STATIC_LIB_LOCATION} ${CC_LIBS} ${ZLIB_LIBRARY} PARENT_SCOPE)
-
-
-# INSTALL Connector/C files
-
-# For multiconfig generators (Visual Studio and Xcode)
-# we need to replace CMAKE_CFG_INTDIR in filepath with CMAKE_INSTALL_CONFIG_NAME
-# for cpack.
-FUNCTION(GET_INSTALL_LOCATION LOC VARNAME)
- SET(val ${LOC})
- IF (NOT "${CMAKE_CFG_INTDIR}" STREQUAL ".")
- STRING(REPLACE "${CMAKE_CFG_INTDIR}" "\${CMAKE_INSTALL_CONFIG_NAME}" val ${val})
- ENDIF()
- SET(${VARNAME} ${val} PARENT_SCOPE)
-ENDFUNCTION()
-
-GET_INSTALL_LOCATION(${STATIC_LIB_LOCATION} STATIC_LIB_INSTALL_LOCATION)
-INSTALL(FILES ${STATIC_LIB_INSTALL_LOCATION} DESTINATION ${INSTALL_LIBDIR} COMPONENT Development)
-
-IF(UNIX)
- STRING(REPLACE "mysqlclient" "mysqlclient_r"
- STATIC_LIB_R_INSTALL_LOCATION "${STATIC_LIB_INSTALL_LOCATION}")
- INSTALL(FILES ${STATIC_LIB_R_INSTALL_LOCATION} OPTIONAL DESTINATION ${INSTALL_LIBDIR} COMPONENT Development)
-ENDIF()
-
-# Install shared library
-IF(WIN32)
- # On Windows, we need to install import library. We also install PDB for debugging
- SET(SHARED_LIB_FILES ${SHARED_LIB_LOCATION} ${IMPLIB_LOCATION} ${PDB_LOCATION})
-ELSE()
- STRING(REPLACE "mysqlclient" "mysqlclient_r" SHARED_LIB_R_LOCATION ${SHARED_LIB_LOCATION})
- STRING(REPLACE "mysqlclient.so" "mysqlclient.so.${SHARED_LIB_MAJOR_VERSION}"
- SHARED_LIB_LINK1_LOCATION ${SHARED_LIB_LOCATION})
- STRING(REPLACE "mysqlclient.so" "mysqlclient.so.${SHARED_LIB_MAJOR_VERSION}.0.0"
- SHARED_LIB_LINK2_LOCATION ${SHARED_LIB_LOCATION})
-
- SET(SHARED_LIB_FILES ${SHARED_LIB_LOCATION} ${SHARED_LIB_R_LOCATION}
- ${SHARED_LIB_LINK1_LOCATION} ${SHARED_LIB_LINK2_LOCATION})
- LIST(REMOVE_DUPLICATES SHARED_LIB_FILES)
-ENDIF()
-
-FOREACH(file ${SHARED_LIB_FILES})
- GET_INSTALL_LOCATION(${file} loc)
- IF(loc)
- INSTALL(FILES ${loc} DESTINATION ${INSTALL_LIBDIR} COMPONENT SharedLibraries OPTIONAL)
- ENDIF()
-ENDFOREACH()
-
diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt
index 41710bf08a7..5eb89c19f45 100644
--- a/libmysql/CMakeLists.txt
+++ b/libmysql/CMakeLists.txt
@@ -424,4 +424,101 @@ IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
SET(VERSION_SCRIPT_LINK_FLAGS
"-Wl,${CMAKE_CURRENT_BINARY_DIR}/libmysql_versions.ld")
+ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
+
+
+SET(CLIENT_SOURCES
+ get_password.c
+ libmysql.c
+ errmsg.c
+ ../sql-common/client.c
+ ../sql-common/mysql_async.c
+ ../sql-common/my_time.c
+ ../sql-common/client_plugin.c
+ ../sql/net_serv.cc
+ ../sql-common/pack.c
+ ../sql/password.c
+ ${CLIENT_SOURCES_EXTRA}
+)
+ADD_CONVENIENCE_LIBRARY(clientlib ${CLIENT_SOURCES})
+DTRACE_INSTRUMENT(clientlib)
+ADD_DEPENDENCIES(clientlib GenError)
+
+SET(LIBS clientlib dbug strings vio mysys mysys_ssl ${ZLIB_LIBRARY} ${SSL_LIBRARIES} ${LIBDL} ${CRC32_VPMSUM_LIBRARY})
+
+# Merge several convenience libraries into one big mysqlclient
+# and link them together into shared library.
+MERGE_LIBRARIES(mysqlclient STATIC ${LIBS} COMPONENT Development)
+
+# Visual Studio users need debug static library for debug projects
+IF(MSVC)
+ INSTALL_DEBUG_TARGET(mysqlclient DESTINATION ${INSTALL_LIBDIR}/debug)
+ INSTALL_DEBUG_TARGET(clientlib DESTINATION ${INSTALL_LIBDIR}/debug)
+ENDIF()
+
+IF(UNIX)
+ MACRO(GET_VERSIONED_LIBNAME LIBNAME EXTENSION VERSION OUTNAME)
+ SET(DOT_VERSION ".${VERSION}")
+ IF(DOT_VERSION STREQUAL ".")
+ SET(DOT_VERSION "")
+ ENDIF()
+ IF(APPLE)
+ SET(${OUTNAME} ${LIBNAME}${DOT_VERSION}${EXTENSION})
+ ELSE()
+ SET(${OUTNAME} ${LIBNAME}${EXTENSION}${DOT_VERSION})
+ ENDIF()
+ ENDMACRO()
+ INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r.a mysqlclient ${INSTALL_LIBDIR} Development)
+ENDIF()
+
+IF(NOT DISABLE_SHARED)
+ MERGE_LIBRARIES(libmysql SHARED ${LIBS}
+ EXPORTS ${CLIENT_API_FUNCTIONS} ${CLIENT_API_5_1_EXTRA} ${CLIENT_API_5_5_EXTRA}
+ COMPONENT SharedLibraries)
+ IF(UNIX)
+ # libtool compatability
+ IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE)
+ SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}")
+ ELSEIF(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
+ SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0")
+ ELSE()
+ SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0.0")
+ ENDIF()
+ # Name of shared library is mysqlclient on Unix
+ SET_TARGET_PROPERTIES(libmysql PROPERTIES
+ OUTPUT_NAME mysqlclient
+ VERSION "${OS_SHARED_LIB_VERSION}"
+ SOVERSION "${SHARED_LIB_MAJOR_VERSION}")
+ IF(LINK_FLAG_NO_UNDEFINED OR VERSION_SCRIPT_LINK_FLAGS)
+ GET_TARGET_PROPERTY(libmysql_link_flags libmysql LINK_FLAGS)
+ IF(NOT libmysql_link_flags)
+ # Avoid libmysql_link_flags-NOTFOUND
+ SET(libmysql_link_flags)
+ ENDIF()
+ SET_TARGET_PROPERTIES(libmysql PROPERTIES LINK_FLAGS
+ "${libmysql_link_flags} ${LINK_FLAG_NO_UNDEFINED} ${VERSION_SCRIPT_LINK_FLAGS}")
+ ENDIF()
+ # clean direct output needs to be set several targets have the same name
+ #(mysqlclient in this case)
+ SET_TARGET_PROPERTIES(mysqlclient PROPERTIES CLEAN_DIRECT_OUTPUT 1)
+ SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1)
+
+ # Install links to libmysqlclient.so (client_r)
+ GET_VERSIONED_LIBNAME(
+ "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r"
+ "${CMAKE_SHARED_LIBRARY_SUFFIX}"
+ ""
+ linkname)
+ INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR} SharedLibraries)
+ SET(OS_SHARED_LIB_SYMLINKS "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}")
+ LIST(REMOVE_DUPLICATES OS_SHARED_LIB_SYMLINKS)
+ FOREACH(ver ${OS_SHARED_LIB_SYMLINKS})
+ GET_VERSIONED_LIBNAME(
+ "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r"
+ "${CMAKE_SHARED_LIBRARY_SUFFIX}"
+ "${ver}"
+ linkname)
+ INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR} SharedLibraries)
+ ENDFOREACH()
+ ENDIF()
ENDIF()
diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt
index 688522a6cd6..368f30f8317 100644
--- a/libmysqld/CMakeLists.txt
+++ b/libmysqld/CMakeLists.txt
@@ -37,8 +37,8 @@ ${CMAKE_BINARY_DIR}/sql/lex_hash.h
SET_SOURCE_FILES_PROPERTIES(${GEN_SOURCES} PROPERTIES GENERATED TRUE)
SET(SQL_EMBEDDED_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc
- ../libmysql/libmysql.c ../libmysql/errmsg.c ../mysys/get_password.c
- ../sql-common/client.c
+ ../libmysql/libmysql.c ../libmysql/errmsg.c ../client/get_password.c
+ ../sql-common/client.c ../sql-common/my_time.c
../sql-common/my_user.c ../sql-common/pack.c
../sql-common/client_plugin.c ../sql-common/mysql_async.c
../sql/password.c ../sql/discover.cc ../sql/derror.cc
diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc
index 311dc0a5b9a..4a84e63f222 100644
--- a/libmysqld/lib_sql.cc
+++ b/libmysqld/lib_sql.cc
@@ -647,7 +647,7 @@ void end_embedded_server()
void init_embedded_mysql(MYSQL *mysql, int client_flag)
{
THD *thd = (THD *)mysql->thd;
- thd->emb_mysql= mysql;
+ thd->mysql= mysql;
mysql->server_version= server_version;
mysql->client_flag= client_flag;
init_alloc_root(&mysql->field_alloc, 8192, 0, MYF(0));
@@ -929,7 +929,7 @@ static
bool
write_eof_packet(THD *thd, uint server_status, uint statement_warn_count)
{
- if (!thd->emb_mysql) // bootstrap file handling
+ if (!thd->mysql) // bootstrap file handling
return FALSE;
/*
The following test should never be true, but it's better to do it
@@ -1013,7 +1013,7 @@ bool Protocol::send_result_set_metadata(List<Item> *list, uint flags)
MYSQL_DATA *data;
DBUG_ENTER("send_result_set_metadata");
- if (!thd->emb_mysql) // bootstrap file handling
+ if (!thd->mysql) // bootstrap file handling
DBUG_RETURN(0);
if (begin_dataset())
@@ -1118,7 +1118,7 @@ bool Protocol::send_result_set_metadata(List<Item> *list, uint flags)
bool Protocol::write()
{
- if (!thd->emb_mysql) // bootstrap file handling
+ if (!thd->mysql) // bootstrap file handling
return false;
*next_field= 0;
@@ -1176,7 +1176,7 @@ net_send_ok(THD *thd,
{
DBUG_ENTER("emb_net_send_ok");
MYSQL_DATA *data;
- MYSQL *mysql= thd->emb_mysql;
+ MYSQL *mysql= thd->mysql;
if (!mysql) // bootstrap file handling
DBUG_RETURN(FALSE);
@@ -1220,7 +1220,7 @@ bool net_send_error_packet(THD *thd, uint sql_errno, const char *err,
MYSQL_DATA *data= thd->cur_data;
struct embedded_query_result *ei;
- if (!thd->emb_mysql) // bootstrap file handling
+ if (!thd->mysql) // bootstrap file handling
{
fprintf(stderr, "ERROR: %d %s\n", sql_errno, err);
return TRUE;
@@ -1250,7 +1250,7 @@ void Protocol_text::prepare_for_resend()
MYSQL_DATA *data= thd->cur_data;
DBUG_ENTER("send_data");
- if (!thd->emb_mysql) // bootstrap file handling
+ if (!thd->mysql) // bootstrap file handling
DBUG_VOID_RETURN;
data->rows++;
@@ -1283,7 +1283,7 @@ bool Protocol_text::store_null()
bool Protocol::net_store_data(const uchar *from, size_t length)
{
char *field_buf;
- if (!thd->emb_mysql) // bootstrap file handling
+ if (!thd->mysql) // bootstrap file handling
return FALSE;
if (!(field_buf= (char*) alloc_root(alloc, length + sizeof(uint) + 1)))
@@ -1306,7 +1306,7 @@ bool Protocol::net_store_data_cs(const uchar *from, size_t length,
uint conv_length= to_cs->mbmaxlen * length / from_cs->mbminlen;
uint dummy_error;
char *field_buf;
- if (!thd->emb_mysql) // bootstrap file handling
+ if (!thd->mysql) // bootstrap file handling
return false;
if (!(field_buf= (char*) alloc_root(alloc, conv_length + sizeof(uint) + 1)))
diff --git a/mysql-test/r/openssl_1.result b/mysql-test/r/openssl_1.result
index f28c399ce74..12c91721381 100644
--- a/mysql-test/r/openssl_1.result
+++ b/mysql-test/r/openssl_1.result
@@ -4,25 +4,25 @@ drop table if exists t1;
create table t1(f1 int);
insert into t1 values (5);
grant select on test.* to ssl_user1@localhost require SSL;
-grant select on test.* to ssl_user2@localhost require cipher "AES256-SHA";
-grant select on test.* to ssl_user3@localhost require cipher "AES256-SHA" AND SUBJECT "/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB/CN=client";
-grant select on test.* to ssl_user4@localhost require cipher "AES256-SHA" AND SUBJECT "/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB/CN=client" ISSUER "/CN=cacert/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB";
-grant select on test.* to ssl_user5@localhost require cipher "AES256-SHA" AND SUBJECT "xxx";
+grant select on test.* to ssl_user2@localhost require cipher "DHE-RSA-AES256-SHA";
+grant select on test.* to ssl_user3@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB/CN=client";
+grant select on test.* to ssl_user4@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB/CN=client" ISSUER "/CN=cacert/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB";
+grant select on test.* to ssl_user5@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "xxx";
flush privileges;
-connect con1,localhost,ssl_user1,,,,,SSL-CIPHER=AES256-SHA;
+connect con1,localhost,ssl_user1,,,,,SSL-CIPHER=DHE-RSA-AES256-SHA;
connect(localhost,ssl_user2,,test,MASTER_PORT,MASTER_SOCKET);
-connect con2,localhost,ssl_user2,,,,,SSL-CIPHER=AES128-SHA;
-ERROR 28000: Access denied for user 'ssl_user2'@'localhost' (using password: NO)
connect con2,localhost,ssl_user2,,,,,SSL-CIPHER=AES256-SHA;
-connect con3,localhost,ssl_user3,,,,,SSL-CIPHER=AES256-SHA;
-connect con4,localhost,ssl_user4,,,,,SSL-CIPHER=AES256-SHA;
+ERROR 28000: Access denied for user 'ssl_user2'@'localhost' (using password: NO)
+connect con2,localhost,ssl_user2,,,,,SSL-CIPHER=DHE-RSA-AES256-SHA;
+connect con3,localhost,ssl_user3,,,,,SSL-CIPHER=DHE-RSA-AES256-SHA;
+connect con4,localhost,ssl_user4,,,,,SSL-CIPHER=DHE-RSA-AES256-SHA;
connect(localhost,ssl_user5,,test,MASTER_PORT,MASTER_SOCKET);
-connect con5,localhost,ssl_user5,,,,,SSL-CIPHER=AES256-SHA;
+connect con5,localhost,ssl_user5,,,,,SSL-CIPHER=DHE-RSA-AES256-SHA;
ERROR 28000: Access denied for user 'ssl_user5'@'localhost' (using password: NO)
connection con1;
SHOW STATUS LIKE 'Ssl_cipher';
Variable_name Value
-Ssl_cipher AES256-SHA
+Ssl_cipher DHE-RSA-AES256-SHA
select * from t1;
f1
5
@@ -31,7 +31,7 @@ ERROR 42000: DELETE command denied to user 'ssl_user1'@'localhost' for table 't1
connection con2;
SHOW STATUS LIKE 'Ssl_cipher';
Variable_name Value
-Ssl_cipher AES256-SHA
+Ssl_cipher DHE-RSA-AES256-SHA
select * from t1;
f1
5
@@ -40,7 +40,7 @@ ERROR 42000: DELETE command denied to user 'ssl_user2'@'localhost' for table 't1
connection con3;
SHOW STATUS LIKE 'Ssl_cipher';
Variable_name Value
-Ssl_cipher AES256-SHA
+Ssl_cipher DHE-RSA-AES256-SHA
select * from t1;
f1
5
@@ -49,7 +49,7 @@ ERROR 42000: DELETE command denied to user 'ssl_user3'@'localhost' for table 't1
connection con4;
SHOW STATUS LIKE 'Ssl_cipher';
Variable_name Value
-Ssl_cipher AES256-SHA
+Ssl_cipher DHE-RSA-AES256-SHA
select * from t1;
f1
5
@@ -66,13 +66,15 @@ drop table t1;
mysqltest: Could not open connection 'default': 2026 SSL connection error: xxxx
mysqltest: Could not open connection 'default': 2026 SSL connection error: xxxx
mysqltest: Could not open connection 'default': 2026 SSL connection error: xxxx
-mysqltest: Could not open connection 'default': 2026 SSL connection error: xxxx
-mysqltest: Could not open connection 'default': 2026 SSL connection error: xxxx
+SSL error: Unable to get private key from ''
+mysqltest: Could not open connection 'default': 2026 SSL connection error: Unable to get private key
+SSL error: Unable to get certificate from ''
+mysqltest: Could not open connection 'default': 2026 SSL connection error: Unable to get certificate
SHOW STATUS LIKE 'Ssl_cipher';
Variable_name Value
-Ssl_cipher AES256-SHA
-have_ssl
-1
+Ssl_cipher DHE-RSA-AES256-SHA
+Variable_name Value
+Ssl_cipher DHE-RSA-AES256-SHA
End of 5.0 tests
DROP TABLE IF EXISTS thread_status;
DROP EVENT IF EXISTS event_status;
@@ -100,7 +102,8 @@ Ssl_cipher AES128-SHA
SHOW STATUS LIKE 'Ssl_cipher';
Variable_name Value
Ssl_cipher AES128-SHA
-mysqltest: Could not open connection 'default': 2026 SSL connection error: xxxxCREATE TABLE t1(a int);
+mysqltest: Could not open connection 'default': 2026 SSL connection error: Failed to set ciphers to use
+CREATE TABLE t1(a int);
INSERT INTO t1 VALUES (1), (2);
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
@@ -204,21 +207,22 @@ UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-mysqldump: Got error: 2026: SSL connection error: xxxx
+SSL error: Unable to get private key from 'MYSQL_TEST_DIR/std_data/client-cert.pem'
+mysqldump: Got error: 2026: "SSL connection error: Unable to get private key" when trying to connect
DROP TABLE t1;
Variable_name Value
-Ssl_cipher AES256-SHA
+Ssl_cipher DHE-RSA-AES256-SHA
Variable_name Value
-Ssl_cipher DES-CBC3-SHA
+Ssl_cipher EDH-RSA-DES-CBC3-SHA
select 'is still running; no cipher request crashed the server' as result from dual;
result
is still running; no cipher request crashed the server
GRANT SELECT ON test.* TO bug42158@localhost REQUIRE X509;
FLUSH PRIVILEGES;
connect con1,localhost,bug42158,,,,,SSL;
-SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
-have_ssl
-1
+SHOW STATUS LIKE 'Ssl_cipher';
+Variable_name Value
+Ssl_cipher DHE-RSA-AES256-SHA
disconnect con1;
connection default;
DROP USER bug42158@localhost;
diff --git a/mysql-test/r/openssl_6975,tlsv10.result b/mysql-test/r/openssl_6975,tlsv10.result
index a65167ff427..6285faa0143 100644
--- a/mysql-test/r/openssl_6975,tlsv10.result
+++ b/mysql-test/r/openssl_6975,tlsv10.result
@@ -3,14 +3,14 @@ grant select on test.* to ssl_sslv3@localhost require cipher "RC4-SHA";
create user ssl_tls12@localhost;
grant select on test.* to ssl_tls12@localhost require cipher "AES128-SHA256";
TLS1.2 ciphers: user is ok with any cipher
-ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
-ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
+ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
+ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
TLS1.2 ciphers: user requires SSLv3 cipher RC4-SHA
-ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
-ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
+ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
+ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
TLS1.2 ciphers: user requires TLSv1.2 cipher AES128-SHA256
-ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
-ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
+ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
+ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
SSLv3 ciphers: user is ok with any cipher
Variable_name Value
Ssl_cipher RC4-SHA
diff --git a/mysql-test/r/openssl_6975,tlsv12.result b/mysql-test/r/openssl_6975,tlsv12.result
index 8758daa7011..31d2658c829 100644
--- a/mysql-test/r/openssl_6975,tlsv12.result
+++ b/mysql-test/r/openssl_6975,tlsv12.result
@@ -15,13 +15,13 @@ Variable_name Value
Ssl_cipher AES128-SHA256
ERROR 1045 (28000): Access denied for user 'ssl_tls12'@'localhost' (using password: NO)
SSLv3 ciphers: user is ok with any cipher
-ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
-ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
+ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
+ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
SSLv3 ciphers: user requires SSLv3 cipher RC4-SHA
-ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
-ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
+ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
+ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
SSLv3 ciphers: user requires TLSv1.2 cipher AES128-SHA256
-ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
-ERROR 2026 (HY000): SSL connection error: sslv3 alert handshake failure
+ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
+ERROR 2026 (HY000): SSL connection error: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
drop user ssl_sslv3@localhost;
drop user ssl_tls12@localhost;
diff --git a/mysql-test/r/ssl.result b/mysql-test/r/ssl.result
index 41af96621b2..7cd18fbf539 100644
--- a/mysql-test/r/ssl.result
+++ b/mysql-test/r/ssl.result
@@ -1,7 +1,7 @@
connect ssl_con,localhost,root,,,,,SSL;
-SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
-have_ssl
-1
+SHOW STATUS LIKE 'Ssl_cipher';
+Variable_name Value
+Ssl_cipher DHE-RSA-AES256-SHA
SHOW STATUS LIKE 'Ssl_server_not_before';
Variable_name Value
Ssl_server_not_before Apr 25 14:55:05 2015 GMT
@@ -2164,9 +2164,9 @@ Privat (Private Nutzung) Mobilfunk
Warnings:
Warning 1052 Column 'kundentyp' in group statement is ambiguous
drop table t1;
-SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
-have_ssl
-1
+SHOW STATUS LIKE 'Ssl_cipher';
+Variable_name Value
+Ssl_cipher DHE-RSA-AES256-SHA
select aes_decrypt('MySQL','adf');
aes_decrypt('MySQL','adf')
NULL
@@ -2176,7 +2176,7 @@ still connected?
connection default;
disconnect ssl_con;
create user mysqltest_1@localhost;
-grant usage on mysqltest.* to mysqltest_1@localhost require cipher "AES256-SHA";
+grant usage on mysqltest.* to mysqltest_1@localhost require cipher "EDH-RSA-DES-CBC3-SHA";
Variable_name Value
-Ssl_cipher AES256-SHA
+Ssl_cipher EDH-RSA-DES-CBC3-SHA
drop user mysqltest_1@localhost;
diff --git a/mysql-test/r/ssl_8k_key.result b/mysql-test/r/ssl_8k_key.result
index ff9d0cce9dc..b33a1d2854f 100644
--- a/mysql-test/r/ssl_8k_key.result
+++ b/mysql-test/r/ssl_8k_key.result
@@ -1,2 +1,2 @@
-have_ssl
-1
+Variable_name Value
+Ssl_cipher DHE-RSA-AES256-SHA
diff --git a/mysql-test/r/ssl_ca.result b/mysql-test/r/ssl_ca.result
index 8ea3e30eb06..ffc5671f85f 100644
--- a/mysql-test/r/ssl_ca.result
+++ b/mysql-test/r/ssl_ca.result
@@ -2,23 +2,23 @@
# Bug#21920657: SSL-CA FAILS SILENTLY IF THE PATH CANNOT BE FOUND
#
# try to connect with wrong '--ssl-ca' path : should fail
-ERROR 2026 (HY000): SSL connection error: xxxx
+ERROR 2026 (HY000): SSL connection error: SSL_CTX_set_default_verify_paths failed
# try to connect with correct '--ssl-ca' path : should connect
-have_ssl
-1
+Variable_name Value
+Ssl_cipher DHE-RSA-AES256-SHA
#
# Bug#21920678: SSL-CA DOES NOT ACCEPT ~USER TILDE HOME DIRECTORY
# PATH SUBSTITUTION
#
# try to connect with '--ssl-ca' option using tilde home directoy
# path substitution : should connect
-have_ssl
-1
+Variable_name Value
+Ssl_cipher DHE-RSA-AES256-SHA
# try to connect with '--ssl-key' option using tilde home directoy
# path substitution : should connect
-have_ssl
-1
+Variable_name Value
+Ssl_cipher DHE-RSA-AES256-SHA
# try to connect with '--ssl-cert' option using tilde home directoy
# path substitution : should connect
-have_ssl
-1
+Variable_name Value
+Ssl_cipher DHE-RSA-AES256-SHA
diff --git a/mysql-test/r/ssl_compress.result b/mysql-test/r/ssl_compress.result
index 09c682e3851..8260fde5c4e 100644
--- a/mysql-test/r/ssl_compress.result
+++ b/mysql-test/r/ssl_compress.result
@@ -1,7 +1,7 @@
connect ssl_compress_con,localhost,root,,,,,SSL COMPRESS;
-SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
-have_ssl
-1
+SHOW STATUS LIKE 'Ssl_cipher';
+Variable_name Value
+Ssl_cipher DHE-RSA-AES256-SHA
SHOW STATUS LIKE 'Compression';
Variable_name Value
Compression ON
@@ -2161,9 +2161,9 @@ Privat (Private Nutzung) Mobilfunk
Warnings:
Warning 1052 Column 'kundentyp' in group statement is ambiguous
drop table t1;
-SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
-have_ssl
-1
+SHOW STATUS LIKE 'Ssl_cipher';
+Variable_name Value
+Ssl_cipher DHE-RSA-AES256-SHA
SHOW STATUS LIKE 'Compression';
Variable_name Value
Compression ON
diff --git a/mysql-test/r/ssl_timeout.result b/mysql-test/r/ssl_timeout.result
index 3c94a9927da..27dce524685 100644
--- a/mysql-test/r/ssl_timeout.result
+++ b/mysql-test/r/ssl_timeout.result
@@ -1,9 +1,9 @@
# connect with read timeout so SLEEP() should timeout
connect ssl_con,localhost,root,,,,,SSL read_timeout=5;
# Check ssl turned on
-SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
-have_ssl
-1
+SHOW STATUS LIKE 'Ssl_cipher';
+Variable_name Value
+Ssl_cipher DHE-RSA-AES256-SHA
SELECT SLEEP(600);
ERROR HY000: Lost connection to MySQL server during query
connection default;
diff --git a/mysql-test/r/userstat.result b/mysql-test/r/userstat.result
index c6b780fce40..a56ff5771f6 100644
--- a/mysql-test/r/userstat.result
+++ b/mysql-test/r/userstat.result
@@ -81,9 +81,9 @@ select * from t1 where a=999;
a b
drop table t1;
connect ssl_con,localhost,root,,,,,SSL;
-SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
-have_ssl
-1
+SHOW STATUS LIKE 'Ssl_cipher';
+Variable_name Value
+Ssl_cipher DHE-RSA-AES256-SHA
connection default;
create table t1 (a int, primary key (a), b int default 0) engine=innodb;
begin;
@@ -149,11 +149,11 @@ TOTAL_CONNECTIONS 2
TOTAL_SSL_CONNECTIONS 1
CONCURRENT_CONNECTIONS 0
ROWS_READ 6
-ROWS_SENT 3
+ROWS_SENT 2
ROWS_DELETED 1
ROWS_INSERTED 7
ROWS_UPDATED 5
-SELECT_COMMANDS 4
+SELECT_COMMANDS 3
UPDATE_COMMANDS 11
OTHER_COMMANDS 7
COMMIT_TRANSACTIONS 19
@@ -167,11 +167,11 @@ TOTAL_CONNECTIONS 2
TOTAL_SSL_CONNECTIONS 1
CONCURRENT_CONNECTIONS 0
ROWS_READ 6
-ROWS_SENT 3
+ROWS_SENT 2
ROWS_DELETED 1
ROWS_INSERTED 7
ROWS_UPDATED 5
-SELECT_COMMANDS 4
+SELECT_COMMANDS 3
UPDATE_COMMANDS 11
OTHER_COMMANDS 7
COMMIT_TRANSACTIONS 19
diff --git a/mysql-test/t/openssl_1.test b/mysql-test/t/openssl_1.test
index 8e2d9133359..837206e2717 100644
--- a/mysql-test/t/openssl_1.test
+++ b/mysql-test/t/openssl_1.test
@@ -16,22 +16,22 @@ create table t1(f1 int);
insert into t1 values (5);
grant select on test.* to ssl_user1@localhost require SSL;
-grant select on test.* to ssl_user2@localhost require cipher "AES256-SHA";
-grant select on test.* to ssl_user3@localhost require cipher "AES256-SHA" AND SUBJECT "/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB/CN=client";
-grant select on test.* to ssl_user4@localhost require cipher "AES256-SHA" AND SUBJECT "/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB/CN=client" ISSUER "/CN=cacert/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB";
-grant select on test.* to ssl_user5@localhost require cipher "AES256-SHA" AND SUBJECT "xxx";
+grant select on test.* to ssl_user2@localhost require cipher "DHE-RSA-AES256-SHA";
+grant select on test.* to ssl_user3@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB/CN=client";
+grant select on test.* to ssl_user4@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB/CN=client" ISSUER "/CN=cacert/C=FI/ST=Helsinki/L=Helsinki/O=MariaDB";
+grant select on test.* to ssl_user5@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "xxx";
flush privileges;
-connect (con1,localhost,ssl_user1,,,,,SSL-CIPHER=AES256-SHA);
+connect (con1,localhost,ssl_user1,,,,,SSL-CIPHER=DHE-RSA-AES256-SHA);
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error ER_ACCESS_DENIED_ERROR
-connect (con2,localhost,ssl_user2,,,,,SSL-CIPHER=AES128-SHA);
connect (con2,localhost,ssl_user2,,,,,SSL-CIPHER=AES256-SHA);
-connect (con3,localhost,ssl_user3,,,,,SSL-CIPHER=AES256-SHA);
-connect (con4,localhost,ssl_user4,,,,,SSL-CIPHER=AES256-SHA);
+connect (con2,localhost,ssl_user2,,,,,SSL-CIPHER=DHE-RSA-AES256-SHA);
+connect (con3,localhost,ssl_user3,,,,,SSL-CIPHER=DHE-RSA-AES256-SHA);
+connect (con4,localhost,ssl_user4,,,,,SSL-CIPHER=DHE-RSA-AES256-SHA);
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error ER_ACCESS_DENIED_ERROR
-connect (con5,localhost,ssl_user5,,,,,SSL-CIPHER=AES256-SHA);
+connect (con5,localhost,ssl_user5,,,,,SSL-CIPHER=DHE-RSA-AES256-SHA);
connection con1;
# Check ssl turned on
@@ -79,6 +79,7 @@ drop table t1;
#
--exec echo "this query should not execute;" > $MYSQLTEST_VARDIR/tmp/test.sql
# Handle that openssl gives different error messages from YaSSL.
+#--replace_regex /error:00000001:lib\(0\):func\(0\):reason\(1\)/ASN: bad other signature confirmation/
--replace_regex /2026 SSL connection error.*/2026 SSL connection error: xxxx/
--error 1
--exec $MYSQL_TEST --ssl-ca=$MYSQL_TEST_DIR/std_data/untrusted-cacert.pem --max-connect-retries=1 < $MYSQLTEST_VARDIR/tmp/test.sql 2>&1
@@ -88,6 +89,7 @@ drop table t1;
# Test that we can't open connection to server if we are using
# a blank ca
#
+#--replace_regex /error:00000001:lib\(0\):func\(0\):reason\(1\)/ASN: bad other signature confirmation/
--replace_regex /2026 SSL connection error.*/2026 SSL connection error: xxxx/
--error 1
--exec $MYSQL_TEST --ssl-ca= --max-connect-retries=1 < $MYSQLTEST_VARDIR/tmp/test.sql 2>&1
@@ -97,6 +99,7 @@ drop table t1;
# Test that we can't open connection to server if we are using
# a nonexistent ca file
#
+#--replace_regex /error:00000001:lib\(0\):func\(0\):reason\(1\)/ASN: bad other signature confirmation/
--replace_regex /2026 SSL connection error.*/2026 SSL connection error: xxxx/
--error 1
--exec $MYSQL_TEST --ssl-ca=nonexisting_file.pem --max-connect-retries=1 < $MYSQLTEST_VARDIR/tmp/test.sql 2>&1
@@ -106,27 +109,23 @@ drop table t1;
# Test that we can't open connection to server if we are using
# a blank client-key
#
---replace_regex /2026 SSL connection error.*/2026 SSL connection error: xxxx/
--error 1
--exec $MYSQL_TEST --ssl-key= --max-connect-retries=1 < $MYSQLTEST_VARDIR/tmp/test.sql 2>&1
---echo
#
# Test that we can't open connection to server if we are using
# a blank client-cert
#
---replace_regex /2026 SSL connection error.*/2026 SSL connection error: xxxx/
--error 1
--exec $MYSQL_TEST --ssl-cert= --max-connect-retries=1 < $MYSQLTEST_VARDIR/tmp/test.sql 2>&1
---echo
#
# Bug#21611 Slave can't connect when master-ssl-cipher specified
# - Apparently selecting a cipher doesn't work at all
-# - Use a cipher that both yaSSL and OpenSSL supports
+# - Usa a cipher that both yaSSL and OpenSSL supports
#
--exec echo "SHOW STATUS LIKE 'Ssl_cipher'; exit;" > $MYSQLTEST_VARDIR/tmp/test.sql
---exec $MYSQL_TEST --ssl-cipher=AES256-SHA < $MYSQLTEST_VARDIR/tmp/test.sql 2>&1
+--exec $MYSQL_TEST --ssl-cipher=DHE-RSA-AES256-SHA < $MYSQLTEST_VARDIR/tmp/test.sql 2>&1
#
# Bug#25309 SSL connections without CA certificate broken since MySQL 5.0.23
@@ -135,7 +134,8 @@ drop table t1;
# verification of servers certificate by setting both ca certificate
# and ca path to NULL
#
---exec $MYSQL --ssl --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem -e "SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher'" 2>&1
+--replace_result DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-SHA DHE-RSA-CHACHA20-POLY1305 DHE-RSA-AES256-SHA
+--exec $MYSQL --ssl --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem -e "SHOW STATUS LIKE 'ssl_Cipher'" 2>&1
--echo End of 5.0 tests
#
@@ -191,7 +191,6 @@ SET GLOBAL event_scheduler=0;
# Test to connect using an unknown cipher
#
--exec echo "SHOW STATUS LIKE 'Ssl_cipher'; exit" > $MYSQLTEST_VARDIR/tmp/test.sql
---replace_regex /2026 SSL connection error.*/2026 SSL connection error: xxxx/
--error 1
--exec $MYSQL_TEST --ssl-cipher=UNKNOWN-CIPHER < $MYSQLTEST_VARDIR/tmp/test.sql 2>&1
@@ -211,10 +210,9 @@ INSERT INTO t1 VALUES (1), (2);
# With wrong parameters
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR mysqldump.exe mysqldump
---replace_regex /\"SSL connection error.*/SSL connection error: xxxx/
--error 2
--exec $MYSQL_DUMP --skip-create-options --skip-comments --ssl --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test 2>&1
---echo
+
DROP TABLE t1;
--remove_file $MYSQLTEST_VARDIR/tmp/test.sql
@@ -224,8 +222,8 @@ DROP TABLE t1;
#
# Common ciphers to openssl and yassl
---exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-cipher=AES256-SHA
---exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-cipher=DES-CBC3-SHA
+--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-cipher=DHE-RSA-AES256-SHA
+--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-cipher=EDH-RSA-DES-CBC3-SHA
--disable_query_log
--disable_result_log
@@ -234,7 +232,20 @@ DROP TABLE t1;
--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=NOT----EXIST
# These probably exist but the server's keys can't be used to accept these kinds of connections.
--error 1,0
---exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=AES128-RMD
+--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=DHE-DSS-AES128-RMD
+--error 1,0
+--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=DHE-DSS-AES128-SHA
+--error 1,0
+--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=DHE-DSS-AES256-RMD
+--error 1,0
+--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=DHE-DSS-AES256-SHA
+--error 1,0
+--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=DHE-DSS-DES-CBC3-RMD
+--error 1,0
+--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=EDH-DSS-DES-CBC3-SHA
+--error 1,0
+--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=EDH-DSS-DES-CBC-SHA
+# End of crashers. ##########################
# If this gives a result, then the bug is fixed.
--enable_result_log
@@ -248,7 +259,8 @@ select 'is still running; no cipher request crashed the server' as result from d
GRANT SELECT ON test.* TO bug42158@localhost REQUIRE X509;
FLUSH PRIVILEGES;
connect(con1,localhost,bug42158,,,,,SSL);
-SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
+--replace_result DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-SHA DHE-RSA-CHACHA20-POLY1305 DHE-RSA-AES256-SHA
+SHOW STATUS LIKE 'Ssl_cipher';
disconnect con1;
connection default;
DROP USER bug42158@localhost;
diff --git a/mysql-test/t/ssl.test b/mysql-test/t/ssl.test
index f2ac288db7a..88766e7cf39 100644
--- a/mysql-test/t/ssl.test
+++ b/mysql-test/t/ssl.test
@@ -11,7 +11,8 @@
connect (ssl_con,localhost,root,,,,,SSL);
# Check ssl turned on
-SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
+--replace_result DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-SHA DHE-RSA-CHACHA20-POLY1305 DHE-RSA-AES256-SHA
+SHOW STATUS LIKE 'Ssl_cipher';
# Check ssl expiration
SHOW STATUS LIKE 'Ssl_server_not_before';
@@ -21,7 +22,8 @@ SHOW STATUS LIKE 'Ssl_server_not_after';
-- source include/common-tests.inc
# Check ssl turned on
-SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
+--replace_result DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-SHA DHE-RSA-CHACHA20-POLY1305 DHE-RSA-AES256-SHA
+SHOW STATUS LIKE 'Ssl_cipher';
#
# MDEV-7697 Client reports ERROR 2006 (MySQL server has gone away) or ERROR 2013 (Lost connection to MySQL server during query) while executing AES* functions under SSL
@@ -33,8 +35,8 @@ connection default;
disconnect ssl_con;
create user mysqltest_1@localhost;
-grant usage on mysqltest.* to mysqltest_1@localhost require cipher "AES256-SHA";
---exec $MYSQL -umysqltest_1 --ssl-cipher=AES256-SHA -e "show status like 'ssl_cipher'" 2>&1
+grant usage on mysqltest.* to mysqltest_1@localhost require cipher "EDH-RSA-DES-CBC3-SHA";
+--exec $MYSQL -umysqltest_1 --ssl-cipher=EDH-RSA-DES-CBC3-SHA -e "show status like 'ssl_cipher'" 2>&1
drop user mysqltest_1@localhost;
# Wait till all disconnects are completed
diff --git a/mysql-test/t/ssl_7937.test b/mysql-test/t/ssl_7937.test
index 8e9d1901907..d593b9d936d 100644
--- a/mysql-test/t/ssl_7937.test
+++ b/mysql-test/t/ssl_7937.test
@@ -26,10 +26,10 @@ create procedure have_ssl()
# we fake the test result for yassl
let yassl=`select variable_value='Unknown' from information_schema.session_status where variable_name='Ssl_session_cache_mode'`;
if (!$yassl) {
- --replace_result "self signed certificate in certificate chain" "Failed to verify the server certificate"
--exec $MYSQL --ssl --ssl-verify-server-cert -e "call test.have_ssl()" 2>&1
}
if ($yassl) {
--echo ERROR 2026 (HY000): SSL connection error: Failed to verify the server certificate
}
+
drop procedure have_ssl;
diff --git a/mysql-test/t/ssl_8k_key-master.opt b/mysql-test/t/ssl_8k_key-master.opt
index 856b33e95ee..531c0abc9f1 100644
--- a/mysql-test/t/ssl_8k_key-master.opt
+++ b/mysql-test/t/ssl_8k_key-master.opt
@@ -1,2 +1,3 @@
--loose-ssl-key=$MYSQL_TEST_DIR/std_data/server8k-key.pem
--loose-ssl-cert=$MYSQL_TEST_DIR/std_data/server8k-cert.pem
+--loose-ssl-cipher=DHE-RSA-AES256-SHA
diff --git a/mysql-test/t/ssl_8k_key.test b/mysql-test/t/ssl_8k_key.test
index 23267a3c611..27cffdce1f2 100644
--- a/mysql-test/t/ssl_8k_key.test
+++ b/mysql-test/t/ssl_8k_key.test
@@ -5,7 +5,7 @@
#
# Bug#29784 YaSSL assertion failure when reading 8k key.
#
---exec $MYSQL --connect-timeout=180 --ssl --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem -e "SELECT (VARIABLE_VALUE <> '') as have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher'" 2>&1
+--exec $MYSQL --ssl --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem -e "SHOW STATUS LIKE 'ssl_Cipher'" 2>&1
## This test file is for testing encrypted communication only, not other
## encryption routines that the SSL library happens to provide!
diff --git a/mysql-test/t/ssl_ca.test b/mysql-test/t/ssl_ca.test
index 5870d9598fc..8e81f44e61c 100644
--- a/mysql-test/t/ssl_ca.test
+++ b/mysql-test/t/ssl_ca.test
@@ -6,14 +6,12 @@
--echo #
--echo # try to connect with wrong '--ssl-ca' path : should fail
-
---replace_regex /SSL connection error.*/SSL connection error: xxxx/
--error 1
---exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/wrong-cacert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test -e "SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';" 2>&1
---echo
+--exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/wrong-cacert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test -e "SHOW STATUS LIKE 'Ssl_cipher'" 2>&1
--echo # try to connect with correct '--ssl-ca' path : should connect
---exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test -e "SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';"
+--replace_result DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-SHA
+--exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test -e "SHOW STATUS LIKE 'Ssl_cipher'"
--echo #
--echo # Bug#21920678: SSL-CA DOES NOT ACCEPT ~USER TILDE HOME DIRECTORY
@@ -24,12 +22,15 @@
--echo # try to connect with '--ssl-ca' option using tilde home directoy
--echo # path substitution : should connect
---exec $MYSQL --ssl-ca$mysql_test_dir_path/std_data/cacert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test -e "SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';"
+--replace_result DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-SHA
+--exec $MYSQL --ssl-ca$mysql_test_dir_path/std_data/cacert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test -e "SHOW STATUS LIKE 'Ssl_cipher'"
--echo # try to connect with '--ssl-key' option using tilde home directoy
--echo # path substitution : should connect
---exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-key$mysql_test_dir_path/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test -e "SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';"
+--replace_result DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-SHA
+--exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-key$mysql_test_dir_path/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test -e "SHOW STATUS LIKE 'Ssl_cipher'"
--echo # try to connect with '--ssl-cert' option using tilde home directoy
--echo # path substitution : should connect
---exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert$mysql_test_dir_path/std_data/client-cert.pem test -e "SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';"
+--replace_result DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-SHA
+--exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert$mysql_test_dir_path/std_data/client-cert.pem test -e "SHOW STATUS LIKE 'Ssl_cipher'"
diff --git a/mysql-test/t/ssl_compress.test b/mysql-test/t/ssl_compress.test
index 588d4555db8..28f3453c23e 100644
--- a/mysql-test/t/ssl_compress.test
+++ b/mysql-test/t/ssl_compress.test
@@ -11,7 +11,8 @@
connect (ssl_compress_con,localhost,root,,,,,SSL COMPRESS);
# Check ssl turned on
-SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
+--replace_result DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-SHA DHE-RSA-CHACHA20-POLY1305 DHE-RSA-AES256-SHA
+SHOW STATUS LIKE 'Ssl_cipher';
# Check compression turned on
SHOW STATUS LIKE 'Compression';
@@ -20,7 +21,8 @@ SHOW STATUS LIKE 'Compression';
-- source include/common-tests.inc
# Check ssl turned on
-SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
+--replace_result DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-SHA DHE-RSA-CHACHA20-POLY1305 DHE-RSA-AES256-SHA
+SHOW STATUS LIKE 'Ssl_cipher';
# Check compression turned on
SHOW STATUS LIKE 'Compression';
diff --git a/mysql-test/t/ssl_timeout.test b/mysql-test/t/ssl_timeout.test
index 430fe7130de..806b928aca0 100644
--- a/mysql-test/t/ssl_timeout.test
+++ b/mysql-test/t/ssl_timeout.test
@@ -7,7 +7,8 @@
connect (ssl_con,localhost,root,,,,,SSL read_timeout=5);
--echo # Check ssl turned on
-SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
+--replace_result DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-SHA DHE-RSA-CHACHA20-POLY1305 DHE-RSA-AES256-SHA
+SHOW STATUS LIKE 'Ssl_cipher';
# --error CR_SERVER_LOST
--error 2013
diff --git a/mysql-test/t/userstat.test b/mysql-test/t/userstat.test
index 9ce3a32c442..cb1250a13ea 100644
--- a/mysql-test/t/userstat.test
+++ b/mysql-test/t/userstat.test
@@ -35,7 +35,8 @@ drop table t1;
# test SSL connections
--connect (ssl_con,localhost,root,,,,,SSL)
-SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
+--replace_result DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-SHA
+SHOW STATUS LIKE 'Ssl_cipher';
--connection default
#
diff --git a/mysys/CMakeLists.txt b/mysys/CMakeLists.txt
index 892928ca69b..5f4e9156fd2 100644
--- a/mysys/CMakeLists.txt
+++ b/mysys/CMakeLists.txt
@@ -16,7 +16,6 @@
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/mysys)
SET(MYSYS_SOURCES array.c charset-def.c charset.c checksum.c my_default.c
- get_password.c
errors.c hash.c list.c
mf_cache.c mf_dirname.c mf_fn_ext.c
mf_format.c mf_getdate.c mf_iocache.c mf_iocache2.c mf_keycache.c
@@ -40,7 +39,7 @@ SET(MYSYS_SOURCES array.c charset-def.c charset.c checksum.c my_default.c
lf_alloc-pin.c lf_dynarray.c lf_hash.c
safemalloc.c my_new.cc
my_atomic.c my_getncpus.c my_safehash.c my_chmod.c my_rnd.c
- my_uuid.c wqueue.c waiting_threads.c ma_dyncol.c ../sql-common/my_time.c
+ my_uuid.c wqueue.c waiting_threads.c ma_dyncol.c
my_rdtsc.c my_context.c psi_noop.c
file_logger.c)
diff --git a/mysys/typelib.c b/mysys/typelib.c
index bb4499020df..75744a65ec8 100644
--- a/mysys/typelib.c
+++ b/mysys/typelib.c
@@ -409,10 +409,3 @@ my_ulonglong find_set_from_flags(const TYPELIB *lib, uint default_name,
return res;
}
-/* Typelib by all clients */
-const char *sql_protocol_names_lib[] =
-{ "TCP", "SOCKET", "PIPE", "MEMORY", NullS };
-
-TYPELIB sql_protocol_typelib ={ array_elements(sql_protocol_names_lib) - 1, "",
-sql_protocol_names_lib, NULL };
-
diff --git a/sql-common/client.c b/sql-common/client.c
index 77db558d271..fdb17a63ba5 100644
--- a/sql-common/client.c
+++ b/sql-common/client.c
@@ -1005,6 +1005,11 @@ enum option_id {
static TYPELIB option_types={array_elements(default_options)-1,
"options",default_options, NULL};
+const char *sql_protocol_names_lib[] =
+{ "TCP", "SOCKET", "PIPE", "MEMORY", NullS };
+TYPELIB sql_protocol_typelib = {array_elements(sql_protocol_names_lib)-1,"",
+ sql_protocol_names_lib, NULL};
+
static int add_init_command(struct st_mysql_options *options, const char *cmd)
{
char *tmp;
@@ -4769,11 +4774,3 @@ mysql_get_socket(const MYSQL *mysql)
return vio_fd(mysql->net.vio);
return INVALID_SOCKET;
}
-
-
-int STDCALL mysql_cancel(MYSQL *mysql)
-{
- if (mysql->net.vio)
- return vio_shutdown(mysql->net.vio, SHUT_RDWR);
- return -1;
-}
diff --git a/sql-common/my_time.c b/sql-common/my_time.c
index 5fcb07e45c0..28757a2c96c 100644
--- a/sql-common/my_time.c
+++ b/sql-common/my_time.c
@@ -20,7 +20,7 @@
#include <m_ctype.h>
/* Windows version of localtime_r() is declared in my_ptrhead.h */
#include <my_pthread.h>
-
+#include <mysqld_error.h>
ulonglong log_10_int[20]=
{
@@ -777,9 +777,6 @@ long calc_daynr(uint year,uint month,uint day)
DBUG_RETURN(delsum+(int) y/4-temp);
} /* calc_daynr */
-/* Can't include mysqld_error.h, it needs mysys to build, thus hardcode 2 error values here. */
-#define ER_WARN_DATA_OUT_OF_RANGE 1264
-#define ER_WARN_INVALID_TIMESTAMP 1299
/*
Convert time in MYSQL_TIME representation in system time zone to its
diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
index 40bd024b356..089d793b2b0 100644
--- a/sql/CMakeLists.txt
+++ b/sql/CMakeLists.txt
@@ -90,7 +90,7 @@ SET (SQL_SOURCE
key.cc log.cc lock.cc
log_event.cc rpl_record.cc rpl_reporting.cc
log_event_old.cc rpl_record_old.cc
- message.h mf_iocache.cc my_decimal.cc
+ message.h mf_iocache.cc my_decimal.cc ../sql-common/my_time.c
mysqld.cc net_serv.cc keycaches.cc
../sql-common/client_plugin.c
opt_range.cc opt_range.h opt_sum.cc
diff --git a/sql/log_event.cc b/sql/log_event.cc
index 49c8e2e6162..b1cf6a9024a 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -1354,7 +1354,7 @@ int Log_event::read_log_event(IO_CACHE* file, String* packet,
ulong data_len;
char buf[LOG_EVENT_MINIMAL_HEADER_LEN];
uchar ev_offset= packet->length();
-#if !defined(MYSQL_CLIENT)
+#ifndef max_allowed_packet
THD *thd=current_thd;
ulong max_allowed_packet= thd ? thd->slave_thread ? slave_max_allowed_packet
: thd->variables.max_allowed_packet
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index ee0d6fbe721..fa8f143335d 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -6324,7 +6324,7 @@ static void bootstrap(MYSQL_FILE *file)
mysql_cond_wait(&COND_thread_count, &LOCK_thread_count);
mysql_mutex_unlock(&LOCK_thread_count);
#else
- thd->emb_mysql= 0;
+ thd->mysql= 0;
do_handle_bootstrap(thd);
#endif
diff --git a/sql/slave.cc b/sql/slave.cc
index 78f3ec90ff6..81597212c62 100644
--- a/sql/slave.cc
+++ b/sql/slave.cc
@@ -3853,7 +3853,9 @@ static int try_to_reconnect(THD *thd, MYSQL *mysql, Master_info *mi,
{
mi->slave_running= MYSQL_SLAVE_RUN_NOT_CONNECT;
thd->proc_info= messages[SLAVE_RECON_MSG_WAIT];
- thd->clear_active_mysql();
+#ifdef SIGNAL_WITH_VIO_CLOSE
+ thd->clear_active_vio();
+#endif
end_server(mysql);
if ((*retry_count)++)
{
@@ -4265,14 +4267,16 @@ err:
if (mysql)
{
/*
- Here we need to clear the active mysql before closing the
+ Here we need to clear the active VIO before closing the
connection with the master. The reason is that THD::awake()
might be called from terminate_slave_thread() because somebody
- issued a STOP SLAVE. If that happends, the close_active_mysql()
+ issued a STOP SLAVE. If that happends, the close_active_vio()
can be called in the middle of closing the VIO associated with
the 'mysql' object, causing a crash.
*/
- thd->clear_active_mysql();
+#ifdef SIGNAL_WITH_VIO_CLOSE
+ thd->clear_active_vio();
+#endif
mysql_close(mysql);
mi->mysql=0;
}
@@ -6148,9 +6152,11 @@ void end_relay_log_info(Relay_log_info* rli)
extern "C" void slave_io_thread_detach_vio()
{
+#ifdef SIGNAL_WITH_VIO_CLOSE
THD *thd= current_thd;
if (thd && thd->slave_thread)
- thd->clear_active_mysql();
+ thd->clear_active_vio();
+#endif
}
@@ -6309,7 +6315,9 @@ static int connect_to_master(THD* thd, MYSQL* mysql, Master_info* mi,
general_log_print(thd, COM_CONNECT_OUT, "%s@%s:%d",
mi->user, mi->host, mi->port);
}
- thd->set_active_mysql(mysql);
+#ifdef SIGNAL_WITH_VIO_CLOSE
+ thd->set_active_vio(mysql->net.vio);
+#endif
}
mysql->reconnect= 1;
DBUG_PRINT("exit",("slave_was_killed: %d", slave_was_killed));
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index c11cb8be5cb..37e6e769a89 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -12287,10 +12287,6 @@ err:
fills MYSQL_PLUGIN_VIO_INFO structure with the information about the
connection
*/
-
-extern "C" void mpvio_info(Vio *vio,
- MYSQL_PLUGIN_VIO_INFO *info);
-
static void server_mpvio_info(MYSQL_PLUGIN_VIO *vio,
MYSQL_PLUGIN_VIO_INFO *info)
{
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 4b2dee86bf3..9710ea8bbe3 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -984,8 +984,8 @@ THD::THD(my_thread_id id, bool is_wsrep_applier)
&variables.wt_timeout_short,
&variables.wt_deadlock_search_depth_long,
&variables.wt_timeout_long);
-#ifndef EMBEDDED_LIBRARY
- active_mysql= 0;
+#ifdef SIGNAL_WITH_VIO_CLOSE
+ active_vio = 0;
#endif
mysql_mutex_init(key_LOCK_thd_data, &LOCK_thd_data, MY_MUTEX_INIT_FAST);
mysql_mutex_init(key_LOCK_wakeup_ready, &LOCK_wakeup_ready, MY_MUTEX_INIT_FAST);
@@ -1687,8 +1687,8 @@ void THD::reset_for_reuse()
free_connection_done= 0;
m_command= COM_CONNECT;
profiling.reset();
-#ifndef EMBEDDED_LIBRARY
- active_mysql = 0;
+#ifdef SIGNAL_WITH_VIO_CLOSE
+ active_vio = 0;
#endif
}
@@ -1905,17 +1905,13 @@ void THD::awake(killed_state state_to_set)
if (state_to_set >= KILL_CONNECTION || state_to_set == NOT_KILLED)
{
+#ifdef SIGNAL_WITH_VIO_CLOSE
if (this != current_thd)
{
-#ifndef EMBEDDED_LIBRARY
- if (active_mysql)
- mysql_cancel(active_mysql);
- else
-#endif
- if(net.vio)
- vio_shutdown(net.vio, SHUT_RDWR);
-
+ if(active_vio)
+ vio_shutdown(active_vio, SHUT_RDWR);
}
+#endif
/* Mark the target thread's alarm request expired, and signal alarm. */
thr_alarm_kill(thread_id);
@@ -2010,13 +2006,15 @@ void THD::disconnect()
killed= KILL_CONNECTION;
+#ifdef SIGNAL_WITH_VIO_CLOSE
/*
Since a active vio might might have not been set yet, in
any case save a reference to avoid closing a inexistent
one or closing the vio twice if there is a active one.
*/
- close_active_mysql();
-
+ vio= active_vio;
+ close_active_vio();
+#endif
/* Disconnect even if a active vio is not associated. */
if (net.vio != vio)
@@ -2679,19 +2677,21 @@ void THD::make_explain_field_list(List<Item> &field_list, uint8 explain_flags,
}
-void THD::close_active_mysql()
+#ifdef SIGNAL_WITH_VIO_CLOSE
+void THD::close_active_vio()
{
- DBUG_ENTER("close_active_mysql");
+ DBUG_ENTER("close_active_vio");
mysql_mutex_assert_owner(&LOCK_thd_data);
#ifndef EMBEDDED_LIBRARY
- if (active_mysql)
+ if (active_vio)
{
- mysql_close(active_mysql);
- active_mysql= 0;
+ vio_close(active_vio);
+ active_vio = 0;
}
#endif
DBUG_VOID_RETURN;
}
+#endif
struct Item_change_record: public ilink
diff --git a/sql/sql_class.h b/sql/sql_class.h
index a9c1514fe26..55c0948d46e 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -45,7 +45,6 @@
#include <mysql/psi/mysql_idle.h>
#include <mysql/psi/mysql_table.h>
#include <mysql_com_server.h>
-#include <mysql.h>
extern "C"
void set_thd_stage_info(void *thd,
@@ -2014,7 +2013,7 @@ public:
static const char * const DEFAULT_WHERE;
#ifdef EMBEDDED_LIBRARY
- MYSQL *emb_mysql;
+ struct st_mysql *mysql;
unsigned long client_stmt_id;
unsigned long client_param_count;
struct st_mysql_bind *client_params;
@@ -2426,11 +2425,9 @@ public:
#ifndef __WIN__
sigset_t signals;
#endif
-
-#ifndef EMBEDDED_LIBRARY
- MYSQL *active_mysql;
+#ifdef SIGNAL_WITH_VIO_CLOSE
+ Vio* active_vio;
#endif
-
/*
This is to track items changed during execution of a prepared
statement/stored procedure. It's created by
@@ -3028,25 +3025,21 @@ public:
void reset_for_reuse();
bool store_globals();
void reset_globals();
-
- inline void set_active_mysql(MYSQL *active_mysql)
+#ifdef SIGNAL_WITH_VIO_CLOSE
+ inline void set_active_vio(Vio* vio)
{
-#ifndef EMBEDDED_LIBRARY
mysql_mutex_lock(&LOCK_thd_data);
- this->active_mysql= active_mysql;
+ active_vio = vio;
mysql_mutex_unlock(&LOCK_thd_data);
-#endif
}
- inline void clear_active_mysql()
+ inline void clear_active_vio()
{
-#ifndef EMBEDDED_LIBRARY
mysql_mutex_lock(&LOCK_thd_data);
- active_mysql= 0;
+ active_vio = 0;
mysql_mutex_unlock(&LOCK_thd_data);
-#endif
}
- void close_active_mysql();
-
+ void close_active_vio();
+#endif
void awake(killed_state state_to_set);
/** Disconnect the associated communication endpoint. */
diff --git a/sql/sql_connect.cc b/sql/sql_connect.cc
index 2495173bb28..fe6a101f999 100644
--- a/sql/sql_connect.cc
+++ b/sql/sql_connect.cc
@@ -857,7 +857,9 @@ static int check_connection(THD *thd)
DBUG_PRINT("info",
("New connection received on %s", vio_description(net->vio)));
-
+#ifdef SIGNAL_WITH_VIO_CLOSE
+ thd->set_active_vio(net->vio);
+#endif
if (!thd->main_security_ctx.host) // If TCP/IP connection
{
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 703efd56d55..f32e0270ce4 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -15,21 +15,16 @@
ADD_DEFINITIONS("-DMYSQL_CLIENT")
-
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
- ${CMAKE_SOURCE_DIR}/client)
-INCLUDE_DIRECTORIES(BEFORE ${CONNECTOR_C_INSTALLDIR}/include/mariadb)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
ADD_EXECUTABLE(mysql_client_test mysql_client_test.c)
-SET(CLIENT_LIB ${CONNECTOR_C_LIBS} mysys)
-
-TARGET_LINK_LIBRARIES(mysql_client_test ${CLIENT_LIB})
-ADD_DEPENDENCIES(mysql_client_test GenError mariadb_connector_c)
+TARGET_LINK_LIBRARIES(mysql_client_test mysqlclient)
+SET_TARGET_PROPERTIES(mysql_client_test PROPERTIES LINKER_LANGUAGE CXX)
IF(WITH_UNIT_TESTS)
ADD_EXECUTABLE(bug25714 bug25714.c)
- TARGET_LINK_LIBRARIES(bug25714 ${CLIENT_LIB})
- ADD_DEPENDENCIES(bug25714 GenError mariadb_connector_c)
+ TARGET_LINK_LIBRARIES(bug25714 mysqlclient)
+ SET_TARGET_PROPERTIES(bug25714 PROPERTIES LINKER_LANGUAGE CXX)
ENDIF()
INSTALL(TARGETS mysql_client_test DESTINATION ${INSTALL_BINDIR} COMPONENT Test)
@@ -39,6 +34,7 @@ FIND_LIBRARY(EVENT_LIBRARY event)
MARK_AS_ADVANCED(EVENT_LIBRARY)
IF(HAVE_EVENT_H AND EVENT_LIBRARY)
ADD_EXECUTABLE(async_queries async_queries.c)
- TARGET_LINK_LIBRARIES(async_queries ${CLIENT_LIB} ${EVENT_LIBRARY})
- ADD_DEPENDENCIES(async_queries GenError mariadb_connector_c)
+ TARGET_LINK_LIBRARIES(async_queries mysqlclient ${EVENT_LIBRARY})
+ SET_TARGET_PROPERTIES(async_queries PROPERTIES LINKER_LANGUAGE CXX)
+
ENDIF()
diff --git a/tests/mysql_client_fw.c b/tests/mysql_client_fw.c
index 50ecf6c0860..b7211989f1f 100644
--- a/tests/mysql_client_fw.c
+++ b/tests/mysql_client_fw.c
@@ -21,7 +21,6 @@
#include <my_getopt.h>
#include <m_string.h>
#include <mysqld_error.h>
-#include <mysql_version.h>
#include <sql_common.h>
#include <mysql/client_plugin.h>
@@ -364,7 +363,7 @@ static MYSQL* client_connect(ulong flag, uint protocol, my_bool auto_reconnect)
fprintf(stdout, "\n Check the connection options using --help or -?\n");
exit(1);
}
- mysql_options(mysql, MYSQL_OPT_RECONNECT, &auto_reconnect);
+ mysql->reconnect= auto_reconnect;
if (!opt_silent)
fprintf(stdout, "OK");
@@ -1146,7 +1145,7 @@ static my_bool thread_query(const char *query)
{
MYSQL *l_mysql;
my_bool error;
- my_bool reconnect= 1;
+
error= 0;
if (!opt_silent)
fprintf(stdout, "\n in thread_query(%s)", query);
@@ -1163,7 +1162,7 @@ static my_bool thread_query(const char *query)
error= 1;
goto end;
}
- mysql_options(l_mysql, MYSQL_OPT_RECONNECT, &reconnect);
+ l_mysql->reconnect= 1;
if (mysql_query(l_mysql, query))
{
fprintf(stderr, "Query failed (%s)\n", mysql_error(l_mysql));
diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c
index 76db1f62f85..806924e8e0e 100644
--- a/tests/mysql_client_test.c
+++ b/tests/mysql_client_test.c
@@ -34,22 +34,8 @@
#include "mysql_client_fw.c"
-static const my_bool my_true= 1;
-
-
/* Query processing */
-static my_bool get_reconnect(MYSQL *mysql)
-{
-#ifdef EMBEDDED_LIBRARY
- return mysql->reconnect;
-#else
- my_bool reconnect;
- mysql_get_option(mysql, MYSQL_OPT_RECONNECT, &reconnect);
- return reconnect;
-#endif
-}
-
static void client_query()
{
int rc;
@@ -3137,7 +3123,7 @@ static void test_long_data_str1()
int rc, i;
char data[255];
long length;
- ulong max_blob_length, blob_length= 0, length1;
+ ulong max_blob_length, blob_length, length1;
my_bool true_value;
MYSQL_RES *result;
MYSQL_BIND my_bind[2];
@@ -4826,7 +4812,7 @@ static void test_stmt_close()
myerror("connection failed");
exit(1);
}
- mysql_options(lmysql, MYSQL_OPT_RECONNECT, &my_true);
+ lmysql->reconnect= 1;
if (!opt_silent)
fprintf(stdout, "OK");
@@ -5510,7 +5496,7 @@ DROP TABLE IF EXISTS test_multi_tab";
fprintf(stdout, "\n connection failed(%s)", mysql_error(mysql_local));
exit(1);
}
- mysql_options(mysql_local, MYSQL_OPT_RECONNECT, &my_true);
+ mysql_local->reconnect= 1;
rc= mysql_query(mysql_local, query);
myquery(rc);
@@ -5634,7 +5620,7 @@ static void test_prepare_multi_statements()
fprintf(stderr, "\n connection failed(%s)", mysql_error(mysql_local));
exit(1);
}
- mysql_options(mysql_local, MYSQL_OPT_RECONNECT, &my_true);
+ mysql_local->reconnect= 1;
strmov(query, "select 1; select 'another value'");
stmt= mysql_simple_prepare(mysql_local, query);
check_stmt_r(stmt);
@@ -6350,8 +6336,6 @@ static void test_pure_coverage()
rc= mysql_stmt_execute(stmt);
check_execute(stmt, rc);
-#if 0
- /* MariaDB C/C converts geometry to string */
my_bind[0].buffer_type= MYSQL_TYPE_GEOMETRY;
rc= mysql_stmt_bind_result(stmt, my_bind);
check_execute_r(stmt, rc); /* unsupported buffer type */
@@ -6362,7 +6346,6 @@ static void test_pure_coverage()
rc= mysql_stmt_store_result(stmt);
DIE_UNLESS(rc); /* Old error must be reset first */
-#endif
mysql_stmt_close(stmt);
mysql_query(mysql, "DROP TABLE test_pure");
@@ -7242,7 +7225,7 @@ static void test_prepare_grant()
mysql_close(lmysql);
exit(1);
}
- mysql_options(lmysql, MYSQL_OPT_RECONNECT, &my_true);
+ lmysql->reconnect= 1;
if (!opt_silent)
fprintf(stdout, "OK");
@@ -7704,7 +7687,7 @@ static void test_drop_temp()
mysql_close(lmysql);
exit(1);
}
- mysql_options(lmysql, MYSQL_OPT_RECONNECT, &my_true);
+ lmysql->reconnect= 1;
if (!opt_silent)
fprintf(stdout, "OK");
@@ -13419,7 +13402,10 @@ static void test_bug9478()
/* Fill in the fetch packet */
int4store(buff, stmt->stmt_id);
buff[4]= 1; /* prefetch rows */
- rc= mysql_stmt_fetch(stmt);
+ rc= ((*mysql->methods->advanced_command)(mysql, COM_STMT_FETCH,
+ (uchar*) buff,
+ sizeof(buff), 0,0,1,NULL) ||
+ (*mysql->methods->read_query_result)(mysql));
DIE_UNLESS(rc);
if (!opt_silent && i == 0)
printf("Got error (as expected): %s\n", mysql_error(mysql));
@@ -15006,7 +14992,7 @@ static void test_bug15510()
static void test_opt_reconnect()
{
MYSQL *lmysql;
-
+ my_bool my_true= TRUE;
myheader("test_opt_reconnect");
@@ -15017,8 +15003,8 @@ static void test_opt_reconnect()
}
if (!opt_silent)
- fprintf(stdout, "reconnect before mysql_options: %d\n", get_reconnect(lmysql));
- DIE_UNLESS(get_reconnect(lmysql) == 0);
+ fprintf(stdout, "reconnect before mysql_options: %d\n", lmysql->reconnect);
+ DIE_UNLESS(lmysql->reconnect == 0);
if (mysql_options(lmysql, MYSQL_OPT_RECONNECT, &my_true))
{
@@ -15028,8 +15014,8 @@ static void test_opt_reconnect()
/* reconnect should be 1 */
if (!opt_silent)
- fprintf(stdout, "reconnect after mysql_options: %d\n", get_reconnect(lmysql));
- DIE_UNLESS(get_reconnect(lmysql) == 1);
+ fprintf(stdout, "reconnect after mysql_options: %d\n", lmysql->reconnect);
+ DIE_UNLESS(lmysql->reconnect == 1);
if (!(mysql_real_connect(lmysql, opt_host, opt_user,
opt_password, current_db, opt_port,
@@ -15042,8 +15028,8 @@ static void test_opt_reconnect()
/* reconnect should still be 1 */
if (!opt_silent)
fprintf(stdout, "reconnect after mysql_real_connect: %d\n",
- get_reconnect(lmysql));
- DIE_UNLESS(get_reconnect(lmysql) == 1);
+ lmysql->reconnect);
+ DIE_UNLESS(lmysql->reconnect == 1);
mysql_close(lmysql);
@@ -15054,8 +15040,8 @@ static void test_opt_reconnect()
}
if (!opt_silent)
- fprintf(stdout, "reconnect before mysql_real_connect: %d\n", get_reconnect(lmysql));
- DIE_UNLESS(get_reconnect(lmysql) == 0);
+ fprintf(stdout, "reconnect before mysql_real_connect: %d\n", lmysql->reconnect);
+ DIE_UNLESS(lmysql->reconnect == 0);
if (!(mysql_real_connect(lmysql, opt_host, opt_user,
opt_password, current_db, opt_port,
@@ -15068,8 +15054,8 @@ static void test_opt_reconnect()
/* reconnect should still be 0 */
if (!opt_silent)
fprintf(stdout, "reconnect after mysql_real_connect: %d\n",
- get_reconnect(lmysql));
- DIE_UNLESS(get_reconnect(lmysql) == 0);
+ lmysql->reconnect);
+ DIE_UNLESS(lmysql->reconnect == 0);
mysql_close(lmysql);
}
@@ -17999,8 +17985,7 @@ static void test_bug43560(void)
strncpy(buffer, values[2], BUFSIZE);
length= strlen(buffer);
rc= mysql_stmt_execute(stmt);
- DIE_UNLESS(rc && (mysql_stmt_errno(stmt) == CR_SERVER_LOST ||
- mysql_stmt_errno(stmt) == CR_SERVER_GONE_ERROR));
+ DIE_UNLESS(rc && mysql_stmt_errno(stmt) == CR_SERVER_LOST);
opt_drop_db= 0;
client_disconnect(conn);
diff --git a/tests/nonblock-wrappers.h b/tests/nonblock-wrappers.h
index fd50e4e4ee6..d6f42511f3a 100644
--- a/tests/nonblock-wrappers.h
+++ b/tests/nonblock-wrappers.h
@@ -321,7 +321,6 @@ MK_WRAPPER(
mysql,
mysql)
-#ifdef HAVE_DEPRECATED_ASYNC_API
MK_WRAPPER(
MYSQL_RES *,
mysql_list_dbs,
@@ -357,7 +356,6 @@ MK_WRAPPER(
(mysql, table, wild),
mysql,
mysql)
-#endif /* HAVE_DEPRECATED_ASYNC_API */
MK_WRAPPER(
my_bool,
@@ -502,6 +500,7 @@ MK_WRAPPER(
#define mysql_list_dbs wrap_mysql_list_dbs
#define mysql_list_tables wrap_mysql_list_tables
#define mysql_list_processes wrap_mysql_list_processes
+#define mysql_list_fields wrap_mysql_list_fields
#define mysql_read_query_result wrap_mysql_read_query_result
#define mysql_stmt_prepare wrap_mysql_stmt_prepare
#define mysql_stmt_execute wrap_mysql_stmt_execute
diff --git a/unittest/mysys/CMakeLists.txt b/unittest/mysys/CMakeLists.txt
index 0c61ff09af2..ad5195a843e 100644
--- a/unittest/mysys/CMakeLists.txt
+++ b/unittest/mysys/CMakeLists.txt
@@ -20,7 +20,8 @@ MY_ADD_TESTS(my_vsnprintf LINK_LIBRARIES strings mysys)
ADD_DEFINITIONS(${SSL_DEFINES})
-MY_ADD_TESTS(ma_dyncol LINK_LIBRARIES mysys)
+MY_ADD_TESTS(ma_dyncol
+ LINK_LIBRARIES mysqlclient)
IF(WIN32)
MY_ADD_TESTS(my_delete LINK_LIBRARIES mysys)