mariadb/mysql-test/suite/galera/t/galera_var_dirty_reads.test
SachinSetiya 7ed5563bbe MDEV-11016 wsrep_node_is_ready() check is too strict
Problem:-
  The condition that checks for node readiness is too strict as it does
  not allow SELECTs even if these selects do not access any tables.
  For example,if we run
       SELECT 1;
  OR
       SELECT @@max_allowed_packet;
  Solution:-
  We need not to report this error when all_tables(lex->query_tables)
  is NULL:
2016-10-28 23:15:48 +05:30

61 lines
1.4 KiB
Text

#
# Check the handling of @@wsrep_dirty_reads
#
--source include/galera_cluster.inc
--source include/have_innodb.inc
# Save original auto_increment_offset values.
--let $node_1=node_1
--let $node_2=node_2
--source include/auto_increment_offset_save.inc
--connection node_2
--let $wsrep_cluster_address_saved = `SELECT @@global.wsrep_cluster_address`
CREATE TABLE t1(i INT) ENGINE=INNODB;
INSERT INTO t1 VALUES(1);
SELECT * FROM t1;
SET @@global.wsrep_cluster_address = '';
SET @@session.wsrep_dirty_reads=OFF;
# Set wsrep_sync_wait to avoid ER_LOCK_WAIT_TIMEOUT (MDEV-6832).
SET SESSION wsrep_sync_wait=0;
# Must return 'OFF'
SHOW STATUS LIKE 'wsrep_ready';
# Must return 'Non-primary'
SHOW STATUS LIKE 'wsrep_cluster_status';
--error ER_UNKNOWN_COM_ERROR
SELECT * FROM t1;
SET @@session.wsrep_dirty_reads=ON;
SELECT * FROM t1;
#Select query which does not access table should be allowed MDEV-11016
SET @@session.wsrep_dirty_reads=OFF;
SELECT 2;
SELECT @@max_allowed_packet;
SELECT 2+2 from DUAL;
SELECT sysdate() from DUAL;
--disable_query_log
--eval SET @@global.wsrep_cluster_address = '$wsrep_cluster_address_saved'
--enable_query_log
--source include/wait_until_connected_again.inc
--connection node_1
SELECT * FROM t1;
# Cleanup
DROP TABLE t1;
# Restore original auto_increment_offset values.
--source include/auto_increment_offset_restore.inc
--source include/galera_end.inc
--echo # End of test