From 84c0abeb722c55a4360d86106bb0302a37cb777f Mon Sep 17 00:00:00 2001 From: Valentin Rakush Date: Mon, 18 Nov 2019 10:13:21 +0000 Subject: [PATCH 1/2] Fix for charset_unsigned_int test --- test/tap/tests/charset_unsigned_int-t.cpp | 27 ++++++++++++----------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/test/tap/tests/charset_unsigned_int-t.cpp b/test/tap/tests/charset_unsigned_int-t.cpp index 5dcf20a35..c781dbab4 100644 --- a/test/tap/tests/charset_unsigned_int-t.cpp +++ b/test/tap/tests/charset_unsigned_int-t.cpp @@ -114,16 +114,16 @@ int main(int argc, char** argv) { if (mysql_query(mysql, "set names 'utf8'")) return exit_status(); show_variable(mysql, var_collation_connection, var_value); - ok(var_value.compare("utf8_general_ci") == 0, "Initial client character set"); + ok(var_value.compare("utf8_general_ci") == 0, "Initial client character set"); // ok_1 if (mysql_query(mysql, "set names utf8mb4 collate utf8mb4_croatian_ci")) return exit_status(); show_variable(mysql, var_collation_connection, var_value); std::string version; get_server_version(mysql, version); - if (version[0] == '5') { - ok(var_value.compare("utf8mb4_general_ci") == 0, "Backend is mysql version < 8.0. Collation is reduced to utf8mb4_general_ci as expected"); + if (version.data()[0] == '5') { + ok(var_value.compare("utf8mb4_general_ci") == 0, "Backend is mysql version < 8.0. Collation is reduced to utf8mb4_general_ci as expected"); // ok_2 } else { - ok(var_value.compare("utf8mb4_croatian_ci") == 0, "Backend is mysql version >= 8.0. Collation is set as expected to utf8mb4_croatian_ci"); + ok(var_value.compare("utf8mb4_croatian_ci") == 0, "Backend is mysql version >= 8.0. Collation is set as expected to utf8mb4_croatian_ci"); // ok_2 } mysql_close(mysql); @@ -139,31 +139,32 @@ int main(int argc, char** argv) { if (mysql_query(mysql_a, "save mysql variables to disk")) return exit_status(); show_admin_global_variable(mysql_a, var_name, var_value); - ok(var_value.compare("latin1") == 0, "Default charset latin1 is set in admin"); + ok(var_value.compare("latin1") == 0, "Default charset latin1 is set in admin"); // ok_3 if (mysql_query(mysql_a, "update global_variables set variable_value='utf8mb4' where variable_name='mysql-default_charset'")) return exit_status(); if (mysql_query(mysql_a, "load mysql variables to runtime")) return exit_status(); if (mysql_query(mysql_a, "save mysql variables to disk")) return exit_status(); show_admin_global_variable(mysql_a, var_name, var_value); - ok(var_value.compare("utf8mb4") == 0, "Default charset utf8mb4 is set in admin"); + ok(var_value.compare("utf8mb4") == 0, "Default charset utf8mb4 is set in admin"); // ok_4 mysql_close(mysql_a); + + // Now default charset is utf8mb4 and new client connection should use it by default MYSQL* mysql_b = mysql_init(NULL); if (!mysql_b) return exit_status(); if (!mysql_real_connect(mysql_b, cl.host, cl.username, cl.password, NULL, cl.port, NULL, 0)) return exit_status(); get_server_version(mysql_b, version); - if (version[0] == '5') { + if (version.data()[0] == '5') { show_variable(mysql_b, var_collation_connection, var_value); - ok(var_value.compare("utf8mb4_general_ci") == 0, "Collation 255 is set, because proxyserver changed it"); + ok(var_value.compare("utf8mb4_general_ci") == 0, "Collation 255 is set, because proxyserver changed it"); // ok_5 } else { show_variable(mysql_b, var_collation_connection, var_value); - ok(var_value.compare("utf8mb4_0900_ai_ci") == 0, "Collation >255 is set"); + ok(var_value.compare("utf8mb4_0900_ai_ci") == 0, "Collation >255 is set"); // ok_5 } - mysql_close(mysql_b); @@ -174,13 +175,13 @@ int main(int argc, char** argv) { if (!mysql_real_connect(mysql_c, cl.host, cl.username, cl.password, NULL, cl.port, NULL, 0)) return exit_status(); if (get_server_version(mysql_c, version)) return exit_status(); - if (version[0] == '5') { + if (version.data()[0] == '5') { show_variable(mysql_c, var_collation_connection, var_value); - ok(var_value.compare("utf8mb4_general_ci") == 0, "Collation 255 is set, because proxyserver changed it"); + ok(var_value.compare("utf8mb4_general_ci") == 0, "Collation 255 is set, because proxyserver changed it"); // ok_6 } else { show_variable(mysql_c, var_collation_connection, var_value); - ok(var_value.compare("utf8mb4_0900_ai_ci") == 0, "Collation >255 is set"); + ok(var_value.compare("utf8mb4_0900_ai_ci") == 0, "Collation >255 is set"); // ok_6 } mysql_close(mysql_c); From 42cda8ddd411e823671b08110c50479bf87a425e Mon Sep 17 00:00:00 2001 From: Valentin Rakush Date: Mon, 18 Nov 2019 14:11:25 +0000 Subject: [PATCH 2/2] Remove dependency on libmysqlclient.so. Use proxysql libmariadbclient.a instead --- test/tap/tests/Makefile | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/test/tap/tests/Makefile b/test/tap/tests/Makefile index 496c763a5..24558a3b9 100644 --- a/test/tap/tests/Makefile +++ b/test/tap/tests/Makefile @@ -1,6 +1,14 @@ +DEPS_PATH=../../../deps + +MARIADB_PATH=$(DEPS_PATH)/mariadb-client-library/mariadb_client +MARIADB_IDIR=$(MARIADB_PATH)/include +MARIADB_LDIR=$(MARIADB_PATH)/libmariadb + INCLUDEDIR=../tap LIBDIR=../tap +STATIC_LIBS=$(MARIADB_LDIR)/libmariadbclient.a + .PHONY: all all: tests @@ -18,8 +26,8 @@ basic-t: $(LIBDIR)/libtap.a g++ basic-t.cpp -I$(INCLUDEDIR) -L$(LIBDIR) -std=c++11 -ltap -o basic-t set_character_set-t: set_character_set-t.cpp $(LIBDIR)/libtap.a - g++ set_character_set-t.cpp -I$(INCLUDEDIR) -L$(LIBDIR) -std=c++11 `mysql_config --include --libs` -lmysqlclient -ltap -o set_character_set-t + g++ set_character_set-t.cpp -I$(INCLUDEDIR) -I$(MARIADB_IDIR) -L$(LIBDIR) -std=c++11 $(STATIC_LIBS) -ltap -lssl -lcrypto -ldl -lpthread -o set_character_set-t charset_unsigned_int-t: charset_unsigned_int-t.cpp $(LIBDIR)/libtap.a - g++ charset_unsigned_int-t.cpp -I$(INCLUDEDIR) -L$(LIBDIR) -std=c++11 `mysql_config --include --libs` -lmysqlclient -ltap -o charset_unsigned_int-t + g++ charset_unsigned_int-t.cpp -I$(INCLUDEDIR) -I$(MARIADB_IDIR) -L$(LIBDIR) -std=c++11 $(STATIC_LIBS) -ltap -lssl -lcrypto -ldl -lpthread -o charset_unsigned_int-t