diff options
author | Sachin Setiya <sachinsetia1001@gmail.com> | 2016-12-27 12:43:01 +0530 |
---|---|---|
committer | Sachin Setiya <sachinsetia1001@gmail.com> | 2016-12-27 12:43:01 +0530 |
commit | 4b2207e34aa09e9d74e7f9b6701ae62add30c6ab (patch) | |
tree | 982585d2c32d03a9c880c85b11e40ac1549ec31c | |
parent | 545c9126963b26a093d5c8b6225cc52e360892e0 (diff) | |
download | mariadb-git-bb-mdev-11016.tar.gz |
Mdev-11016 wsrep_node_is_ready() check is too strict , version-2bb-mdev-11016
Problem:- Problem:- Previous commit of Mdev-11016 was causing galera-MW-284 test to
fail
Solution:- Added server_command_flags[COM_REGISTER_SLAVE]= CF_SKIP_WSREP_CHECK.
So that COM_REGISTER_SLAVE should not fail when node is not ready.
-rw-r--r-- | mysql-test/suite/galera/r/MW-284.result | 2 | ||||
-rw-r--r-- | mysql-test/suite/galera/r/galera_var_dirty_reads.result | 9 | ||||
-rw-r--r-- | mysql-test/suite/galera/t/MW-284.test | 3 | ||||
-rw-r--r-- | mysql-test/suite/galera/t/galera_var_dirty_reads.test | 5 | ||||
-rw-r--r-- | sql/sql_parse.cc | 5 |
5 files changed, 23 insertions, 1 deletions
diff --git a/mysql-test/suite/galera/r/MW-284.result b/mysql-test/suite/galera/r/MW-284.result index 3ff131674ea..f8ced56fd06 100644 --- a/mysql-test/suite/galera/r/MW-284.result +++ b/mysql-test/suite/galera/r/MW-284.result @@ -2,12 +2,14 @@ CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; SET GLOBAL wsrep_provider_options='gmcast.isolate=1'; SET SESSION wsrep_on = OFF; SET SESSION wsrep_on = ON; +SET global wsrep_sync_wait=0; START SLAVE; include/wait_for_slave_param.inc [Slave_IO_Running] SET GLOBAL wsrep_provider_options='gmcast.isolate=0'; include/wait_for_slave_to_start.inc INSERT INTO t1 VALUES (1); DROP TABLE t1; +SET global wsrep_sync_wait=7;; STOP SLAVE; RESET SLAVE ALL; CALL mtr.add_suppression('failed registering on master'); diff --git a/mysql-test/suite/galera/r/galera_var_dirty_reads.result b/mysql-test/suite/galera/r/galera_var_dirty_reads.result index 8a3175912c7..52729395b19 100644 --- a/mysql-test/suite/galera/r/galera_var_dirty_reads.result +++ b/mysql-test/suite/galera/r/galera_var_dirty_reads.result @@ -18,6 +18,15 @@ Variable_name Value wsrep_cluster_status non-Primary SELECT * FROM t1; ERROR 08S01: WSREP has not yet prepared node for application use +SELECT @@wsrep_dirty_reads; +@@wsrep_dirty_reads +0 +SELECT 2; +2 +2 +SELECT 2+2 FROM DUAL; +2+2 +4 SET @@session.wsrep_dirty_reads=ON; SELECT * FROM t1; i diff --git a/mysql-test/suite/galera/t/MW-284.test b/mysql-test/suite/galera/t/MW-284.test index f3ce1b0dc91..1e0371b43da 100644 --- a/mysql-test/suite/galera/t/MW-284.test +++ b/mysql-test/suite/galera/t/MW-284.test @@ -11,12 +11,14 @@ --enable_query_log --connection node_1 +--let $wsrep_sync_wait_state= `SELECT @@wsrep_sync_wait;` CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; SET GLOBAL wsrep_provider_options='gmcast.isolate=1'; SET SESSION wsrep_on = OFF; --let $wait_condition = SELECT VARIABLE_VALUE = 'non-Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status' --source include/wait_condition.inc SET SESSION wsrep_on = ON; +SET global wsrep_sync_wait=0; --connection node_3 START SLAVE; @@ -47,6 +49,7 @@ INSERT INTO t1 VALUES (1); --connection node_1 DROP TABLE t1; +--eval SET global wsrep_sync_wait=$wsrep_sync_wait_state; --connection node_3 --let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1' --source include/wait_condition.inc diff --git a/mysql-test/suite/galera/t/galera_var_dirty_reads.test b/mysql-test/suite/galera/t/galera_var_dirty_reads.test index bcdb1574a3d..1fd30c69a7b 100644 --- a/mysql-test/suite/galera/t/galera_var_dirty_reads.test +++ b/mysql-test/suite/galera/t/galera_var_dirty_reads.test @@ -37,6 +37,11 @@ SHOW STATUS LIKE 'wsrep_cluster_status'; --error ER_UNKNOWN_COM_ERROR SELECT * FROM t1; +#Select query which does not access table should be allowed MDEV-11016 +SELECT @@wsrep_dirty_reads; +SELECT 2; +SELECT 2+2 FROM DUAL; + SET @@session.wsrep_dirty_reads=ON; SELECT * FROM t1; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index b214a1759be..5717c3dd6c4 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -288,6 +288,7 @@ void init_update_queries(void) server_command_flags[COM_STMT_RESET]= CF_SKIP_QUESTIONS | CF_SKIP_WSREP_CHECK; server_command_flags[COM_STMT_EXECUTE]= CF_SKIP_WSREP_CHECK; server_command_flags[COM_STMT_SEND_LONG_DATA]= CF_SKIP_WSREP_CHECK; + server_command_flags[COM_REGISTER_SLAVE]= CF_SKIP_WSREP_CHECK; /* Initialize the sql command flags array. */ memset(sql_command_flags, 0, sizeof(sql_command_flags)); @@ -2651,7 +2652,7 @@ mysql_execute_command(THD *thd) /* Bail out if DB snapshot has not been installed. SET and SHOW commands, however, are always allowed. - + Select query is also allowed if it does not access any table. We additionally allow all other commands that do not change data in case wsrep_dirty_reads is enabled. */ @@ -2659,6 +2660,8 @@ mysql_execute_command(THD *thd) !wsrep_is_show_query(lex->sql_command) && !(thd->variables.wsrep_dirty_reads && !is_update_query(lex->sql_command)) && + !(lex->sql_command == SQLCOM_SELECT && + !all_tables) && !wsrep_node_is_ready(thd)) goto error; } |