|
|
|
|
@ -23,8 +23,11 @@
|
|
|
|
|
*
|
|
|
|
|
* For checking that this variables has changed or keep their values properly.
|
|
|
|
|
*
|
|
|
|
|
* NOTE: For making sure that all the operations are being performed in the same backend
|
|
|
|
|
* connection, test starts a transaction. For more context see #3460.
|
|
|
|
|
* NOTE: After "SET CHARACTER SET 'latin1'" has been issued, no checks are performed for
|
|
|
|
|
* 'character_set_connection' since, due to multiplexing and ProxySQL explicitely forgetting
|
|
|
|
|
* the value for 'character_set_connection' and 'collation_connection' (for more context
|
|
|
|
|
* see MySQL_Variables::client_set_value),the value for it is **unknown** and depends entirely
|
|
|
|
|
* of the backend connection selected. For more context see #3460.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include <cstdlib>
|
|
|
|
|
@ -45,7 +48,7 @@ int main(int argc, char** argv) {
|
|
|
|
|
if(cl.getEnv())
|
|
|
|
|
return exit_status();
|
|
|
|
|
|
|
|
|
|
plan(12);
|
|
|
|
|
plan(11);
|
|
|
|
|
diag("Testing SET CHARACTER SET");
|
|
|
|
|
|
|
|
|
|
MYSQL* mysql = mysql_init(NULL);
|
|
|
|
|
@ -82,16 +85,6 @@ int main(int argc, char** argv) {
|
|
|
|
|
return exit_status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* NOTE: A transaction is started to ensure that all the following operations are
|
|
|
|
|
* performed over the same backend connection. See #3640 for more context.
|
|
|
|
|
*/
|
|
|
|
|
if (mysql_query(mysql, "BEGIN")) {
|
|
|
|
|
fprintf(stderr, "File %s, line %d, Error: %s\n",
|
|
|
|
|
__FILE__, __LINE__, mysql_error(mysql));
|
|
|
|
|
return exit_status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (mysql_query(mysql, "set names 'utf8'")) {
|
|
|
|
|
fprintf(stderr, "SET NAMES 'utf8': Error: %s\n",
|
|
|
|
|
mysql_error(mysql));
|
|
|
|
|
@ -131,11 +124,16 @@ int main(int argc, char** argv) {
|
|
|
|
|
show_variable(mysql, var_charset_database, var_value);
|
|
|
|
|
ok(var_value.compare("utf8") == 0, "Database character set is not changed. Actual %s", var_value.c_str()); // ok_6
|
|
|
|
|
|
|
|
|
|
show_variable(mysql, var_charset_connection, var_value);
|
|
|
|
|
ok(var_value.compare(db_charset_value) == 0, "Connection character set same as database charset. Actual %s", var_value.c_str()); // ok_7
|
|
|
|
|
/*
|
|
|
|
|
* NOTE: This check was disabled because trying to check 'character_set_connection' after issuing 'SET CHARACTER SET',
|
|
|
|
|
* when multiplexing is enabled is invalid, since the value is unknown. Check file top for more details.
|
|
|
|
|
*
|
|
|
|
|
* show_variable(mysql, var_charset_connection, var_value);
|
|
|
|
|
* ok(var_value.compare(db_charset_value) == 0, "Connection character set same as database charset. Actual %s", var_value.c_str()); // ok_
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
show_variable(mysql, var_charset_results, var_value);
|
|
|
|
|
ok(var_value.compare("latin1") == 0, "Results character set is changed. Actual %s", var_value.c_str()); // ok_8
|
|
|
|
|
ok(var_value.compare("latin1") == 0, "Results character set is changed. Actual %s", var_value.c_str()); // ok_7
|
|
|
|
|
|
|
|
|
|
if (mysql_query(mysql, "set names latin1")) {
|
|
|
|
|
fprintf(stderr, "SET NAMES : Error: %s\n",
|
|
|
|
|
@ -144,16 +142,16 @@ int main(int argc, char** argv) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
show_variable(mysql, var_charset_client, var_value);
|
|
|
|
|
ok(var_value.compare("latin1") == 0, "Client character set is correct. Actual %s", var_value.c_str()); // ok_9
|
|
|
|
|
ok(var_value.compare("latin1") == 0, "Client character set is correct. Actual %s", var_value.c_str()); // ok_8
|
|
|
|
|
|
|
|
|
|
show_variable(mysql, var_charset_connection, var_value);
|
|
|
|
|
ok(var_value.compare("latin1") == 0, "Set names changed connection character set. Actual %s", var_value.c_str()); // ok_10
|
|
|
|
|
ok(var_value.compare("latin1") == 0, "Set names changed connection character set. Actual %s", var_value.c_str()); // ok_9
|
|
|
|
|
|
|
|
|
|
show_variable(mysql, var_charset_results, var_value);
|
|
|
|
|
ok(var_value.compare("latin1") == 0, "Results character set is correct. Actual %s", var_value.c_str()); // ok_11
|
|
|
|
|
ok(var_value.compare("latin1") == 0, "Results character set is correct. Actual %s", var_value.c_str()); // ok_10
|
|
|
|
|
|
|
|
|
|
show_variable(mysql, var_charset_database, var_value);
|
|
|
|
|
ok(var_value.compare("utf8") == 0, "Database character set is not changed by set names. Actual %s", var_value.c_str()); // ok_12
|
|
|
|
|
ok(var_value.compare("utf8") == 0, "Database character set is not changed by set names. Actual %s", var_value.c_str()); // ok_11
|
|
|
|
|
|
|
|
|
|
mysql_close(mysql);
|
|
|
|
|
|
|
|
|
|
|