diff --git a/mysql-test/suite/galera/r/galera_var_wsrep_provider_options.result b/mysql-test/suite/galera/r/galera_var_wsrep_provider_options.result new file mode 100644 index 00000000000..5ef4a23fd90 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_var_wsrep_provider_options.result @@ -0,0 +1,10 @@ +connection node_2; +connection node_1; +call mtr.add_suppression("WSREP: Unknown parameter 'a'"); +call mtr.add_suppression("WSREP: Set options returned 7"); +SET GLOBAL wsrep_provider_options=NULL; +ERROR HY000: Incorrect arguments to SET +SET GLOBAL wsrep_provider_options=''; +SET GLOBAL wsrep_provider_options=' '; +SET GLOBAL wsrep_provider_options='a=1'; +ERROR HY000: Incorrect arguments to SET diff --git a/mysql-test/suite/galera/t/galera_var_wsrep_provider_options.test b/mysql-test/suite/galera/t/galera_var_wsrep_provider_options.test new file mode 100644 index 00000000000..3dc2cbaa7d6 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_var_wsrep_provider_options.test @@ -0,0 +1,11 @@ +--source include/galera_cluster.inc + +call mtr.add_suppression("WSREP: Unknown parameter 'a'"); +call mtr.add_suppression("WSREP: Set options returned 7"); + +--error ER_WRONG_ARGUMENTS +SET GLOBAL wsrep_provider_options=NULL; +SET GLOBAL wsrep_provider_options=''; +SET GLOBAL wsrep_provider_options=' '; +--error ER_WRONG_ARGUMENTS +SET GLOBAL wsrep_provider_options='a=1'; diff --git a/sql/wsrep_var.cc b/sql/wsrep_var.cc index dea388d30de..df37a3b015c 100644 --- a/sql/wsrep_var.cc +++ b/sql/wsrep_var.cc @@ -457,15 +457,21 @@ bool wsrep_provider_options_check(sys_var *self, THD* thd, set_var* var) bool wsrep_provider_options_update(sys_var *self, THD* thd, enum_var_type type) { - enum wsrep::provider::status ret= - Wsrep_server_state::instance().provider().options(wsrep_provider_options); - if (ret) + if (wsrep_provider_options) { - WSREP_ERROR("Set options returned %d", ret); - refresh_provider_options(); - return true; + enum wsrep::provider::status ret= + Wsrep_server_state::instance().provider().options(wsrep_provider_options); + if (ret) + { + WSREP_ERROR("Set options returned %d", ret); + goto err; + } + + return refresh_provider_options(); } - return refresh_provider_options(); +err: + refresh_provider_options(); + return true; } void wsrep_provider_options_init(const char* value)