summaryrefslogtreecommitdiff
path: root/mysql-test/suite
diff options
context:
space:
mode:
authorAlexander Nozdrin <alik@sun.com>2010-02-15 14:16:49 +0300
committerAlexander Nozdrin <alik@sun.com>2010-02-15 14:16:49 +0300
commita8ef1bafb10be68dac7111d7a71b2483c2dbd78d (patch)
tree2c79edc43ff38be4c2de71e4fee4285523f5c08c /mysql-test/suite
parentd5a498abc668763053d46c83e61827f78a4bad0d (diff)
parentcd437325bbfac833a14ece01a9772f49ad6c6fee (diff)
downloadmariadb-git-a8ef1bafb10be68dac7111d7a71b2483c2dbd78d.tar.gz
Manual merge from mysql-next-mr.
Conflicts: - sql/log_event.cc - sql/sql_class.h
Diffstat (limited to 'mysql-test/suite')
-rw-r--r--mysql-test/suite/binlog/r/binlog_format_switch_in_tmp_table.result78
-rw-r--r--mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result44
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result16
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result27
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_user_variables.result157
-rw-r--r--mysql-test/suite/binlog/t/binlog_format_switch_in_tmp_table.test76
-rw-r--r--mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test32
-rw-r--r--mysql-test/suite/binlog/t/binlog_stm_user_variables.test87
-rw-r--r--mysql-test/suite/parts/r/partition_innodb_status_file.result14
-rw-r--r--mysql-test/suite/parts/t/partition_innodb_status_file-master.opt1
-rw-r--r--mysql-test/suite/parts/t/partition_innodb_status_file.test20
-rw-r--r--mysql-test/suite/perfschema/r/aggregate.result13
-rw-r--r--mysql-test/suite/perfschema/r/dml_mutex_instances.result2
-rw-r--r--mysql-test/suite/perfschema/r/dml_rwlock_instances.result2
-rw-r--r--mysql-test/suite/perfschema/r/dml_setup_instruments.result3
-rw-r--r--mysql-test/suite/perfschema/t/aggregate.test16
-rw-r--r--mysql-test/suite/perfschema/t/dml_mutex_instances.test2
-rw-r--r--mysql-test/suite/perfschema/t/dml_rwlock_instances.test2
-rw-r--r--mysql-test/suite/perfschema/t/dml_setup_instruments.test3
-rw-r--r--mysql-test/suite/rpl/r/rpl_do_grant.result10
-rw-r--r--mysql-test/suite/rpl/r/rpl_ip_mix.result102
-rw-r--r--mysql-test/suite/rpl/r/rpl_ip_mix2.result118
-rw-r--r--mysql-test/suite/rpl/r/rpl_ip_mix2_win.result84
-rw-r--r--mysql-test/suite/rpl/r/rpl_ip_mix_win.result84
-rw-r--r--mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6.result10
-rw-r--r--mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6_win.result35
-rw-r--r--mysql-test/suite/rpl/r/rpl_ipv6.result96
-rw-r--r--mysql-test/suite/rpl/r/rpl_ipv6_win.result80
-rw-r--r--mysql-test/suite/rpl/r/rpl_semi_sync.result31
-rw-r--r--mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result44
-rw-r--r--mysql-test/suite/rpl/r/rpl_slave_skip.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_user_variables.result208
-rw-r--r--mysql-test/suite/rpl/t/rpl_do_grant.test18
-rw-r--r--mysql-test/suite/rpl/t/rpl_heartbeat_basic.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_ip_mix.test36
-rw-r--r--mysql-test/suite/rpl/t/rpl_ip_mix2.test40
-rw-r--r--mysql-test/suite/rpl/t/rpl_ip_mix2_win.cnf56
-rw-r--r--mysql-test/suite/rpl/t/rpl_ip_mix2_win.test78
-rw-r--r--mysql-test/suite/rpl/t/rpl_ip_mix_win.cnf56
-rw-r--r--mysql-test/suite/rpl/t/rpl_ip_mix_win.test65
-rw-r--r--mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6.test23
-rw-r--r--mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.cnf56
-rw-r--r--mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.test63
-rw-r--r--mysql-test/suite/rpl/t/rpl_ipv6.test34
-rw-r--r--mysql-test/suite/rpl/t/rpl_ipv6_win.cnf56
-rw-r--r--mysql-test/suite/rpl/t/rpl_ipv6_win.test65
-rw-r--r--mysql-test/suite/rpl/t/rpl_semi_sync.test33
-rw-r--r--mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test18
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_user_variables.test141
-rw-r--r--mysql-test/suite/rpl/t/rpl_sync.test14
-rw-r--r--mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test1
-rw-r--r--mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result8
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_basic.result92
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_adaptive_hash_index_basic.result92
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_change_buffering_basic.result63
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_file_format_basic.result59
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result59
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_io_capacity_basic.result69
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_old_blocks_pct_basic.result82
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_old_blocks_time_basic.result56
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_read_ahead_threshold_basic.result73
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_read_io_threads_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_replication_delay_basic.result56
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_spin_wait_delay_basic.result56
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_stats_on_metadata_basic.result92
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_stats_sample_pages_basic.result56
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_strict_mode_basic.result120
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_thread_sleep_delay_basic.result120
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_use_sys_malloc_basic.result25
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_version_basic.result17
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_write_io_threads_basic.result21
-rw-r--r--mysql-test/suite/sys_vars/r/last_insert_id_basic.result20
-rw-r--r--mysql-test/suite/sys_vars/r/lc_messages_basic.result8
-rw-r--r--mysql-test/suite/sys_vars/r/log_slow_queries_basic.result20
-rw-r--r--mysql-test/suite/sys_vars/r/lower_case_file_system_basic.result25
-rw-r--r--mysql-test/suite/sys_vars/r/lower_case_table_names_basic.result25
-rw-r--r--mysql-test/suite/sys_vars/r/max_join_size_basic.result14
-rw-r--r--mysql-test/suite/sys_vars/r/old_alter_table_basic.result14
-rw-r--r--mysql-test/suite/sys_vars/r/optimizer_switch_basic.result16
-rw-r--r--mysql-test/suite/sys_vars/r/profiling_basic.result34
-rw-r--r--mysql-test/suite/sys_vars/r/profiling_history_size_basic.result14
-rw-r--r--mysql-test/suite/sys_vars/r/pseudo_thread_id_basic.result23
-rw-r--r--mysql-test/suite/sys_vars/r/rand_seed1_basic.result5
-rw-r--r--mysql-test/suite/sys_vars/r/rand_seed2_basic.result5
-rw-r--r--mysql-test/suite/sys_vars/r/relay_log_recovery_basic.result12
-rw-r--r--mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result73
-rw-r--r--mysql-test/suite/sys_vars/r/rpl_semi_sync_master_timeout_basic.result54
-rw-r--r--mysql-test/suite/sys_vars/r/rpl_semi_sync_master_trace_level_basic.result72
-rw-r--r--mysql-test/suite/sys_vars/r/rpl_semi_sync_master_wait_no_slave_basic.result73
-rw-r--r--mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_enabled_basic.result73
-rw-r--r--mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_trace_level_basic.result72
-rw-r--r--mysql-test/suite/sys_vars/r/sql_log_update_basic.result40
-rw-r--r--mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result18
-rw-r--r--mysql-test/suite/sys_vars/r/sql_select_limit_basic.result14
-rw-r--r--mysql-test/suite/sys_vars/r/thread_cache_size_basic.result6
-rw-r--r--mysql-test/suite/sys_vars/t/all_vars-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/all_vars.test28
-rw-r--r--mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test4
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_basic.test70
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_adaptive_hash_index_basic.test70
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_change_buffering_basic.test59
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_file_format_basic.test55
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test55
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_io_capacity_basic.test58
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_old_blocks_pct_basic.test63
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_old_blocks_time_basic.test52
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_read_ahead_threshold_basic.test60
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_read_io_threads_basic.test26
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_replication_delay_basic.test52
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_spin_wait_delay_basic.test52
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_stats_on_metadata_basic.test70
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_stats_sample_pages_basic.test52
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_strict_mode_basic.test84
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_thread_sleep_delay_basic.test52
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_use_sys_malloc_basic.test28
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_version_basic.test28
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_write_io_threads_basic.test26
-rw-r--r--mysql-test/suite/sys_vars/t/last_insert_id_basic.test14
-rw-r--r--mysql-test/suite/sys_vars/t/lc_messages_basic.test9
-rw-r--r--mysql-test/suite/sys_vars/t/log_slow_queries_basic.test18
-rw-r--r--mysql-test/suite/sys_vars/t/lower_case_file_system_basic.test24
-rw-r--r--mysql-test/suite/sys_vars/t/lower_case_table_names_basic.test25
-rw-r--r--mysql-test/suite/sys_vars/t/max_join_size_basic.test14
-rw-r--r--mysql-test/suite/sys_vars/t/old_alter_table_basic.test11
-rw-r--r--mysql-test/suite/sys_vars/t/optimizer_switch_basic.test13
-rw-r--r--mysql-test/suite/sys_vars/t/profiling_basic.test19
-rw-r--r--mysql-test/suite/sys_vars/t/profiling_history_size_basic.test11
-rw-r--r--mysql-test/suite/sys_vars/t/pseudo_thread_id_basic.test24
-rw-r--r--mysql-test/suite/sys_vars/t/rand_seed1_basic.test6
-rw-r--r--mysql-test/suite/sys_vars/t/rand_seed2_basic.test7
-rw-r--r--mysql-test/suite/sys_vars/t/relay_log_recovery_basic.test10
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic.test64
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic.test54
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic.test62
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic.test64
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic.test65
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic-master.opt1
-rw-r--r--mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic.test62
-rw-r--r--mysql-test/suite/sys_vars/t/sql_log_update_basic.test20
-rw-r--r--mysql-test/suite/sys_vars/t/sql_max_join_size_basic.test11
-rw-r--r--mysql-test/suite/sys_vars/t/sql_select_limit_basic.test11
-rw-r--r--mysql-test/suite/sys_vars/t/thread_cache_size_basic.test6
147 files changed, 4516 insertions, 1482 deletions
diff --git a/mysql-test/suite/binlog/r/binlog_format_switch_in_tmp_table.result b/mysql-test/suite/binlog/r/binlog_format_switch_in_tmp_table.result
new file mode 100644
index 00000000000..f886ccb134d
--- /dev/null
+++ b/mysql-test/suite/binlog/r/binlog_format_switch_in_tmp_table.result
@@ -0,0 +1,78 @@
+SELECT @@SESSION.binlog_format;
+@@SESSION.binlog_format
+MIXED
+CREATE TABLE t1 (a VARCHAR(100));
+CREATE TEMPORARY TABLE t2 (a VARCHAR(100));
+# Test allow switching @@SESSION.binlog_format from MIXED to STATEMENT
+# when there are open temp tables and we are logging in statement based format.
+SET SESSION binlog_format = STATEMENT;
+SELECT @@SESSION.binlog_format;
+@@SESSION.binlog_format
+STATEMENT
+# Test allow switching @@SESSION.binlog_format from STATEMENT to
+# STATEMENT when there are open temp tables.
+SET SESSION binlog_format = STATEMENT;
+SELECT @@SESSION.binlog_format;
+@@SESSION.binlog_format
+STATEMENT
+INSERT INTO t1 VALUES ('statement based');
+SELECT @@SESSION.binlog_format;
+@@SESSION.binlog_format
+STATEMENT
+# Test allow switching @@SESSION.binlog_format from STATEMENT to
+# MIXED when there are open temp tables.
+SET SESSION binlog_format = MIXED;
+SELECT @@SESSION.binlog_format;
+@@SESSION.binlog_format
+MIXED
+# Test allow switching @@SESSION.binlog_format from MIXED to MIXED
+# when there are open temp tables.
+SET SESSION binlog_format = MIXED;
+SELECT @@SESSION.binlog_format;
+@@SESSION.binlog_format
+MIXED
+INSERT INTO t2 VALUES (UUID());
+SELECT @@SESSION.binlog_format;
+@@SESSION.binlog_format
+MIXED
+# Test forbit switching @@SESSION.binlog_format from MIXED to STATEMENT
+# when there are open temp tables and we are logging in row based format.
+SET SESSION binlog_format = STATEMENT;
+ERROR HY000: Cannot switch out of the row-based binary log format when the session has open temporary tables
+SELECT @@SESSION.binlog_format;
+@@SESSION.binlog_format
+MIXED
+SET SESSION binlog_format = ROW;
+SELECT @@SESSION.binlog_format;
+@@SESSION.binlog_format
+ROW
+INSERT INTO t1 VALUES ('row based');
+# Test allow switching @@SESSION.binlog_format from ROW to MIXED
+# when there are open temp tables.
+SET SESSION binlog_format = MIXED;
+SELECT @@SESSION.binlog_format;
+@@SESSION.binlog_format
+MIXED
+INSERT INTO t1 VALUES ('row based');
+# Test allow switching @@SESSION.binlog_format from MIXED to ROW
+# when there are open temp tables.
+SET SESSION binlog_format = ROW;
+SELECT @@SESSION.binlog_format;
+@@SESSION.binlog_format
+ROW
+# Test allow switching @@SESSION.binlog_format from ROW to ROW
+# when there are open temp tables.
+SET SESSION binlog_format = ROW;
+SELECT @@SESSION.binlog_format;
+@@SESSION.binlog_format
+ROW
+INSERT INTO t1 VALUES ('row based');
+# Test forbit switching @@SESSION.binlog_format from ROW to STATEMENT
+# when there are open temp tables.
+SET SESSION binlog_format = STATEMENT;
+ERROR HY000: Cannot switch out of the row-based binary log format when the session has open temporary tables
+SELECT @@SESSION.binlog_format;
+@@SESSION.binlog_format
+ROW
+DROP TEMPORARY TABLE t2;
+DROP TABLE t1;
diff --git a/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result b/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result
index b01c4b49ee2..a4db4d65b07 100644
--- a/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result
+++ b/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result
@@ -745,8 +745,9 @@ ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Intvar # # INSERT_ID=3
-master-bin.000001 # Query # # use `test`; insert into t2 values (bug27417(2))
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 3 */;
count(*)
@@ -762,8 +763,9 @@ count(*)
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Intvar # # INSERT_ID=4
-master-bin.000001 # Query # # use `test`; delete from t2 where a=bug27417(3)
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 5 */;
count(*)
@@ -785,6 +787,10 @@ insert into t2 values (bug27417(1));
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 1 */;
count(*)
1
@@ -796,6 +802,10 @@ insert into t2 select bug27417(1) union select bug27417(2);
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 2 */;
count(*)
2
@@ -807,8 +817,11 @@ ERROR 23000: Duplicate entry '4' for key 'b'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Intvar # # INSERT_ID=4
-master-bin.000001 # Query # # use `test`; update t3 set b=b+bug27417(1)
+master-bin.000001 # Table_map # # table_id: # (test.t3)
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 2 */;
count(*)
@@ -822,6 +835,10 @@ UPDATE t4,t3 SET t4.a=t3.a + bug27417(1) /* top level non-ta table */;
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 4 */;
count(*)
4
@@ -835,7 +852,7 @@ UPDATE t3,t4 SET t3.a=t4.a + bug27417(1);
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
select count(*) from t1 /* must be 1 */;
count(*)
-1
+2
drop table t4;
delete from t1;
delete from t2;
@@ -849,6 +866,11 @@ delete from t2;
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t3)
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 1 */;
count(*)
1
@@ -865,6 +887,10 @@ delete t2.* from t2,t5 where t2.a=t5.a + 1;
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 1 */;
count(*)
1
@@ -882,6 +908,10 @@ count(*)
2
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
drop trigger trg_del_t2;
drop table t1,t2,t3,t4,t5;
drop function bug27417;
diff --git a/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result b/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result
index 3d71a778caf..fab65bfb973 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result
@@ -520,10 +520,10 @@ end|
reset master;
insert into t2 values (bug27417(1));
Warnings:
-Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement invokes a trigger or a stored function that inserts into AUTO_INCREMENT column which is unsafe to binlog in STATEMENT format because slave may execute it non-deterministically.
insert into t2 select bug27417(2);
Warnings:
-Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement invokes a trigger or a stored function that inserts into AUTO_INCREMENT column which is unsafe to binlog in STATEMENT format because slave may execute it non-deterministically.
reset master;
insert into t2 values (bug27417(2));
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
@@ -543,7 +543,7 @@ count(*)
2
delete from t2 where a=bug27417(3);
Warnings:
-Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement invokes a trigger or a stored function that inserts into AUTO_INCREMENT column which is unsafe to binlog in STATEMENT format because slave may execute it non-deterministically.
select count(*) from t2 /* nothing got deleted */;
count(*)
2
@@ -560,7 +560,7 @@ count(*)
delete t2 from t2 where t2.a=bug27417(100) /* must not affect t2 */;
affected rows: 0
Warnings:
-Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement invokes a trigger or a stored function that inserts into AUTO_INCREMENT column which is unsafe to binlog in STATEMENT format because slave may execute it non-deterministically.
select count(*) from t1 /* must be 7 */;
count(*)
7
@@ -784,10 +784,10 @@ end|
reset master;
insert into t2 values (bug27417(1));
Warnings:
-Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement invokes a trigger or a stored function that inserts into AUTO_INCREMENT column which is unsafe to binlog in STATEMENT format because slave may execute it non-deterministically.
insert into t2 select bug27417(2);
Warnings:
-Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement invokes a trigger or a stored function that inserts into AUTO_INCREMENT column which is unsafe to binlog in STATEMENT format because slave may execute it non-deterministically.
reset master;
insert into t2 values (bug27417(2));
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
@@ -806,7 +806,7 @@ count(*)
2
delete from t2 where a=bug27417(3);
Warnings:
-Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement invokes a trigger or a stored function that inserts into AUTO_INCREMENT column which is unsafe to binlog in STATEMENT format because slave may execute it non-deterministically.
select count(*) from t2 /* nothing got deleted */;
count(*)
2
@@ -822,7 +822,7 @@ count(*)
delete t2 from t2 where t2.a=bug27417(100) /* must not affect t2 */;
affected rows: 0
Warnings:
-Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement invokes a trigger or a stored function that inserts into AUTO_INCREMENT column which is unsafe to binlog in STATEMENT format because slave may execute it non-deterministically.
select count(*) from t1 /* must be 7 */;
count(*)
7
diff --git a/mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result b/mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result
index c2445aa1d1a..e8fd7b82bc4 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result
@@ -1,5 +1,6 @@
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted. .*");
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave. .*");
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement invokes a trigger or a stored function that inserts into AUTO_INCREMENT column");
### NOT filtered database => assertion: warnings ARE shown
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a int, b int, primary key (a));
@@ -50,3 +51,29 @@ SET GLOBAL log_warnings = @old_log_warnings;
# Count the number of times the "Unsafe" message was printed
# to the error log.
Occurrences: 1
+DROP TABLE IF EXISTS t1, t2;
+CREATE TABLE t1 (a int);
+CREATE TABLE t2 (a int auto_increment primary key, b int);
+CREATE TRIGGER tr_bug50192 AFTER INSERT ON t1 FOR EACH ROW INSERT INTO t2 (b) VALUES (1);
+CREATE FUNCTION sf_bug50192() RETURNS INTEGER
+BEGIN
+INSERT INTO t2(b) VALUES(2);
+RETURN 1;
+END |
+INSERT INTO t1 VALUES (0);
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement invokes a trigger or a stored function that inserts into AUTO_INCREMENT column which is unsafe to binlog in STATEMENT format because slave may execute it non-deterministically.
+SHOW WARNINGS;
+Level Code Message
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement invokes a trigger or a stored function that inserts into AUTO_INCREMENT column which is unsafe to binlog in STATEMENT format because slave may execute it non-deterministically.
+SELECT sf_bug50192();
+sf_bug50192()
+1
+Warnings:
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement invokes a trigger or a stored function that inserts into AUTO_INCREMENT column which is unsafe to binlog in STATEMENT format because slave may execute it non-deterministically.
+SHOW WARNINGS;
+Level Code Message
+Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement invokes a trigger or a stored function that inserts into AUTO_INCREMENT column which is unsafe to binlog in STATEMENT format because slave may execute it non-deterministically.
+DROP FUNCTION sf_bug50192;
+DROP TRIGGER tr_bug50192;
+DROP TABLE t1, t2;
diff --git a/mysql-test/suite/binlog/r/binlog_stm_user_variables.result b/mysql-test/suite/binlog/r/binlog_stm_user_variables.result
new file mode 100644
index 00000000000..92a74f63ad9
--- /dev/null
+++ b/mysql-test/suite/binlog/r/binlog_stm_user_variables.result
@@ -0,0 +1,157 @@
+RESET MASTER;
+SET @positive= 18446744073709551615;
+SET @negative= -9223372036854775808;
+CREATE TABLE t1 (`tinyint` TINYINT,
+`smallint` SMALLINT,
+`mediumint` MEDIUMINT,
+`integer` INTEGER,
+`bigint` BIGINT,
+`utinyint` TINYINT UNSIGNED,
+`usmallint` SMALLINT UNSIGNED,
+`umediumint` MEDIUMINT UNSIGNED,
+`uinteger` INTEGER UNSIGNED,
+`ubigint` BIGINT UNSIGNED,
+`double` DOUBLE,
+`float` FLOAT,
+`real` REAL(30,2),
+`decimal` DECIMAL(30,2)) ENGINE = MyISAM;
+### insert max unsigned
+### a) declarative
+INSERT INTO t1 VALUES (18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615,18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615);;
+TRUNCATE t1;
+### b) user var
+INSERT INTO t1 VALUES (@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive);
+## assertion: checks that User_var_log_event::pack_info
+## correctly displays the binlog content by taking into
+## account the unsigned_flag
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (`tinyint` TINYINT,
+`smallint` SMALLINT,
+`mediumint` MEDIUMINT,
+`integer` INTEGER,
+`bigint` BIGINT,
+`utinyint` TINYINT UNSIGNED,
+`usmallint` SMALLINT UNSIGNED,
+`umediumint` MEDIUMINT UNSIGNED,
+`uinteger` INTEGER UNSIGNED,
+`ubigint` BIGINT UNSIGNED,
+`double` DOUBLE,
+`float` FLOAT,
+`real` REAL(30,2),
+`decimal` DECIMAL(30,2)) ENGINE = MyISAM
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615,18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; TRUNCATE t1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # User var # # @`positive`=18446744073709551615
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive)
+master-bin.000001 # Query # # COMMIT
+### insert min signed
+### a) declarative
+INSERT INTO t1 VALUES (-9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808,-9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808);;
+TRUNCATE t1;
+### b) user var
+INSERT INTO t1 VALUES (@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative);
+## assertion: checks that User_var_log_event::pack_info
+## correctly displays the binlog content by taking into
+## account the unsigned_flag
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (`tinyint` TINYINT,
+`smallint` SMALLINT,
+`mediumint` MEDIUMINT,
+`integer` INTEGER,
+`bigint` BIGINT,
+`utinyint` TINYINT UNSIGNED,
+`usmallint` SMALLINT UNSIGNED,
+`umediumint` MEDIUMINT UNSIGNED,
+`uinteger` INTEGER UNSIGNED,
+`ubigint` BIGINT UNSIGNED,
+`double` DOUBLE,
+`float` FLOAT,
+`real` REAL(30,2),
+`decimal` DECIMAL(30,2)) ENGINE = MyISAM
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615,18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; TRUNCATE t1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # User var # # @`positive`=18446744073709551615
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (-9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808,-9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808)
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; TRUNCATE t1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # User var # # @`negative`=-9223372036854775808
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative)
+master-bin.000001 # Query # # COMMIT
+DROP TABLE t1;
diff --git a/mysql-test/suite/binlog/t/binlog_format_switch_in_tmp_table.test b/mysql-test/suite/binlog/t/binlog_format_switch_in_tmp_table.test
new file mode 100644
index 00000000000..6868506008c
--- /dev/null
+++ b/mysql-test/suite/binlog/t/binlog_format_switch_in_tmp_table.test
@@ -0,0 +1,76 @@
+#
+# Bug #45855 row events in binlog after switch from binlog_fmt=mix to stmt with open tmp tbl
+# Bug #45856 can't switch from binlog_format=row to mix with open tmp tbl
+# This test verfies if the program will generate ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR
+# error and forbid switching @@SESSION.binlog_format from MIXED or ROW to
+# STATEMENT when there are open temp tables and we are logging in row format.
+# There is no error in any other case.
+#
+
+source include/have_binlog_format_mixed.inc;
+
+SELECT @@SESSION.binlog_format;
+CREATE TABLE t1 (a VARCHAR(100));
+CREATE TEMPORARY TABLE t2 (a VARCHAR(100));
+
+--echo # Test allow switching @@SESSION.binlog_format from MIXED to STATEMENT
+--echo # when there are open temp tables and we are logging in statement based format.
+SET SESSION binlog_format = STATEMENT;
+SELECT @@SESSION.binlog_format;
+
+--echo # Test allow switching @@SESSION.binlog_format from STATEMENT to
+--echo # STATEMENT when there are open temp tables.
+SET SESSION binlog_format = STATEMENT;
+SELECT @@SESSION.binlog_format;
+
+INSERT INTO t1 VALUES ('statement based');
+SELECT @@SESSION.binlog_format;
+--echo # Test allow switching @@SESSION.binlog_format from STATEMENT to
+--echo # MIXED when there are open temp tables.
+SET SESSION binlog_format = MIXED;
+SELECT @@SESSION.binlog_format;
+
+--echo # Test allow switching @@SESSION.binlog_format from MIXED to MIXED
+--echo # when there are open temp tables.
+SET SESSION binlog_format = MIXED;
+SELECT @@SESSION.binlog_format;
+
+INSERT INTO t2 VALUES (UUID());
+SELECT @@SESSION.binlog_format;
+
+--echo # Test forbit switching @@SESSION.binlog_format from MIXED to STATEMENT
+--echo # when there are open temp tables and we are logging in row based format.
+--ERROR ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR
+SET SESSION binlog_format = STATEMENT;
+SELECT @@SESSION.binlog_format;
+
+SET SESSION binlog_format = ROW;
+SELECT @@SESSION.binlog_format;
+
+INSERT INTO t1 VALUES ('row based');
+--echo # Test allow switching @@SESSION.binlog_format from ROW to MIXED
+--echo # when there are open temp tables.
+SET SESSION binlog_format = MIXED;
+SELECT @@SESSION.binlog_format;
+
+INSERT INTO t1 VALUES ('row based');
+--echo # Test allow switching @@SESSION.binlog_format from MIXED to ROW
+--echo # when there are open temp tables.
+SET SESSION binlog_format = ROW;
+SELECT @@SESSION.binlog_format;
+
+--echo # Test allow switching @@SESSION.binlog_format from ROW to ROW
+--echo # when there are open temp tables.
+SET SESSION binlog_format = ROW;
+SELECT @@SESSION.binlog_format;
+
+INSERT INTO t1 VALUES ('row based');
+--echo # Test forbit switching @@SESSION.binlog_format from ROW to STATEMENT
+--echo # when there are open temp tables.
+--ERROR ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR
+SET SESSION binlog_format = STATEMENT;
+SELECT @@SESSION.binlog_format;
+
+DROP TEMPORARY TABLE t2;
+DROP TABLE t1;
+
diff --git a/mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test b/mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test
index 35235ce951a..874bb015a07 100644
--- a/mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test
+++ b/mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test
@@ -27,6 +27,7 @@
-- source include/have_binlog_format_statement.inc
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted. .*");
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave. .*");
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement invokes a trigger or a stored function that inserts into AUTO_INCREMENT column");
-- echo ### NOT filtered database => assertion: warnings ARE shown
@@ -117,3 +118,34 @@ perl;
print "Occurrences: $count\n";
close(FILE);
EOF
+
+# bug#50192: diplaying the unsafe warning comes out to the user warning stack
+
+-- disable_warnings
+DROP TABLE IF EXISTS t1, t2;
+-- enable_warnings
+
+CREATE TABLE t1 (a int);
+CREATE TABLE t2 (a int auto_increment primary key, b int);
+CREATE TRIGGER tr_bug50192 AFTER INSERT ON t1 FOR EACH ROW INSERT INTO t2 (b) VALUES (1);
+
+DELIMITER |;
+
+CREATE FUNCTION sf_bug50192() RETURNS INTEGER
+BEGIN
+ INSERT INTO t2(b) VALUES(2);
+ RETURN 1;
+END |
+
+DELIMITER ;|
+
+INSERT INTO t1 VALUES (0);
+SHOW WARNINGS;
+SELECT sf_bug50192();
+SHOW WARNINGS;
+
+# cleanup
+
+DROP FUNCTION sf_bug50192;
+DROP TRIGGER tr_bug50192;
+DROP TABLE t1, t2;
diff --git a/mysql-test/suite/binlog/t/binlog_stm_user_variables.test b/mysql-test/suite/binlog/t/binlog_stm_user_variables.test
new file mode 100644
index 00000000000..4bed6db6269
--- /dev/null
+++ b/mysql-test/suite/binlog/t/binlog_stm_user_variables.test
@@ -0,0 +1,87 @@
+-- source include/have_binlog_format_statement.inc
+RESET MASTER;
+#
+# BUG#49562: SBR out of sync when using numeric data types + user variable
+#
+
+-- let $max_unsigned_long= 18446744073709551615
+-- let $min_signed_long= -9223372036854775808
+-- eval SET @positive= $max_unsigned_long
+-- eval SET @negative= $min_signed_long
+
+CREATE TABLE t1 (`tinyint` TINYINT,
+ `smallint` SMALLINT,
+ `mediumint` MEDIUMINT,
+ `integer` INTEGER,
+ `bigint` BIGINT,
+ `utinyint` TINYINT UNSIGNED,
+ `usmallint` SMALLINT UNSIGNED,
+ `umediumint` MEDIUMINT UNSIGNED,
+ `uinteger` INTEGER UNSIGNED,
+ `ubigint` BIGINT UNSIGNED,
+ `double` DOUBLE,
+ `float` FLOAT,
+ `real` REAL(30,2),
+ `decimal` DECIMAL(30,2)) ENGINE = MyISAM;
+
+-- echo ### insert max unsigned
+-- echo ### a) declarative
+-- disable_warnings
+-- eval INSERT INTO t1 VALUES ($max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long,$max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long);
+-- enable_warnings
+TRUNCATE t1;
+
+-- echo ### b) user var
+-- disable_warnings
+INSERT INTO t1 VALUES (@positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive);
+-- enable_warnings
+
+-- echo ## assertion: checks that User_var_log_event::pack_info
+-- echo ## correctly displays the binlog content by taking into
+-- echo ## account the unsigned_flag
+-- source include/show_binlog_events.inc
+
+-- echo ### insert min signed
+-- echo ### a) declarative
+-- disable_warnings
+-- eval INSERT INTO t1 VALUES ($min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long,$min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long);
+-- enable_warnings
+TRUNCATE t1;
+
+-- echo ### b) user var
+-- disable_warnings
+INSERT INTO t1 VALUES (@negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative);
+-- enable_warnings
+
+-- echo ## assertion: checks that User_var_log_event::pack_info
+-- echo ## correctly displays the binlog content by taking into
+-- echo ## account the unsigned_flag
+-- source include/show_binlog_events.inc
+
+DROP TABLE t1;
diff --git a/mysql-test/suite/parts/r/partition_innodb_status_file.result b/mysql-test/suite/parts/r/partition_innodb_status_file.result
new file mode 100644
index 00000000000..29b5a3b3766
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_innodb_status_file.result
@@ -0,0 +1,14 @@
+CREATE TABLE t1 (a INT) ENGINE = InnoDB PARTITION BY HASH(a);
+INSERT INTO t1 VALUES (0), (1), (2);
+START TRANSACTION;
+UPDATE t1 SET a = 5 WHERE a = 1;
+# Connection con1
+# InnoDB lock timeout and monitor thread runs every 15 seconds
+SET innodb_lock_wait_timeout = 20;
+START TRANSACTION;
+UPDATE t1 SET a = 3 WHERE a = 1;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+COMMIT;
+# Connection default
+COMMIT;
+DROP TABLE t1;
diff --git a/mysql-test/suite/parts/t/partition_innodb_status_file-master.opt b/mysql-test/suite/parts/t/partition_innodb_status_file-master.opt
new file mode 100644
index 00000000000..779962e8fca
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_innodb_status_file-master.opt
@@ -0,0 +1 @@
+--innodb-status-file=1
diff --git a/mysql-test/suite/parts/t/partition_innodb_status_file.test b/mysql-test/suite/parts/t/partition_innodb_status_file.test
new file mode 100644
index 00000000000..f066ce5d485
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_innodb_status_file.test
@@ -0,0 +1,20 @@
+--source include/have_innodb.inc
+--source include/have_partition.inc
+
+CREATE TABLE t1 (a INT) ENGINE = InnoDB PARTITION BY HASH(a);
+INSERT INTO t1 VALUES (0), (1), (2);
+START TRANSACTION;
+UPDATE t1 SET a = 5 WHERE a = 1;
+connect (con1, localhost, root,,);
+--echo # Connection con1
+--echo # InnoDB lock timeout and monitor thread runs every 15 seconds
+SET innodb_lock_wait_timeout = 20;
+START TRANSACTION;
+--error ER_LOCK_WAIT_TIMEOUT
+UPDATE t1 SET a = 3 WHERE a = 1;
+COMMIT;
+disconnect con1;
+connection default;
+--echo # Connection default
+COMMIT;
+DROP TABLE t1;
diff --git a/mysql-test/suite/perfschema/r/aggregate.result b/mysql-test/suite/perfschema/r/aggregate.result
index 598f9297cc5..197378ca38f 100644
--- a/mysql-test/suite/perfschema/r/aggregate.result
+++ b/mysql-test/suite/perfschema/r/aggregate.result
@@ -16,6 +16,7 @@ b CHAR(100) DEFAULT 'initial value')
ENGINE=MyISAM;
insert into t1 (id) values (1), (2), (3), (4), (5), (6), (7), (8);
update performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO';
+update performance_schema.SETUP_CONSUMERS set enabled = 'NO';
set @dump_all=FALSE;
"Verifying file aggregate consistency"
SELECT EVENT_NAME, e.COUNT_READ, SUM(i.COUNT_READ)
@@ -51,14 +52,14 @@ SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(i.SUM_TIMER_WAIT)
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
GROUP BY EVENT_NAME
-HAVING (e.SUM_TIMER_WAIT <> SUM(i.SUM_TIMER_WAIT))
+HAVING (e.SUM_TIMER_WAIT < SUM(i.SUM_TIMER_WAIT))
OR @dump_all;
EVENT_NAME SUM_TIMER_WAIT SUM(i.SUM_TIMER_WAIT)
SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(i.MIN_TIMER_WAIT)
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
GROUP BY EVENT_NAME
-HAVING (e.MIN_TIMER_WAIT <> MIN(i.MIN_TIMER_WAIT))
+HAVING (e.MIN_TIMER_WAIT > MIN(i.MIN_TIMER_WAIT))
AND (MIN(i.MIN_TIMER_WAIT) != 0)
OR @dump_all;
EVENT_NAME MIN_TIMER_WAIT MIN(i.MIN_TIMER_WAIT)
@@ -66,7 +67,7 @@ SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(i.MAX_TIMER_WAIT)
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
GROUP BY EVENT_NAME
-HAVING (e.MAX_TIMER_WAIT <> MAX(i.MAX_TIMER_WAIT))
+HAVING (e.MAX_TIMER_WAIT < MAX(i.MAX_TIMER_WAIT))
OR @dump_all;
EVENT_NAME MAX_TIMER_WAIT MAX(i.MAX_TIMER_WAIT)
"Verifying waits aggregate consistency (thread)"
@@ -75,7 +76,7 @@ FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
USING (EVENT_NAME)
GROUP BY EVENT_NAME
-HAVING (e.SUM_TIMER_WAIT <> SUM(t.SUM_TIMER_WAIT))
+HAVING (e.SUM_TIMER_WAIT < SUM(t.SUM_TIMER_WAIT))
OR @dump_all;
EVENT_NAME SUM_TIMER_WAIT SUM(t.SUM_TIMER_WAIT)
SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(t.MIN_TIMER_WAIT)
@@ -83,7 +84,7 @@ FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
USING (EVENT_NAME)
GROUP BY EVENT_NAME
-HAVING (e.MIN_TIMER_WAIT <> MIN(t.MIN_TIMER_WAIT))
+HAVING (e.MIN_TIMER_WAIT > MIN(t.MIN_TIMER_WAIT))
AND (MIN(t.MIN_TIMER_WAIT) != 0)
OR @dump_all;
EVENT_NAME MIN_TIMER_WAIT MIN(t.MIN_TIMER_WAIT)
@@ -92,7 +93,7 @@ FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
USING (EVENT_NAME)
GROUP BY EVENT_NAME
-HAVING (e.MAX_TIMER_WAIT <> MAX(t.MAX_TIMER_WAIT))
+HAVING (e.MAX_TIMER_WAIT < MAX(t.MAX_TIMER_WAIT))
OR @dump_all;
EVENT_NAME MAX_TIMER_WAIT MAX(t.MAX_TIMER_WAIT)
update performance_schema.SETUP_CONSUMERS set enabled = 'YES';
diff --git a/mysql-test/suite/perfschema/r/dml_mutex_instances.result b/mysql-test/suite/perfschema/r/dml_mutex_instances.result
index 655ca811c06..862123b3450 100644
--- a/mysql-test/suite/perfschema/r/dml_mutex_instances.result
+++ b/mysql-test/suite/perfschema/r/dml_mutex_instances.result
@@ -1,6 +1,6 @@
select * from performance_schema.MUTEX_INSTANCES limit 1;
NAME OBJECT_INSTANCE_BEGIN LOCKED_BY_THREAD_ID
-# # NULL
+# # #
select * from performance_schema.MUTEX_INSTANCES
where name='FOO';
NAME OBJECT_INSTANCE_BEGIN LOCKED_BY_THREAD_ID
diff --git a/mysql-test/suite/perfschema/r/dml_rwlock_instances.result b/mysql-test/suite/perfschema/r/dml_rwlock_instances.result
index 62b5fbeaa8a..686007e58e9 100644
--- a/mysql-test/suite/perfschema/r/dml_rwlock_instances.result
+++ b/mysql-test/suite/perfschema/r/dml_rwlock_instances.result
@@ -1,6 +1,6 @@
select * from performance_schema.RWLOCK_INSTANCES limit 1;
NAME OBJECT_INSTANCE_BEGIN WRITE_LOCKED_BY_THREAD_ID READ_LOCKED_BY_COUNT
-# # NULL 0
+# # # #
select * from performance_schema.RWLOCK_INSTANCES
where name='FOO';
NAME OBJECT_INSTANCE_BEGIN WRITE_LOCKED_BY_THREAD_ID READ_LOCKED_BY_COUNT
diff --git a/mysql-test/suite/perfschema/r/dml_setup_instruments.result b/mysql-test/suite/perfschema/r/dml_setup_instruments.result
index 6d6651a5e1f..be7d8825364 100644
--- a/mysql-test/suite/perfschema/r/dml_setup_instruments.result
+++ b/mysql-test/suite/perfschema/r/dml_setup_instruments.result
@@ -16,7 +16,8 @@ wait/synch/mutex/sql/LOCK_delayed_create YES YES
wait/synch/mutex/sql/LOCK_delayed_insert YES YES
select * from performance_schema.SETUP_INSTRUMENTS
where name like 'Wait/Synch/Rwlock/sql/%'
- order by name limit 10;
+ and name not in ('wait/synch/rwlock/sql/CRYPTO_dynlock_value::lock')
+order by name limit 10;
NAME ENABLED TIMED
wait/synch/rwlock/sql/LOCK_dboptions YES YES
wait/synch/rwlock/sql/LOCK_grant YES YES
diff --git a/mysql-test/suite/perfschema/t/aggregate.test b/mysql-test/suite/perfschema/t/aggregate.test
index 7c01bdd0a4b..0fa4651ecda 100644
--- a/mysql-test/suite/perfschema/t/aggregate.test
+++ b/mysql-test/suite/perfschema/t/aggregate.test
@@ -1,4 +1,4 @@
-# Copyright (C) 2009 Sun Microsystems, Inc
+# Copyright (C) 2009-2010 Sun Microsystems, Inc
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -50,6 +50,8 @@ insert into t1 (id) values (1), (2), (3), (4), (5), (6), (7), (8);
# Stop recording data, so the select below don't add noise.
update performance_schema.SETUP_INSTRUMENTS SET enabled = 'NO';
+# Disable all consumers, for long standing waits
+update performance_schema.SETUP_CONSUMERS set enabled = 'NO';
# Helper to debug
set @dump_all=FALSE;
@@ -132,14 +134,14 @@ SELECT EVENT_NAME, e.SUM_TIMER_WAIT, SUM(i.SUM_TIMER_WAIT)
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
GROUP BY EVENT_NAME
-HAVING (e.SUM_TIMER_WAIT <> SUM(i.SUM_TIMER_WAIT))
+HAVING (e.SUM_TIMER_WAIT < SUM(i.SUM_TIMER_WAIT))
OR @dump_all;
SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(i.MIN_TIMER_WAIT)
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
GROUP BY EVENT_NAME
-HAVING (e.MIN_TIMER_WAIT <> MIN(i.MIN_TIMER_WAIT))
+HAVING (e.MIN_TIMER_WAIT > MIN(i.MIN_TIMER_WAIT))
AND (MIN(i.MIN_TIMER_WAIT) != 0)
OR @dump_all;
@@ -147,7 +149,7 @@ SELECT EVENT_NAME, e.MAX_TIMER_WAIT, MAX(i.MAX_TIMER_WAIT)
FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE AS i USING (EVENT_NAME)
GROUP BY EVENT_NAME
-HAVING (e.MAX_TIMER_WAIT <> MAX(i.MAX_TIMER_WAIT))
+HAVING (e.MAX_TIMER_WAIT < MAX(i.MAX_TIMER_WAIT))
OR @dump_all;
--echo "Verifying waits aggregate consistency (thread)"
@@ -157,7 +159,7 @@ FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
USING (EVENT_NAME)
GROUP BY EVENT_NAME
-HAVING (e.SUM_TIMER_WAIT <> SUM(t.SUM_TIMER_WAIT))
+HAVING (e.SUM_TIMER_WAIT < SUM(t.SUM_TIMER_WAIT))
OR @dump_all;
SELECT EVENT_NAME, e.MIN_TIMER_WAIT, MIN(t.MIN_TIMER_WAIT)
@@ -165,7 +167,7 @@ FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
USING (EVENT_NAME)
GROUP BY EVENT_NAME
-HAVING (e.MIN_TIMER_WAIT <> MIN(t.MIN_TIMER_WAIT))
+HAVING (e.MIN_TIMER_WAIT > MIN(t.MIN_TIMER_WAIT))
AND (MIN(t.MIN_TIMER_WAIT) != 0)
OR @dump_all;
@@ -174,7 +176,7 @@ FROM performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME AS e
JOIN performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME AS t
USING (EVENT_NAME)
GROUP BY EVENT_NAME
-HAVING (e.MAX_TIMER_WAIT <> MAX(t.MAX_TIMER_WAIT))
+HAVING (e.MAX_TIMER_WAIT < MAX(t.MAX_TIMER_WAIT))
OR @dump_all;
diff --git a/mysql-test/suite/perfschema/t/dml_mutex_instances.test b/mysql-test/suite/perfschema/t/dml_mutex_instances.test
index e3062c7b34c..0971c664eb8 100644
--- a/mysql-test/suite/perfschema/t/dml_mutex_instances.test
+++ b/mysql-test/suite/perfschema/t/dml_mutex_instances.test
@@ -18,7 +18,7 @@
--source include/not_embedded.inc
--source include/have_perfschema.inc
---replace_column 1 # 2 #
+--replace_column 1 # 2 # 3 #
select * from performance_schema.MUTEX_INSTANCES limit 1;
select * from performance_schema.MUTEX_INSTANCES
diff --git a/mysql-test/suite/perfschema/t/dml_rwlock_instances.test b/mysql-test/suite/perfschema/t/dml_rwlock_instances.test
index 251168237eb..33a42450681 100644
--- a/mysql-test/suite/perfschema/t/dml_rwlock_instances.test
+++ b/mysql-test/suite/perfschema/t/dml_rwlock_instances.test
@@ -18,7 +18,7 @@
--source include/not_embedded.inc
--source include/have_perfschema.inc
---replace_column 1 # 2 #
+--replace_column 1 # 2 # 3 # 4 #
select * from performance_schema.RWLOCK_INSTANCES limit 1;
select * from performance_schema.RWLOCK_INSTANCES
diff --git a/mysql-test/suite/perfschema/t/dml_setup_instruments.test b/mysql-test/suite/perfschema/t/dml_setup_instruments.test
index f737160cebd..b82cde15fb5 100644
--- a/mysql-test/suite/perfschema/t/dml_setup_instruments.test
+++ b/mysql-test/suite/perfschema/t/dml_setup_instruments.test
@@ -36,8 +36,11 @@ select * from performance_schema.SETUP_INSTRUMENTS
and name not in ('wait/synch/mutex/sql/DEBUG_SYNC::mutex')
order by name limit 10;
+# CRYPTO_dynlock_value::lock is dependent on the build (SSL)
+
select * from performance_schema.SETUP_INSTRUMENTS
where name like 'Wait/Synch/Rwlock/sql/%'
+ and name not in ('wait/synch/rwlock/sql/CRYPTO_dynlock_value::lock')
order by name limit 10;
# COND_handler_count is dependent on the build (Windows only)
diff --git a/mysql-test/suite/rpl/r/rpl_do_grant.result b/mysql-test/suite/rpl/r/rpl_do_grant.result
index 65c60acc651..9eecc1bab3f 100644
--- a/mysql-test/suite/rpl/r/rpl_do_grant.result
+++ b/mysql-test/suite/rpl/r/rpl_do_grant.result
@@ -89,6 +89,7 @@ show grants for rpl_do_grant2@localhost;
ERROR 42000: There is no such grant defined for user 'rpl_do_grant2' on host 'localhost'
show grants for rpl_do_grant2@localhost;
ERROR 42000: There is no such grant defined for user 'rpl_do_grant2' on host 'localhost'
+call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
DROP DATABASE IF EXISTS bug42217_db;
CREATE DATABASE bug42217_db;
GRANT CREATE ROUTINE ON bug42217_db.* TO 'create_rout_db'@'localhost'
@@ -166,9 +167,12 @@ DROP FUNCTION upgrade_del_func;
DROP FUNCTION upgrade_alter_func;
DROP DATABASE bug42217_db;
DROP USER 'create_rout_db'@'localhost';
-call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
-USE mtr;
-call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
######## BUG#49119 #######
### i) test case from the 'how to repeat section'
stop slave;
diff --git a/mysql-test/suite/rpl/r/rpl_ip_mix.result b/mysql-test/suite/rpl/r/rpl_ip_mix.result
index 11aa5a46cfa..ddd7a008a97 100644
--- a/mysql-test/suite/rpl/r/rpl_ip_mix.result
+++ b/mysql-test/suite/rpl/r/rpl_ip_mix.result
@@ -46,102 +46,6 @@ Master-Host: 0:0:0:0:0:0:0:1
disconnect slave;
disconnect master;
connection default;
-#################### IP: 127.0.0.1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 0:0:0:0:0:0:0:1
-change master to master_host='127.0.0.1';
-Master-Host: 127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0:0:0:0:0:FFFF:127.0.0.1 ###########################
-connect (master,0:0:0:0:0:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 127.0.0.1
-change master to master_host='0:0:0:0:0:FFFF:127.0.0.1';
-Master-Host: 0:0:0:0:0:FFFF:127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0000:0000:0000:0000:0000:FFFF:127.0.0.1 ###########################
-connect (master,0000:0000:0000:0000:0000:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 0:0:0:0:0:FFFF:127.0.0.1
-change master to master_host='0000:0000:0000:0000:0000:FFFF:127.0.0.1';
-Master-Host: 0000:0000:0000:0000:0000:FFFF:127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0:0000:0000:0:0000:FFFF:127.0.0.1 ###########################
-connect (master,0:0000:0000:0:0000:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 0000:0000:0000:0000:0000:FFFF:127.0.0.1
-change master to master_host='0:0000:0000:0:0000:FFFF:127.0.0.1';
-Master-Host: 0:0000:0000:0:0000:FFFF:127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0::0000:FFFF:127.0.0.1 ###########################
-connect (master,0::0000:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 0:0000:0000:0:0000:FFFF:127.0.0.1
-change master to master_host='0::0000:FFFF:127.0.0.1';
-Master-Host: 0::0000:FFFF:127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: ::FFFF:127.0.0.1 ###########################
-connect (master,::FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 0::0000:FFFF:127.0.0.1
-change master to master_host='::FFFF:127.0.0.1';
-Master-Host: ::FFFF:127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
#################### IP: ::1 mix #######################
connect (master,::1,root,,test,MASTER_MYPORT);
connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
@@ -152,11 +56,11 @@ File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
connection slave;
reset slave;
-Master-Host: ::FFFF:127.0.0.1
+Master-Host: 0:0:0:0:0:0:0:1
change master to master_host='::1';
Master-Host: ::1
-change master to master_host='::FFFF:127.0.0.1';
-Master-Host: ::FFFF:127.0.0.1
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
change master to master_host='0:0:0:0:0:0:0:1';
Master-Host: 0:0:0:0:0:0:0:1
disconnect slave;
diff --git a/mysql-test/suite/rpl/r/rpl_ip_mix2.result b/mysql-test/suite/rpl/r/rpl_ip_mix2.result
index e5cc3e1621d..e1011bf85ee 100644
--- a/mysql-test/suite/rpl/r/rpl_ip_mix2.result
+++ b/mysql-test/suite/rpl/r/rpl_ip_mix2.result
@@ -14,22 +14,6 @@ Master-Host: ::1
disconnect slave;
disconnect master;
connection default;
-#################### IP: ::1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,::1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: ::1
-change master to master_host='::1';
-Master-Host: ::1
-disconnect slave;
-disconnect master;
-connection default;
#################### IP: 0000:0000:0000:0000:0000:0000:0000:0001 ###########################
connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
connect (slave,0000:0000:0000:0000:0000:0000:0000:0001,root,,test,SLAVE_MYPORT);
@@ -62,102 +46,6 @@ Master-Host: 0:0:0:0:0:0:0:1
disconnect slave;
disconnect master;
connection default;
-#################### IP: 127.0.0.1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 0:0:0:0:0:0:0:1
-change master to master_host='127.0.0.1';
-Master-Host: 127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0:0:0:0:0:FFFF:127.0.0.1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,0:0:0:0:0:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 127.0.0.1
-change master to master_host='0:0:0:0:0:FFFF:127.0.0.1';
-Master-Host: 0:0:0:0:0:FFFF:127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0000:0000:0000:0000:0000:FFFF:127.0.0.1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,0000:0000:0000:0000:0000:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 0:0:0:0:0:FFFF:127.0.0.1
-change master to master_host='0000:0000:0000:0000:0000:FFFF:127.0.0.1';
-Master-Host: 0000:0000:0000:0000:0000:FFFF:127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0:0000:0000:0:0000:FFFF:127.0.0.1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,0:0000:0000:0:0000:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 0000:0000:0000:0000:0000:FFFF:127.0.0.1
-change master to master_host='0:0000:0000:0:0000:FFFF:127.0.0.1';
-Master-Host: 0:0000:0000:0:0000:FFFF:127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0::0000:FFFF:127.0.0.1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,0::0000:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 0:0000:0000:0:0000:FFFF:127.0.0.1
-change master to master_host='0::0000:FFFF:127.0.0.1';
-Master-Host: 0::0000:FFFF:127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: ::FFFF:127.0.0.1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,::FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 0::0000:FFFF:127.0.0.1
-change master to master_host='::FFFF:127.0.0.1';
-Master-Host: ::FFFF:127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
#################### IP: ::1 mix #######################
connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
connect (slave,::1,root,,test,SLAVE_MYPORT);
@@ -168,11 +56,11 @@ File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
connection slave;
reset slave;
-Master-Host: ::FFFF:127.0.0.1
+Master-Host: 0:0:0:0:0:0:0:1
change master to master_host='::1';
Master-Host: ::1
-change master to master_host='::FFFF:127.0.0.1';
-Master-Host: ::FFFF:127.0.0.1
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
change master to master_host='0:0:0:0:0:0:0:1';
Master-Host: 0:0:0:0:0:0:0:1
disconnect slave;
diff --git a/mysql-test/suite/rpl/r/rpl_ip_mix2_win.result b/mysql-test/suite/rpl/r/rpl_ip_mix2_win.result
deleted file mode 100644
index c7cec70ed6c..00000000000
--- a/mysql-test/suite/rpl/r/rpl_ip_mix2_win.result
+++ /dev/null
@@ -1,84 +0,0 @@
-#################### IP: ::1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,::1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: No such row
-change master to master_host='::1';
-Master-Host: ::1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0000:0000:0000:0000:0000:0000:0000:0001 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,0000:0000:0000:0000:0000:0000:0000:0001,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: ::1
-change master to master_host='0000:0000:0000:0000:0000:0000:0000:0001';
-Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0:0:0:0:0:0:0:1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,0:0:0:0:0:0:0:1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001
-change master to master_host='0:0:0:0:0:0:0:1';
-Master-Host: 0:0:0:0:0:0:0:1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 127.0.0.1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 0:0:0:0:0:0:0:1
-change master to master_host='127.0.0.1';
-Master-Host: 127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: ::1 mix #######################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,::1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 127.0.0.1
-change master to master_host='::1';
-Master-Host: ::1
-change master to master_host='127.0.0.1';
-Master-Host: 127.0.0.1
-change master to master_host='0:0:0:0:0:0:0:1';
-Master-Host: 0:0:0:0:0:0:0:1
-disconnect slave;
-disconnect master;
-connection default;
diff --git a/mysql-test/suite/rpl/r/rpl_ip_mix_win.result b/mysql-test/suite/rpl/r/rpl_ip_mix_win.result
deleted file mode 100644
index a1d11e109e5..00000000000
--- a/mysql-test/suite/rpl/r/rpl_ip_mix_win.result
+++ /dev/null
@@ -1,84 +0,0 @@
-#################### IP: ::1 ###########################
-connect (master,::1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: No such row
-change master to master_host='::1';
-Master-Host: ::1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0000:0000:0000:0000:0000:0000:0000:0001 ###########################
-connect (master,0000:0000:0000:0000:0000:0000:0000:0001,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: ::1
-change master to master_host='0000:0000:0000:0000:0000:0000:0000:0001';
-Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0:0:0:0:0:0:0:1 ###########################
-connect (master,0:0:0:0:0:0:0:1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001
-change master to master_host='0:0:0:0:0:0:0:1';
-Master-Host: 0:0:0:0:0:0:0:1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 127.0.0.1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 0:0:0:0:0:0:0:1
-change master to master_host='127.0.0.1';
-Master-Host: 127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: ::1 mix #######################
-connect (master,::1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 127.0.0.1
-change master to master_host='::1';
-Master-Host: ::1
-change master to master_host='127.0.0.1';
-Master-Host: 127.0.0.1
-change master to master_host='0:0:0:0:0:0:0:1';
-Master-Host: 0:0:0:0:0:0:0:1
-disconnect slave;
-disconnect master;
-connection default;
diff --git a/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6.result b/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6.result
index 4168cff1e97..0393cfa483c 100644
--- a/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6.result
+++ b/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6.result
@@ -88,7 +88,7 @@ Master-Host: ::FFFF:127.0.0.1
disconnect slave;
disconnect master;
connection default;
-#################### IP: ::1 ###########################
+#################### IP: ::FFFF:127.0.0.1 ###########################
connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
connection master;
@@ -99,12 +99,12 @@ master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
connection slave;
reset slave;
Master-Host: ::FFFF:127.0.0.1
-change master to master_host='::1';
-Master-Host: ::1
change master to master_host='::FFFF:127.0.0.1';
Master-Host: ::FFFF:127.0.0.1
-change master to master_host='0:0:0:0:0:0:0:1';
-Master-Host: 0:0:0:0:0:0:0:1
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
+change master to master_host='0:0000:0000:0:0000:FFFF:127.0.0.1';
+Master-Host: 0:0000:0000:0:0000:FFFF:127.0.0.1
disconnect slave;
disconnect master;
connection default;
diff --git a/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6_win.result b/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6_win.result
deleted file mode 100644
index a1e48ea6610..00000000000
--- a/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6_win.result
+++ /dev/null
@@ -1,35 +0,0 @@
-#################### IP: 127.0.0.1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-change master to master_host='127.0.0.1';
-Master-Host: 127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: ::1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 127.0.0.1
-change master to master_host='::1';
-Master-Host: ::1
-change master to master_host='127.0.0.1';
-Master-Host: 127.0.0.1
-change master to master_host='0:0:0:0:0:0:0:1';
-Master-Host: 0:0:0:0:0:0:0:1
-disconnect slave;
-disconnect master;
-connection default;
diff --git a/mysql-test/suite/rpl/r/rpl_ipv6.result b/mysql-test/suite/rpl/r/rpl_ipv6.result
index f46e60548a6..6ae946d197b 100644
--- a/mysql-test/suite/rpl/r/rpl_ipv6.result
+++ b/mysql-test/suite/rpl/r/rpl_ipv6.result
@@ -43,96 +43,6 @@ Master-Host: 0:0:0:0:0:0:0:1
disconnect slave;
disconnect master;
connection default;
-#################### IP: 127.0.0.1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-change master to master_host='127.0.0.1';
-Master-Host: 127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0:0:0:0:0:FFFF:127.0.0.1 ###########################
-connect (master,0:0:0:0:0:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,0:0:0:0:0:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-change master to master_host='0:0:0:0:0:FFFF:127.0.0.1';
-Master-Host: 0:0:0:0:0:FFFF:127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0000:0000:0000:0000:0000:FFFF:127.0.0.1 ###########################
-connect (master,0000:0000:0000:0000:0000:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,0000:0000:0000:0000:0000:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-change master to master_host='0000:0000:0000:0000:0000:FFFF:127.0.0.1';
-Master-Host: 0000:0000:0000:0000:0000:FFFF:127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0:0000:0000:0:0000:FFFF:127.0.0.1 ###########################
-connect (master,0:0000:0000:0:0000:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,0:0000:0000:0:0000:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-change master to master_host='0:0000:0000:0:0000:FFFF:127.0.0.1';
-Master-Host: 0:0000:0000:0:0000:FFFF:127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0::0000:FFFF:127.0.0.1 ###########################
-connect (master,0::0000:FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,0::0000:FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-change master to master_host='0::0000:FFFF:127.0.0.1';
-Master-Host: 0::0000:FFFF:127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: ::FFFF:127.0.0.1 ###########################
-connect (master,::FFFF:127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,::FFFF:127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-change master to master_host='::FFFF:127.0.0.1';
-Master-Host: ::FFFF:127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
#################### IP: ::1 mix #######################
connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
@@ -143,11 +53,11 @@ File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
connection slave;
reset slave;
-Master-Host: ::FFFF:127.0.0.1
+Master-Host: 0:0:0:0:0:0:0:1
change master to master_host='::1';
Master-Host: ::1
-change master to master_host='::FFFF:127.0.0.1';
-Master-Host: ::FFFF:127.0.0.1
+change master to master_host='127.0.0.1';
+Master-Host: 127.0.0.1
change master to master_host='0:0:0:0:0:0:0:1';
Master-Host: 0:0:0:0:0:0:0:1
disconnect slave;
diff --git a/mysql-test/suite/rpl/r/rpl_ipv6_win.result b/mysql-test/suite/rpl/r/rpl_ipv6_win.result
deleted file mode 100644
index 79dc8422161..00000000000
--- a/mysql-test/suite/rpl/r/rpl_ipv6_win.result
+++ /dev/null
@@ -1,80 +0,0 @@
-#################### IP: ::1 ###########################
-connect (master,::1,root,,test,MASTER_MYPORT);
-connect (slave,::1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-change master to master_host='::1';
-Master-Host: ::1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0000:0000:0000:0000:0000:0000:0000:0001 ###########################
-connect (master,0000:0000:0000:0000:0000:0000:0000:0001,root,,test,MASTER_MYPORT);
-connect (slave,0000:0000:0000:0000:0000:0000:0000:0001,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-change master to master_host='0000:0000:0000:0000:0000:0000:0000:0001';
-Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 0:0:0:0:0:0:0:1 ###########################
-connect (master,0:0:0:0:0:0:0:1,root,,test,MASTER_MYPORT);
-connect (slave,0:0:0:0:0:0:0:1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-change master to master_host='0:0:0:0:0:0:0:1';
-Master-Host: 0:0:0:0:0:0:0:1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: 127.0.0.1 ###########################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-change master to master_host='127.0.0.1';
-Master-Host: 127.0.0.1
-disconnect slave;
-disconnect master;
-connection default;
-#################### IP: ::1 mix #######################
-connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connection master;
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-connection slave;
-reset slave;
-Master-Host: 127.0.0.1
-change master to master_host='::1';
-Master-Host: ::1
-change master to master_host='127.0.0.1';
-Master-Host: 127.0.0.1
-change master to master_host='0:0:0:0:0:0:0:1';
-Master-Host: 0:0:0:0:0:0:0:1
-disconnect slave;
-disconnect master;
-connection default;
diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync.result b/mysql-test/suite/rpl/r/rpl_semi_sync.result
index 1e220b28d78..74eb14d33e0 100644
--- a/mysql-test/suite/rpl/r/rpl_semi_sync.result
+++ b/mysql-test/suite/rpl/r/rpl_semi_sync.result
@@ -120,8 +120,27 @@ min(a)
select max(a) from t1;
max(a)
300
+
+# BUG#50157
+# semi-sync replication crashes when replicating a transaction which
+# include 'CREATE TEMPORARY TABLE `MyISAM_t` SELECT * FROM `Innodb_t` ;
+[ on master ]
+SET SESSION AUTOCOMMIT= 0;
+CREATE TABLE t2(c1 INT) ENGINE=innodb;
+BEGIN;
+
+# Even though it is in a transaction, this statement is binlogged into binlog
+# file immediately.
+CREATE TEMPORARY TABLE t3 SELECT c1 FROM t2 where 1=1;
+
+# These statements will not be binlogged until the transaction is committed
+INSERT INTO t2 VALUES(11);
+INSERT INTO t2 VALUES(22);
+COMMIT;
+DROP TABLE t2, t3;
+SET SESSION AUTOCOMMIT= 1;
#
-# Test semi-sync master will switch OFF after one transacton
+# Test semi-sync master will switch OFF after one transaction
# timeout waiting for slave reply.
#
include/stop_slave.inc
@@ -135,7 +154,7 @@ Variable_name Value
Rpl_semi_sync_master_no_tx 0
show status like 'Rpl_semi_sync_master_yes_tx';
Variable_name Value
-Rpl_semi_sync_master_yes_tx 301
+Rpl_semi_sync_master_yes_tx 304
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
Rpl_semi_sync_master_clients 1
@@ -150,7 +169,7 @@ Variable_name Value
Rpl_semi_sync_master_no_tx 1
show status like 'Rpl_semi_sync_master_yes_tx';
Variable_name Value
-Rpl_semi_sync_master_yes_tx 301
+Rpl_semi_sync_master_yes_tx 304
insert into t1 values (100);
[ master status should be OFF ]
show status like 'Rpl_semi_sync_master_status';
@@ -161,7 +180,7 @@ Variable_name Value
Rpl_semi_sync_master_no_tx 302
show status like 'Rpl_semi_sync_master_yes_tx';
Variable_name Value
-Rpl_semi_sync_master_yes_tx 301
+Rpl_semi_sync_master_yes_tx 304
#
# Test semi-sync status on master will be ON again when slave catches up
#
@@ -194,7 +213,7 @@ Variable_name Value
Rpl_semi_sync_master_no_tx 302
show status like 'Rpl_semi_sync_master_yes_tx';
Variable_name Value
-Rpl_semi_sync_master_yes_tx 301
+Rpl_semi_sync_master_yes_tx 304
show status like 'Rpl_semi_sync_master_clients';
Variable_name Value
Rpl_semi_sync_master_clients 1
@@ -213,7 +232,7 @@ Variable_name Value
Rpl_semi_sync_master_no_tx 302
SHOW STATUS LIKE 'Rpl_semi_sync_master_yes_tx';
Variable_name Value
-Rpl_semi_sync_master_yes_tx 302
+Rpl_semi_sync_master_yes_tx 305
FLUSH NO_WRITE_TO_BINLOG STATUS;
[ Semi-sync master status variables after FLUSH STATUS ]
SHOW STATUS LIKE 'Rpl_semi_sync_master_no_tx';
diff --git a/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result b/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result
index 880fc9e8569..85fbcb69760 100644
--- a/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result
+++ b/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result
@@ -10,47 +10,7 @@ insert into t1(b) values (1);
insert into t1(b) values (2);
load data infile '../../std_data/rpl_loaddata.dat' into table t1;
commit;
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_MYPORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 9
-Last_Error Error in Begin_load_query event: write to '../../tmp/SQL_LOAD.data' failed
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 9
-Last_SQL_Error Error in Begin_load_query event: write to '../../tmp/SQL_LOAD.data' failed
-Replicate_Ignore_Server_Ids
-Master_Server_Id 1
drop table t1;
drop table t1;
-call mtr.add_suppression("Slave: Error writing file 'UNKNOWN' .Errcode: 9. Error_code: 3");
+call mtr.add_suppression("Slave: Can't get stat of .*");
+call mtr.add_suppression("Slave: File.* not found.*");
diff --git a/mysql-test/suite/rpl/r/rpl_slave_skip.result b/mysql-test/suite/rpl/r/rpl_slave_skip.result
index 963b4d471dd..24000df40d2 100644
--- a/mysql-test/suite/rpl/r/rpl_slave_skip.result
+++ b/mysql-test/suite/rpl/r/rpl_slave_skip.result
@@ -118,7 +118,7 @@ Master_User root
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File master-bin.000001
-Read_Master_Log_Pos 386
+Read_Master_Log_Pos 387
Relay_Log_File #
Relay_Log_Pos #
Relay_Master_Log_File master-bin.000001
@@ -133,7 +133,7 @@ Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
-Exec_Master_Log_Pos 386
+Exec_Master_Log_Pos 387
Relay_Log_Space #
Until_Condition None
Until_Log_File
diff --git a/mysql-test/suite/rpl/r/rpl_stm_user_variables.result b/mysql-test/suite/rpl/r/rpl_stm_user_variables.result
new file mode 100644
index 00000000000..5e758fc02f3
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_stm_user_variables.result
@@ -0,0 +1,208 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+SET @positive= 18446744073709551615;
+SET @negative= -9223372036854775808;
+CREATE TABLE t1 (`tinyint` TINYINT,
+`smallint` SMALLINT,
+`mediumint` MEDIUMINT,
+`integer` INTEGER,
+`bigint` BIGINT,
+`utinyint` TINYINT UNSIGNED,
+`usmallint` SMALLINT UNSIGNED,
+`umediumint` MEDIUMINT UNSIGNED,
+`uinteger` INTEGER UNSIGNED,
+`ubigint` BIGINT UNSIGNED,
+`double` DOUBLE,
+`float` FLOAT,
+`real` REAL(30,2),
+`decimal` DECIMAL(30,2)) ENGINE = MyISAM;
+### insert max unsigned
+### a) declarative
+INSERT INTO t1 VALUES (18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615,18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615);;
+#########################################
+#### [ on master ]
+SELECT * FROM t1;
+tinyint 127
+smallint 32767
+mediumint 8388607
+integer 2147483647
+bigint 9223372036854775807
+utinyint 255
+usmallint 65535
+umediumint 16777215
+uinteger 4294967295
+ubigint 18446744073709551615
+double 1.8446744073709552e19
+float 1.84467e19
+real 18446744073709552000.00
+decimal 18446744073709551615.00
+#### [ on slave ]
+SELECT * FROM t1;
+tinyint 127
+smallint 32767
+mediumint 8388607
+integer 2147483647
+bigint 9223372036854775807
+utinyint 255
+usmallint 65535
+umediumint 16777215
+uinteger 4294967295
+ubigint 18446744073709551615
+double 1.8446744073709552e19
+float 1.84467e19
+real 18446744073709552000.00
+decimal 18446744073709551615.00
+#########################################
+## assertion: master and slave tables are in sync
+Comparing tables master:test.t1 and slave:test.t1
+TRUNCATE t1;
+### b) user var
+INSERT INTO t1 VALUES (@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive,
+@positive);
+#########################################
+#### [ on master ]
+SELECT * FROM t1;
+tinyint 127
+smallint 32767
+mediumint 8388607
+integer 2147483647
+bigint 9223372036854775807
+utinyint 255
+usmallint 65535
+umediumint 16777215
+uinteger 4294967295
+ubigint 18446744073709551615
+double 1.8446744073709552e19
+float 1.84467e19
+real 18446744073709552000.00
+decimal 18446744073709551615.00
+#### [ on slave ]
+SELECT * FROM t1;
+tinyint 127
+smallint 32767
+mediumint 8388607
+integer 2147483647
+bigint 9223372036854775807
+utinyint 255
+usmallint 65535
+umediumint 16777215
+uinteger 4294967295
+ubigint 18446744073709551615
+double 1.8446744073709552e19
+float 1.84467e19
+real 18446744073709552000.00
+decimal 18446744073709551615.00
+#########################################
+## assertion: master and slave tables are in sync
+Comparing tables master:test.t1 and slave:test.t1
+TRUNCATE t1;
+### insert min signed
+### a) declarative
+INSERT INTO t1 VALUES (-9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808,-9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808, -9223372036854775808);;
+#########################################
+#### [ on master ]
+SELECT * FROM t1;
+tinyint -128
+smallint -32768
+mediumint -8388608
+integer -2147483648
+bigint -9223372036854775808
+utinyint 0
+usmallint 0
+umediumint 0
+uinteger 0
+ubigint 0
+double -9.223372036854776e18
+float -9.22337e18
+real -9223372036854776000.00
+decimal -9223372036854775808.00
+#### [ on slave ]
+SELECT * FROM t1;
+tinyint -128
+smallint -32768
+mediumint -8388608
+integer -2147483648
+bigint -9223372036854775808
+utinyint 0
+usmallint 0
+umediumint 0
+uinteger 0
+ubigint 0
+double -9.223372036854776e18
+float -9.22337e18
+real -9223372036854776000.00
+decimal -9223372036854775808.00
+#########################################
+## assertion: master and slave tables are in sync
+Comparing tables master:test.t1 and slave:test.t1
+TRUNCATE t1;
+### b) user var
+INSERT INTO t1 VALUES (@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative,
+@negative);
+#########################################
+#### [ on master ]
+SELECT * FROM t1;
+tinyint -128
+smallint -32768
+mediumint -8388608
+integer -2147483648
+bigint -9223372036854775808
+utinyint 0
+usmallint 0
+umediumint 0
+uinteger 0
+ubigint 0
+double -9.223372036854776e18
+float -9.22337e18
+real -9223372036854776000.00
+decimal -9223372036854775808.00
+#### [ on slave ]
+SELECT * FROM t1;
+tinyint -128
+smallint -32768
+mediumint -8388608
+integer -2147483648
+bigint -9223372036854775808
+utinyint 0
+usmallint 0
+umediumint 0
+uinteger 0
+ubigint 0
+double -9.223372036854776e18
+float -9.22337e18
+real -9223372036854776000.00
+decimal -9223372036854775808.00
+#########################################
+## assertion: master and slave tables are in sync
+Comparing tables master:test.t1 and slave:test.t1
+TRUNCATE t1;
+## check: contents of both tables master's and slave's
+DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/t/rpl_do_grant.test b/mysql-test/suite/rpl/t/rpl_do_grant.test
index f43ac3cf340..e3d7784429e 100644
--- a/mysql-test/suite/rpl/t/rpl_do_grant.test
+++ b/mysql-test/suite/rpl/t/rpl_do_grant.test
@@ -112,6 +112,9 @@ show grants for rpl_do_grant2@localhost;
# BUG42217 mysql.procs_priv does not get replicated
#####################################################
connection master;
+call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
+sync_slave_with_master;
+connection master;
--disable_warnings
DROP DATABASE IF EXISTS bug42217_db;
@@ -201,12 +204,19 @@ USE bug42217_db;
DROP FUNCTION upgrade_del_func;
DROP FUNCTION upgrade_alter_func;
DROP DATABASE bug42217_db;
+-- sync_slave_with_master
+-- connection master
+
+# user was already dropped in the slave before
+# so no need to wait for the slave to replicate
+# this statement (if it did and we later synced
+# the slave it would end up in an error anyway)
DROP USER 'create_rout_db'@'localhost';
-call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
-connection slave;
-USE mtr;
-call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
+# finish entire clean up (remove binlogs)
+# so that we leave a pristine environment for the
+# following tests
+-- source include/master-slave-reset.inc
# BUG#49119: Master crashes when executing 'REVOKE ... ON
# {PROCEDURE|FUNCTION} FROM ...'
diff --git a/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test b/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test
index fca8646dd05..838938388db 100644
--- a/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test
+++ b/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test
@@ -382,7 +382,7 @@ let $slave_param_comparison= =;
let $rcvd_heartbeats_before= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
# Flush logs every 0.1 second during 5 sec
--disable_query_log
-let $i=50;
+let $i=100;
while ($i) {
FLUSH LOGS;
dec $i;
diff --git a/mysql-test/suite/rpl/t/rpl_ip_mix.test b/mysql-test/suite/rpl/t/rpl_ip_mix.test
index 68aa2fc87a9..0852b3f4ff7 100644
--- a/mysql-test/suite/rpl/t/rpl_ip_mix.test
+++ b/mysql-test/suite/rpl/t/rpl_ip_mix.test
@@ -7,8 +7,6 @@
# (see corresponding cnf file)
#
--source include/check_ipv6.inc
-# Can't be tested with windows due to mixed format like 0::0000:FFFF:127.0.0.1
---source include/not_windows.inc
--source include/have_log_bin.inc
let $IPv6= ::1;
@@ -27,38 +25,6 @@ let $IPv6= 0:0:0:0:0:0:0:1;
--echo #################### IP: $IPv6 ###########################
--source include/rpl_ip_mix.inc
-let $IPv6= 127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix.inc
-
-let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix.inc
-
-let $IPv6= 0000:0000:0000:0000:0000:FFFF:127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix.inc
-
-let $IPv6= 0:0000:0000:0:0000:FFFF:127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix.inc
-
-let $IPv6= 0::0000:FFFF:127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix.inc
-
-#let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1/96;
-#--echo #################### IP: $IPv6 ###########################
-#--source include/rpl_ip_mix.inc
-
-let $IPv6= ::FFFF:127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix.inc
-
-#let $IPv6= ::FFFF:127.0.0.1/96;
-#--echo #################### IP: $IPv6 ###########################
-#--source include/rpl_ip_mix.inc
-
let $IPv6= ::1;
--echo #################### IP: $IPv6 mix #######################
--echo connect (master,$IPv6,root,,test,MASTER_MYPORT);
@@ -78,7 +44,7 @@ let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
eval change master to master_host='$IPv6';
let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
--echo Master-Host: $master_host
-eval change master to master_host='::FFFF:127.0.0.1';
+eval change master to master_host='127.0.0.1';
let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
--echo Master-Host: $master_host
eval change master to master_host='0:0:0:0:0:0:0:1';
diff --git a/mysql-test/suite/rpl/t/rpl_ip_mix2.test b/mysql-test/suite/rpl/t/rpl_ip_mix2.test
index d6435d710c1..11c648dece5 100644
--- a/mysql-test/suite/rpl/t/rpl_ip_mix2.test
+++ b/mysql-test/suite/rpl/t/rpl_ip_mix2.test
@@ -19,17 +19,11 @@ disconnect checkcon123456789;
--enable_abort_on_error
--enable_query_log
# end check
-
-# Can't be tested with windows due to mixed format like 0::0000:FFFF:127.0.0.1
---source include/not_windows.inc
--source include/have_log_bin.inc
let $IPv6= ::1;
--echo #################### IP: $IPv6 ###########################
--source include/rpl_ip_mix2.inc
-let $IPv6= ::1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix2.inc
let $IPv6= ::1/128;
#--echo #################### IP: $IPv6 ###########################
@@ -43,38 +37,6 @@ let $IPv6= 0:0:0:0:0:0:0:1;
--echo #################### IP: $IPv6 ###########################
--source include/rpl_ip_mix2.inc
-let $IPv6= 127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix2.inc
-
-let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix2.inc
-
-let $IPv6= 0000:0000:0000:0000:0000:FFFF:127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix2.inc
-
-let $IPv6= 0:0000:0000:0:0000:FFFF:127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix2.inc
-
-let $IPv6= 0::0000:FFFF:127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix2.inc
-
-#let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1/96;
-#--echo #################### IP: $IPv6 ###########################
-#--source include/rpl_ip_mix2.inc
-
-let $IPv6= ::FFFF:127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix2.inc
-
-#let $IPv6= ::FFFF:127.0.0.1/96;
-#--echo #################### IP: $IPv6 ###########################
-#--source include/rpl_ip_mix2.inc
-
let $IPv6= ::1;
--echo #################### IP: $IPv6 mix #######################
--echo connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
@@ -94,7 +56,7 @@ let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
eval change master to master_host='$IPv6';
let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
--echo Master-Host: $master_host
-eval change master to master_host='::FFFF:127.0.0.1';
+eval change master to master_host='127.0.0.1';
let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
--echo Master-Host: $master_host
eval change master to master_host='0:0:0:0:0:0:0:1';
diff --git a/mysql-test/suite/rpl/t/rpl_ip_mix2_win.cnf b/mysql-test/suite/rpl/t/rpl_ip_mix2_win.cnf
deleted file mode 100644
index 306df437bcc..00000000000
--- a/mysql-test/suite/rpl/t/rpl_ip_mix2_win.cnf
+++ /dev/null
@@ -1,56 +0,0 @@
-# Use default setting for mysqld processes
-!include include/default_mysqld.cnf
-!include include/default_client.cnf
-
-[mysqld.1]
-
-# Run the master.sh script before starting this process
-#!run-master-sh
-
-log-bin= master-bin
-
-loose-innodb
-
-skip-name-resolve
-bind-address= 0.0.0.0
-
-
-[mysqld.2]
-# Run the slave.sh script before starting this process
-#!run-slave-sh
-
-# Append <testname>-slave.opt file to the list of argument used when
-# starting the mysqld
-#!use-slave-opt
-
-log-bin= slave-bin
-relay-log= slave-relay-bin
-
-init-rpl-role= slave
-log-slave-updates
-master-retry-count= 10
-
-# Values reported by slave when it connect to master
-# and shows up in SHOW SLAVE STATUS;
-report-host= localhost
-report-port= @mysqld.2.port
-report-user= root
-
-skip-slave-start
-skip-name-resolve
-bind-address= ::
-
-# Directory where slaves find the dumps generated by "load data"
-# on the server. The path need to have constant length otherwise
-# test results will vary, thus a relative path is used.
-slave-load-tmpdir= ../../tmp
-
-loose-innodb
-
-[ENV]
-MASTER_MYPORT= @mysqld.1.port
-MASTER_MYSOCK= @mysqld.1.socket
-
-SLAVE_MYPORT= @mysqld.2.port
-SLAVE_MYSOCK= @mysqld.2.socket
-
diff --git a/mysql-test/suite/rpl/t/rpl_ip_mix2_win.test b/mysql-test/suite/rpl/t/rpl_ip_mix2_win.test
deleted file mode 100644
index f9a2022ddd4..00000000000
--- a/mysql-test/suite/rpl/t/rpl_ip_mix2_win.test
+++ /dev/null
@@ -1,78 +0,0 @@
-# Copyright (C) 2009 SUN Microsystems
-# All rights reserved. Use is subject to license terms.
-# Author: Horst Hunger
-# Nov. 19, 2009
-# Test of ipv6 format, especially "change master host=..."
-# Options: --skip-name-resolve, master: --bind-address=0.0.0.0, slave: --bind-address=::
-# (see corresponding cnf file)
-#
-# Check if ipv6 is available. If not, server is crashing (see BUG#48915).
---disable_query_log
---disable_abort_on_error
-connect (checkcon123456789,::1,root,,test,$SLAVE_MYPORT);
-if($mysql_errno)
-{
-skip wrong IP for slave;
-}
-connection default;
-disconnect checkcon123456789;
---enable_abort_on_error
---enable_query_log
-# end check
-
-# For windows due to missing the mixed format like 0::0000:FFFF:127.0.0.1
---source include/windows.inc
---source include/have_log_bin.inc
-
-let $IPv6= ::1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix2.inc
-
-let $IPv6= ::1/128;
-#--echo #################### IP: $IPv6 ###########################
-#--source include/rpl_ip_mix2.inc
-
-let $IPv6= 0000:0000:0000:0000:0000:0000:0000:0001;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix2.inc
-
-let $IPv6= 0:0:0:0:0:0:0:1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix2.inc
-
-let $IPv6= 127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix2.inc
-
-let $IPv6= ::1;
---echo #################### IP: $IPv6 mix #######################
---echo connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (master,127.0.0.1,root,,test,$MASTER_MYPORT);
---echo connect (slave,$IPv6,root,,test,SLAVE_MYPORT);
-connect (slave,$IPv6,root,,test,$SLAVE_MYPORT);
---echo connection master;
-connection master;
-reset master;
-source include/show_master_status.inc;
-save_master_pos;
---echo connection slave;
-connection slave;
-reset slave;
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
-eval change master to master_host='$IPv6';
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
-eval change master to master_host='127.0.0.1';
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
-eval change master to master_host='0:0:0:0:0:0:0:1';
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
---echo disconnect slave;
-disconnect slave;
---echo disconnect master;
-disconnect master;
---echo connection default;
-connection default;
---exit
diff --git a/mysql-test/suite/rpl/t/rpl_ip_mix_win.cnf b/mysql-test/suite/rpl/t/rpl_ip_mix_win.cnf
deleted file mode 100644
index 00e2637d822..00000000000
--- a/mysql-test/suite/rpl/t/rpl_ip_mix_win.cnf
+++ /dev/null
@@ -1,56 +0,0 @@
-# Use default setting for mysqld processes
-!include include/default_mysqld.cnf
-!include include/default_client.cnf
-
-[mysqld.1]
-
-# Run the master.sh script before starting this process
-#!run-master-sh
-
-log-bin= master-bin
-
-loose-innodb
-
-skip-name-resolve
-bind-address= ::
-
-
-[mysqld.2]
-# Run the slave.sh script before starting this process
-#!run-slave-sh
-
-# Append <testname>-slave.opt file to the list of argument used when
-# starting the mysqld
-#!use-slave-opt
-
-log-bin= slave-bin
-relay-log= slave-relay-bin
-
-init-rpl-role= slave
-log-slave-updates
-master-retry-count= 10
-
-# Values reported by slave when it connect to master
-# and shows up in SHOW SLAVE STATUS;
-report-host= localhost
-report-port= @mysqld.2.port
-report-user= root
-
-skip-slave-start
-skip-name-resolve
-bind-address= 0.0.0.0
-
-# Directory where slaves find the dumps generated by "load data"
-# on the server. The path need to have constant length otherwise
-# test results will vary, thus a relative path is used.
-slave-load-tmpdir= ../../tmp
-
-loose-innodb
-
-[ENV]
-MASTER_MYPORT= @mysqld.1.port
-MASTER_MYSOCK= @mysqld.1.socket
-
-SLAVE_MYPORT= @mysqld.2.port
-SLAVE_MYSOCK= @mysqld.2.socket
-
diff --git a/mysql-test/suite/rpl/t/rpl_ip_mix_win.test b/mysql-test/suite/rpl/t/rpl_ip_mix_win.test
deleted file mode 100644
index 7d78f71bd1b..00000000000
--- a/mysql-test/suite/rpl/t/rpl_ip_mix_win.test
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright (C) 2009 SUN Microsystems
-# All rights reserved. Use is subject to license terms.
-# Author: Horst Hunger
-# Nov. 19, 2009
-# Test of ipv6 format, especially "change master host=..."
-# Options: --skip-name-resolve, master: --bind-address=::, slave: --bind-address=0.0.0.0
-# (see corresponding cnf file)
-#
---source include/check_ipv6.inc
-# For windows due to missing the mixed format like 0::0000:FFFF:127.0.0.1
---source include/windows.inc
---source include/have_log_bin.inc
-
-let $IPv6= ::1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix.inc
-
-let $IPv6= ::1/128;
-#--echo #################### IP: $IPv6 ###########################
-#--source include/rpl_ip_mix.inc
-
-let $IPv6= 0000:0000:0000:0000:0000:0000:0000:0001;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix.inc
-
-let $IPv6= 0:0:0:0:0:0:0:1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix.inc
-
-let $IPv6= 127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ip_mix.inc
-
-let $IPv6= ::1;
---echo #################### IP: $IPv6 mix #######################
---echo connect (master,$IPv6,root,,test,MASTER_MYPORT);
-connect (master,$IPv6,root,,test,$MASTER_MYPORT);
---echo connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT);
---echo connection master;
-connection master;
-reset master;
-source include/show_master_status.inc;
-save_master_pos;
---echo connection slave;
-connection slave;
-reset slave;
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
-eval change master to master_host='$IPv6';
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
-eval change master to master_host='127.0.0.1';
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
-eval change master to master_host='0:0:0:0:0:0:0:1';
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
---echo disconnect slave;
-disconnect slave;
---echo disconnect master;
-disconnect master;
---echo connection default;
-connection default;
---exit
diff --git a/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6.test b/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6.test
index f4e5ad6af7b..ecd5a754fdc 100644
--- a/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6.test
+++ b/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6.test
@@ -6,22 +6,7 @@
# Options: --skip-name-resolve, --bind-address=0.0.0.0 (see corresponding cnf file)
# for master and slave
#
-# Check if ipv4 is available.
---disable_query_log
---disable_abort_on_error
-connect (checkcon123456789,127.0.0.1,root,,test);
-if($mysql_errno)
-{
-skip wrong IP;
-}
-connection default;
-disconnect checkcon123456789;
---enable_abort_on_error
---enable_query_log
-# end check
-
-# Can't be tested with windows due to mixed format like 0::0000:FFFF:127.0.0.1
---source include/not_windows.inc
+--source include/have_ipv4_mapped.inc
--source include/have_log_bin.inc
let $IPv6= 127.0.0.1;
@@ -56,7 +41,7 @@ let $IPv6= ::FFFF:127.0.0.1;
#--echo #################### IP: $IPv6 ###########################
#--source include/rpl_ipv6.inc
-let $IPv6= ::1;
+let $IPv6= ::FFFF:127.0.0.1;
--echo #################### IP: $IPv6 ###########################
--echo connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT);
@@ -75,10 +60,10 @@ let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
eval change master to master_host='$IPv6';
let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
--echo Master-Host: $master_host
-eval change master to master_host='::FFFF:127.0.0.1';
+eval change master to master_host='127.0.0.1';
let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
--echo Master-Host: $master_host
-eval change master to master_host='0:0:0:0:0:0:0:1';
+eval change master to master_host='0:0000:0000:0:0000:FFFF:127.0.0.1';
let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
--echo Master-Host: $master_host
--echo disconnect slave;
diff --git a/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.cnf b/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.cnf
deleted file mode 100644
index b646a4088ff..00000000000
--- a/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.cnf
+++ /dev/null
@@ -1,56 +0,0 @@
-# Use default setting for mysqld processes
-!include include/default_mysqld.cnf
-!include include/default_client.cnf
-
-[mysqld.1]
-
-# Run the master.sh script before starting this process
-#!run-master-sh
-
-log-bin= master-bin
-
-loose-innodb
-
-skip-name-resolve
-bind-address= 0.0.0.0
-
-
-[mysqld.2]
-# Run the slave.sh script before starting this process
-#!run-slave-sh
-
-# Append <testname>-slave.opt file to the list of argument used when
-# starting the mysqld
-#!use-slave-opt
-
-log-bin= slave-bin
-relay-log= slave-relay-bin
-
-init-rpl-role= slave
-log-slave-updates
-master-retry-count= 10
-
-# Values reported by slave when it connect to master
-# and shows up in SHOW SLAVE STATUS;
-report-host= localhost
-report-port= @mysqld.2.port
-report-user= root
-
-skip-slave-start
-skip-name-resolve
-bind-address= 0.0.0.0
-
-# Directory where slaves find the dumps generated by "load data"
-# on the server. The path need to have constant length otherwise
-# test results will vary, thus a relative path is used.
-slave-load-tmpdir= ../../tmp
-
-loose-innodb
-
-[ENV]
-MASTER_MYPORT= @mysqld.1.port
-MASTER_MYSOCK= @mysqld.1.socket
-
-SLAVE_MYPORT= @mysqld.2.port
-SLAVE_MYSOCK= @mysqld.2.socket
-
diff --git a/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.test b/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.test
deleted file mode 100644
index db786536c2d..00000000000
--- a/mysql-test/suite/rpl/t/rpl_ipv4_as_ipv6_win.test
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright (C) 2009 SUN Microsystems
-# All rights reserved. Use is subject to license terms.
-# Author: Horst Hunger
-# Nov. 19, 2009
-# Test of ipv4 (127.0.0.1) in ipv6 format, especially "change master host=..."
-# Options: --skip-name-resolve, --bind-address=0.0.0.0 (see corresponding cnf file)
-# for master and slave
-#
-# Check if ipv4 is available.
---disable_query_log
---disable_abort_on_error
-connect (checkcon123456789,127.0.0.1,root,,test);
-if($mysql_errno)
-{
-skip wrong IP;
-}
-connection default;
-disconnect checkcon123456789;
---enable_abort_on_error
---enable_query_log
-# end check
-
-# For windows due to missing the mixed format like 0::0000:FFFF:127.0.0.1
---source include/windows.inc
---source include/have_log_bin.inc
-
-let $IPv6= 127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ipv6.inc
-
-let $IPv6= ::1;
---echo #################### IP: $IPv6 ###########################
---echo connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (master,127.0.0.1,root,,test,$MASTER_MYPORT);
---echo connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT);
---echo connection master;
-connection master;
-reset master;
-source include/show_master_status.inc;
-save_master_pos;
---echo connection slave;
-connection slave;
-reset slave;
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
-eval change master to master_host='$IPv6';
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
-eval change master to master_host='127.0.0.1';
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
-eval change master to master_host='0:0:0:0:0:0:0:1';
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
---echo disconnect slave;
-disconnect slave;
---echo disconnect master;
-disconnect master;
---echo connection default;
-connection default;
---exit
-
diff --git a/mysql-test/suite/rpl/t/rpl_ipv6.test b/mysql-test/suite/rpl/t/rpl_ipv6.test
index 71fedcb4208..3eceedfd7a4 100644
--- a/mysql-test/suite/rpl/t/rpl_ipv6.test
+++ b/mysql-test/suite/rpl/t/rpl_ipv6.test
@@ -27,38 +27,6 @@ let $IPv6= 0:0:0:0:0:0:0:1;
--echo #################### IP: $IPv6 ###########################
--source include/rpl_ipv6.inc
-let $IPv6= 127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ipv6.inc
-
-let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ipv6.inc
-
-let $IPv6= 0000:0000:0000:0000:0000:FFFF:127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ipv6.inc
-
-let $IPv6= 0:0000:0000:0:0000:FFFF:127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ipv6.inc
-
-let $IPv6= 0::0000:FFFF:127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ipv6.inc
-
-#let $IPv6= 0:0:0:0:0:FFFF:127.0.0.1/96;
-#--echo #################### IP: $IPv6 ###########################
-#--source include/rpl_ipv6.inc
-
-let $IPv6= ::FFFF:127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ipv6.inc
-
-#let $IPv6= ::FFFF:127.0.0.1/96;
-#--echo #################### IP: $IPv6 ###########################
-#--source include/rpl_ipv6.inc
-
let $IPv6= ::1;
--echo #################### IP: $IPv6 mix #######################
--echo connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
@@ -78,7 +46,7 @@ let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
eval change master to master_host='$IPv6';
let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
--echo Master-Host: $master_host
-eval change master to master_host='::FFFF:127.0.0.1';
+eval change master to master_host='127.0.0.1';
let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
--echo Master-Host: $master_host
eval change master to master_host='0:0:0:0:0:0:0:1';
diff --git a/mysql-test/suite/rpl/t/rpl_ipv6_win.cnf b/mysql-test/suite/rpl/t/rpl_ipv6_win.cnf
deleted file mode 100644
index c657e7c5115..00000000000
--- a/mysql-test/suite/rpl/t/rpl_ipv6_win.cnf
+++ /dev/null
@@ -1,56 +0,0 @@
-# Use default setting for mysqld processes
-!include include/default_mysqld.cnf
-!include include/default_client.cnf
-
-[mysqld.1]
-
-# Run the master.sh script before starting this process
-#!run-master-sh
-
-log-bin= master-bin
-
-loose-innodb
-
-skip-name-resolve
-bind-address= ::
-
-
-[mysqld.2]
-# Run the slave.sh script before starting this process
-#!run-slave-sh
-
-# Append <testname>-slave.opt file to the list of argument used when
-# starting the mysqld
-#!use-slave-opt
-
-log-bin= slave-bin
-relay-log= slave-relay-bin
-
-init-rpl-role= slave
-log-slave-updates
-master-retry-count= 10
-
-# Values reported by slave when it connect to master
-# and shows up in SHOW SLAVE STATUS;
-report-host= localhost
-report-port= @mysqld.2.port
-report-user= root
-
-skip-slave-start
-skip-name-resolve
-bind-address= ::
-
-# Directory where slaves find the dumps generated by "load data"
-# on the server. The path need to have constant length otherwise
-# test results will vary, thus a relative path is used.
-slave-load-tmpdir= ../../tmp
-
-loose-innodb
-
-[ENV]
-MASTER_MYPORT= @mysqld.1.port
-MASTER_MYSOCK= @mysqld.1.socket
-
-SLAVE_MYPORT= @mysqld.2.port
-SLAVE_MYSOCK= @mysqld.2.socket
-
diff --git a/mysql-test/suite/rpl/t/rpl_ipv6_win.test b/mysql-test/suite/rpl/t/rpl_ipv6_win.test
deleted file mode 100644
index 7c9d437541a..00000000000
--- a/mysql-test/suite/rpl/t/rpl_ipv6_win.test
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright (C) 2009 SUN Microsystems
-# All rights reserved. Use is subject to license terms.
-# Author: Horst Hunger
-# Nov. 19, 2009
-# Test of ipv6 format, especially "change master host=..."
-# Options: --skip-name-resolve, --bind-address=:: (see corresponding cnf file)
-# for master and slave.
-#
---source include/check_ipv6.inc
-# For windows due to missing the mixed format like 0::0000:FFFF:127.0.0.1
---source include/windows.inc
---source include/have_log_bin.inc
-
-let $IPv6= ::1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ipv6.inc
-
-let $IPv6= ::1/128;
-#--echo #################### IP: $IPv6 ###########################
-#--source include/rpl_ipv6.inc
-
-let $IPv6= 0000:0000:0000:0000:0000:0000:0000:0001;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ipv6.inc
-
-let $IPv6= 0:0:0:0:0:0:0:1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ipv6.inc
-
-let $IPv6= 127.0.0.1;
---echo #################### IP: $IPv6 ###########################
---source include/rpl_ipv6.inc
-
-let $IPv6= ::1;
---echo #################### IP: $IPv6 mix #######################
---echo connect (master,127.0.0.1,root,,test,MASTER_MYPORT);
-connect (master,127.0.0.1,root,,test,$MASTER_MYPORT);
---echo connect (slave,127.0.0.1,root,,test,SLAVE_MYPORT);
-connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT);
---echo connection master;
-connection master;
-reset master;
-source include/show_master_status.inc;
-save_master_pos;
---echo connection slave;
-connection slave;
-reset slave;
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
-eval change master to master_host='$IPv6';
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
-eval change master to master_host='127.0.0.1';
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
-eval change master to master_host='0:0:0:0:0:0:0:1';
-let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
---echo Master-Host: $master_host
---echo disconnect slave;
-disconnect slave;
---echo disconnect master;
-disconnect master;
---echo connection default;
-connection default;
---exit
diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync.test b/mysql-test/suite/rpl/t/rpl_semi_sync.test
index 4900acc1e91..b04541aba21 100644
--- a/mysql-test/suite/rpl/t/rpl_semi_sync.test
+++ b/mysql-test/suite/rpl/t/rpl_semi_sync.test
@@ -11,6 +11,7 @@ disable_query_log;
connection master;
call mtr.add_suppression("Timeout waiting for reply of binlog");
call mtr.add_suppression("Read semi-sync reply");
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT.");
connection slave;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
@@ -193,8 +194,38 @@ select count(distinct a) from t1;
select min(a) from t1;
select max(a) from t1;
+--echo
+--echo # BUG#50157
+--echo # semi-sync replication crashes when replicating a transaction which
+--echo # include 'CREATE TEMPORARY TABLE `MyISAM_t` SELECT * FROM `Innodb_t` ;
+
+connection master;
+echo [ on master ];
+SET SESSION AUTOCOMMIT= 0;
+CREATE TABLE t2(c1 INT) ENGINE=innodb;
+sync_slave_with_master;
+
+connection master;
+BEGIN;
+--echo
+--echo # Even though it is in a transaction, this statement is binlogged into binlog
+--echo # file immediately.
+--disable_warnings
+CREATE TEMPORARY TABLE t3 SELECT c1 FROM t2 where 1=1;
+--enable_warnings
+--echo
+--echo # These statements will not be binlogged until the transaction is committed
+INSERT INTO t2 VALUES(11);
+INSERT INTO t2 VALUES(22);
+COMMIT;
+
+DROP TABLE t2, t3;
+SET SESSION AUTOCOMMIT= 1;
+sync_slave_with_master;
+
+
--echo #
---echo # Test semi-sync master will switch OFF after one transacton
+--echo # Test semi-sync master will switch OFF after one transaction
--echo # timeout waiting for slave reply.
--echo #
connection slave;
diff --git a/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test b/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test
index 437e1ebb92d..b85ed18ab51 100644
--- a/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test
+++ b/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test
@@ -33,10 +33,17 @@ commit;
connection slave;
source include/wait_for_slave_sql_to_stop.inc;
---replace_result $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
---replace_regex /SQL_LOAD-[0-9]-[0-9]-[0-9]*/SQL_LOAD/
-query_vertical show slave status;
+--let $error= query_get_value(SHOW SLAVE STATUS, Last_Errno, 1)
+# windows and linux different error numbers here:
+# Windows:
+# - Last_Errno 29 (File not found)
+# Unix like OS:
+# - Last_Errno 13 (Can't stat file)
+--let $assertion= `SELECT $error=29 OR $error=13`
+if (!$assertion)
+{
+ --echo UNEXPECTED ERROR NUMBER: $error
+}
##########################################################################
# Clean up
@@ -49,4 +56,5 @@ connection slave;
drop table t1;
-call mtr.add_suppression("Slave: Error writing file 'UNKNOWN' .Errcode: 9. Error_code: 3");
+call mtr.add_suppression("Slave: Can't get stat of .*");
+call mtr.add_suppression("Slave: File.* not found.*");
diff --git a/mysql-test/suite/rpl/t/rpl_stm_user_variables.test b/mysql-test/suite/rpl/t/rpl_stm_user_variables.test
new file mode 100644
index 00000000000..c58acdcb084
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_stm_user_variables.test
@@ -0,0 +1,141 @@
+#
+# BUG#49562: SBR out of sync when using numeric data types + user variable
+#
+
+-- source include/master-slave.inc
+-- source include/have_binlog_format_statement.inc
+
+## Setup user variables for several numeric types, so that we get
+## coverage on the User_var_log_event different val types
+
+-- let $max_unsigned_long= 18446744073709551615
+-- let $min_signed_long= -9223372036854775808
+-- eval SET @positive= $max_unsigned_long
+-- eval SET @negative= $min_signed_long
+
+CREATE TABLE t1 (`tinyint` TINYINT,
+ `smallint` SMALLINT,
+ `mediumint` MEDIUMINT,
+ `integer` INTEGER,
+ `bigint` BIGINT,
+ `utinyint` TINYINT UNSIGNED,
+ `usmallint` SMALLINT UNSIGNED,
+ `umediumint` MEDIUMINT UNSIGNED,
+ `uinteger` INTEGER UNSIGNED,
+ `ubigint` BIGINT UNSIGNED,
+ `double` DOUBLE,
+ `float` FLOAT,
+ `real` REAL(30,2),
+ `decimal` DECIMAL(30,2)) ENGINE = MyISAM;
+
+-- disable_warnings
+
+-- echo ### insert max unsigned
+-- echo ### a) declarative
+-- eval INSERT INTO t1 VALUES ($max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long,$max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long, $max_unsigned_long);
+
+-- echo #########################################
+-- echo #### [ on master ]
+-- query_vertical SELECT * FROM t1
+-- sync_slave_with_master
+-- echo #### [ on slave ]
+-- query_vertical SELECT * FROM t1
+-- echo #########################################
+-- connection master
+-- echo ## assertion: master and slave tables are in sync
+-- let $diff_table_1=master:test.t1
+-- let $diff_table_2=slave:test.t1
+-- source include/diff_tables.inc
+-- connection master
+TRUNCATE t1;
+
+-- echo ### b) user var
+INSERT INTO t1 VALUES (@positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive,
+ @positive);
+
+-- echo #########################################
+-- echo #### [ on master ]
+-- query_vertical SELECT * FROM t1
+-- sync_slave_with_master
+-- echo #### [ on slave ]
+-- query_vertical SELECT * FROM t1
+-- echo #########################################
+-- connection master
+-- echo ## assertion: master and slave tables are in sync
+-- let $diff_table_1=master:test.t1
+-- let $diff_table_2=slave:test.t1
+-- source include/diff_tables.inc
+-- connection master
+TRUNCATE t1;
+
+
+-- echo ### insert min signed
+-- echo ### a) declarative
+-- eval INSERT INTO t1 VALUES ($min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long,$min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long, $min_signed_long);
+
+-- echo #########################################
+-- echo #### [ on master ]
+-- query_vertical SELECT * FROM t1
+-- sync_slave_with_master
+-- echo #### [ on slave ]
+-- query_vertical SELECT * FROM t1
+-- echo #########################################
+-- connection master
+-- echo ## assertion: master and slave tables are in sync
+-- let $diff_table_1=master:test.t1
+-- let $diff_table_2=slave:test.t1
+-- source include/diff_tables.inc
+-- connection master
+TRUNCATE t1;
+
+-- echo ### b) user var
+INSERT INTO t1 VALUES (@negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative,
+ @negative);
+
+-- echo #########################################
+-- echo #### [ on master ]
+-- query_vertical SELECT * FROM t1
+-- sync_slave_with_master
+-- echo #### [ on slave ]
+-- query_vertical SELECT * FROM t1
+-- echo #########################################
+-- connection master
+
+-- echo ## assertion: master and slave tables are in sync
+-- let $diff_table_1=master:test.t1
+-- let $diff_table_2=slave:test.t1
+-- source include/diff_tables.inc
+-- connection master
+TRUNCATE t1;
+
+-- echo ## check: contents of both tables master's and slave's
+-- enable_warnings
+
+## cleanup
+-- connection master
+DROP TABLE t1;
+-- sync_slave_with_master
diff --git a/mysql-test/suite/rpl/t/rpl_sync.test b/mysql-test/suite/rpl/t/rpl_sync.test
index 80b6a144187..48c8dc02efb 100644
--- a/mysql-test/suite/rpl/t/rpl_sync.test
+++ b/mysql-test/suite/rpl/t/rpl_sync.test
@@ -64,8 +64,15 @@ stop slave IO_THREAD;
source include/wait_for_slave_io_to_stop.inc;
let $file= query_get_value("SHOW SLAVE STATUS", Relay_Log_File, 1);
---replace_result $MYSQLD_SLAVE_DATADIR MYSQLD_SLAVE_DATADIR
---exec echo "failure" > $MYSQLD_SLAVE_DATADIR/$file
+
+--let FILE_TO_CORRUPT= $MYSQLD_SLAVE_DATADIR/$file
+perl;
+$file= $ENV{'FILE_TO_CORRUPT'};
+open(FILE, ">$file") || die "Unable to open $file.";
+truncate(FILE,0);
+print FILE "failure";
+close ($file);
+EOF
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
SET SESSION debug="d,crash_before_rotate_relaylog";
@@ -102,9 +109,6 @@ insert into t1(a) values(8);
insert into t1(a) values(9);
connection slave;
---replace_result $MYSQLD_SLAVE_DATADIR MYSQLD_SLAVE_DATADIR
---exec cat $MYSQLD_SLAVE_DATADIR/master.backup > $MYSQLD_SLAVE_DATADIR/master.info
-
let MYSQLD_SLAVE_DATADIR=`select @@datadir`;
--perl
diff --git a/mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test b/mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test
index 56924a2efe9..b3efb578b68 100644
--- a/mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test
+++ b/mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test
@@ -10,4 +10,5 @@ source include/have_binlog_format_row.inc;
LET $ENGINE_TYPE= MyISAM;
source extra/rpl_tests/rpl_tmp_table_and_DDL.test;
+sync_slave_with_master;
diff --git a/mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result b/mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result
index 0f1a16a6911..eeb7a28c816 100644
--- a/mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result
+++ b/mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result
@@ -103,19 +103,19 @@ INSERT DELAYED INTO t1 VALUES('21');
INSERT DELAYED INTO t1 VALUES('22');|
** Connection con0 **
Asynchronous execute
-SELECT COUNT(*) = 22 FROM t1;
+SELECT COUNT(*) BETWEEN 6 AND 22 FROM t1;
** Connection default **
** Wait till con0 is blocked **
UNLOCK TABLES;
** Connection con1 **
** Connection con0 **
Asynchronous "reap" result
-COUNT(*) = 22
+COUNT(*) BETWEEN 6 AND 22
1
** Connection default**
Checking if the delayed insert gives the same result afterwards
-SELECT COUNT(*) = 22 FROM t1;
-COUNT(*) = 22
+SELECT COUNT(*) BETWEEN 6 AND 22 FROM t1;
+COUNT(*) BETWEEN 6 AND 22
1
** Connection default**
DROP TABLE t1;
diff --git a/mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_basic.result b/mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_basic.result
new file mode 100644
index 00000000000..418a693d319
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_basic.result
@@ -0,0 +1,92 @@
+SET @start_global_value = @@global.innodb_adaptive_flushing;
+SELECT @start_global_value;
+@start_global_value
+1
+Valid values are 'ON' and 'OFF'
+select @@global.innodb_adaptive_flushing in (0, 1);
+@@global.innodb_adaptive_flushing in (0, 1)
+1
+select @@global.innodb_adaptive_flushing;
+@@global.innodb_adaptive_flushing
+1
+select @@session.innodb_adaptive_flushing;
+ERROR HY000: Variable 'innodb_adaptive_flushing' is a GLOBAL variable
+show global variables like 'innodb_adaptive_flushing';
+Variable_name Value
+innodb_adaptive_flushing ON
+show session variables like 'innodb_adaptive_flushing';
+Variable_name Value
+innodb_adaptive_flushing ON
+select * from information_schema.global_variables where variable_name='innodb_adaptive_flushing';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_FLUSHING ON
+select * from information_schema.session_variables where variable_name='innodb_adaptive_flushing';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_FLUSHING ON
+set global innodb_adaptive_flushing='OFF';
+select @@global.innodb_adaptive_flushing;
+@@global.innodb_adaptive_flushing
+0
+select * from information_schema.global_variables where variable_name='innodb_adaptive_flushing';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_FLUSHING OFF
+select * from information_schema.session_variables where variable_name='innodb_adaptive_flushing';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_FLUSHING OFF
+set @@global.innodb_adaptive_flushing=1;
+select @@global.innodb_adaptive_flushing;
+@@global.innodb_adaptive_flushing
+1
+select * from information_schema.global_variables where variable_name='innodb_adaptive_flushing';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_FLUSHING ON
+select * from information_schema.session_variables where variable_name='innodb_adaptive_flushing';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_FLUSHING ON
+set global innodb_adaptive_flushing=0;
+select @@global.innodb_adaptive_flushing;
+@@global.innodb_adaptive_flushing
+0
+select * from information_schema.global_variables where variable_name='innodb_adaptive_flushing';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_FLUSHING OFF
+select * from information_schema.session_variables where variable_name='innodb_adaptive_flushing';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_FLUSHING OFF
+set @@global.innodb_adaptive_flushing='ON';
+select @@global.innodb_adaptive_flushing;
+@@global.innodb_adaptive_flushing
+1
+select * from information_schema.global_variables where variable_name='innodb_adaptive_flushing';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_FLUSHING ON
+select * from information_schema.session_variables where variable_name='innodb_adaptive_flushing';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_FLUSHING ON
+set session innodb_adaptive_flushing='OFF';
+ERROR HY000: Variable 'innodb_adaptive_flushing' is a GLOBAL variable and should be set with SET GLOBAL
+set @@session.innodb_adaptive_flushing='ON';
+ERROR HY000: Variable 'innodb_adaptive_flushing' is a GLOBAL variable and should be set with SET GLOBAL
+set global innodb_adaptive_flushing=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_adaptive_flushing'
+set global innodb_adaptive_flushing=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_adaptive_flushing'
+set global innodb_adaptive_flushing=2;
+ERROR 42000: Variable 'innodb_adaptive_flushing' can't be set to the value of '2'
+NOTE: The following should fail with ER_WRONG_VALUE_FOR_VAR (BUG#50643)
+set global innodb_adaptive_flushing=-3;
+select @@global.innodb_adaptive_flushing;
+@@global.innodb_adaptive_flushing
+1
+select * from information_schema.global_variables where variable_name='innodb_adaptive_flushing';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_FLUSHING ON
+select * from information_schema.session_variables where variable_name='innodb_adaptive_flushing';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_FLUSHING ON
+set global innodb_adaptive_flushing='AUTO';
+ERROR 42000: Variable 'innodb_adaptive_flushing' can't be set to the value of 'AUTO'
+SET @@global.innodb_adaptive_flushing = @start_global_value;
+SELECT @@global.innodb_adaptive_flushing;
+@@global.innodb_adaptive_flushing
+1
diff --git a/mysql-test/suite/sys_vars/r/innodb_adaptive_hash_index_basic.result b/mysql-test/suite/sys_vars/r/innodb_adaptive_hash_index_basic.result
new file mode 100644
index 00000000000..bc908090627
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_adaptive_hash_index_basic.result
@@ -0,0 +1,92 @@
+SET @start_global_value = @@global.innodb_adaptive_hash_index;
+SELECT @start_global_value;
+@start_global_value
+1
+Valid values are 'ON' and 'OFF'
+select @@global.innodb_adaptive_hash_index in (0, 1);
+@@global.innodb_adaptive_hash_index in (0, 1)
+1
+select @@global.innodb_adaptive_hash_index;
+@@global.innodb_adaptive_hash_index
+1
+select @@session.innodb_adaptive_hash_index;
+ERROR HY000: Variable 'innodb_adaptive_hash_index' is a GLOBAL variable
+show global variables like 'innodb_adaptive_hash_index';
+Variable_name Value
+innodb_adaptive_hash_index ON
+show session variables like 'innodb_adaptive_hash_index';
+Variable_name Value
+innodb_adaptive_hash_index ON
+select * from information_schema.global_variables where variable_name='innodb_adaptive_hash_index';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_HASH_INDEX ON
+select * from information_schema.session_variables where variable_name='innodb_adaptive_hash_index';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_HASH_INDEX ON
+set global innodb_adaptive_hash_index='OFF';
+select @@global.innodb_adaptive_hash_index;
+@@global.innodb_adaptive_hash_index
+0
+select * from information_schema.global_variables where variable_name='innodb_adaptive_hash_index';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_HASH_INDEX OFF
+select * from information_schema.session_variables where variable_name='innodb_adaptive_hash_index';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_HASH_INDEX OFF
+set @@global.innodb_adaptive_hash_index=1;
+select @@global.innodb_adaptive_hash_index;
+@@global.innodb_adaptive_hash_index
+1
+select * from information_schema.global_variables where variable_name='innodb_adaptive_hash_index';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_HASH_INDEX ON
+select * from information_schema.session_variables where variable_name='innodb_adaptive_hash_index';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_HASH_INDEX ON
+set global innodb_adaptive_hash_index=0;
+select @@global.innodb_adaptive_hash_index;
+@@global.innodb_adaptive_hash_index
+0
+select * from information_schema.global_variables where variable_name='innodb_adaptive_hash_index';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_HASH_INDEX OFF
+select * from information_schema.session_variables where variable_name='innodb_adaptive_hash_index';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_HASH_INDEX OFF
+set @@global.innodb_adaptive_hash_index='ON';
+select @@global.innodb_adaptive_hash_index;
+@@global.innodb_adaptive_hash_index
+1
+select * from information_schema.global_variables where variable_name='innodb_adaptive_hash_index';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_HASH_INDEX ON
+select * from information_schema.session_variables where variable_name='innodb_adaptive_hash_index';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_HASH_INDEX ON
+set session innodb_adaptive_hash_index='OFF';
+ERROR HY000: Variable 'innodb_adaptive_hash_index' is a GLOBAL variable and should be set with SET GLOBAL
+set @@session.innodb_adaptive_hash_index='ON';
+ERROR HY000: Variable 'innodb_adaptive_hash_index' is a GLOBAL variable and should be set with SET GLOBAL
+set global innodb_adaptive_hash_index=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_adaptive_hash_index'
+set global innodb_adaptive_hash_index=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_adaptive_hash_index'
+set global innodb_adaptive_hash_index=2;
+ERROR 42000: Variable 'innodb_adaptive_hash_index' can't be set to the value of '2'
+NOTE: The following should fail with ER_WRONG_VALUE_FOR_VAR (BUG#50643)
+set global innodb_adaptive_hash_index=-3;
+select @@global.innodb_adaptive_hash_index;
+@@global.innodb_adaptive_hash_index
+1
+select * from information_schema.global_variables where variable_name='innodb_adaptive_hash_index';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_HASH_INDEX ON
+select * from information_schema.session_variables where variable_name='innodb_adaptive_hash_index';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_ADAPTIVE_HASH_INDEX ON
+set global innodb_adaptive_hash_index='AUTO';
+ERROR 42000: Variable 'innodb_adaptive_hash_index' can't be set to the value of 'AUTO'
+SET @@global.innodb_adaptive_hash_index = @start_global_value;
+SELECT @@global.innodb_adaptive_hash_index;
+@@global.innodb_adaptive_hash_index
+1
diff --git a/mysql-test/suite/sys_vars/r/innodb_change_buffering_basic.result b/mysql-test/suite/sys_vars/r/innodb_change_buffering_basic.result
new file mode 100644
index 00000000000..70b0425ce6f
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_change_buffering_basic.result
@@ -0,0 +1,63 @@
+SET @start_global_value = @@global.innodb_change_buffering;
+SELECT @start_global_value;
+@start_global_value
+inserts
+Valid values are 'inserts' and 'none'
+select @@global.innodb_change_buffering in ('inserts', 'none');
+@@global.innodb_change_buffering in ('inserts', 'none')
+1
+select @@global.innodb_change_buffering;
+@@global.innodb_change_buffering
+inserts
+select @@session.innodb_change_buffering;
+ERROR HY000: Variable 'innodb_change_buffering' is a GLOBAL variable
+show global variables like 'innodb_change_buffering';
+Variable_name Value
+innodb_change_buffering inserts
+show session variables like 'innodb_change_buffering';
+Variable_name Value
+innodb_change_buffering inserts
+select * from information_schema.global_variables where variable_name='innodb_change_buffering';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_CHANGE_BUFFERING inserts
+select * from information_schema.session_variables where variable_name='innodb_change_buffering';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_CHANGE_BUFFERING inserts
+set global innodb_change_buffering='none';
+select @@global.innodb_change_buffering;
+@@global.innodb_change_buffering
+none
+select * from information_schema.global_variables where variable_name='innodb_change_buffering';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_CHANGE_BUFFERING none
+select * from information_schema.session_variables where variable_name='innodb_change_buffering';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_CHANGE_BUFFERING none
+set @@global.innodb_change_buffering='inserts';
+select @@global.innodb_change_buffering;
+@@global.innodb_change_buffering
+inserts
+select * from information_schema.global_variables where variable_name='innodb_change_buffering';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_CHANGE_BUFFERING inserts
+select * from information_schema.session_variables where variable_name='innodb_change_buffering';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_CHANGE_BUFFERING inserts
+set session innodb_change_buffering='some';
+ERROR HY000: Variable 'innodb_change_buffering' is a GLOBAL variable and should be set with SET GLOBAL
+set @@session.innodb_change_buffering='some';
+ERROR HY000: Variable 'innodb_change_buffering' is a GLOBAL variable and should be set with SET GLOBAL
+set global innodb_change_buffering=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_change_buffering'
+set global innodb_change_buffering=1;
+ERROR 42000: Incorrect argument type to variable 'innodb_change_buffering'
+set global innodb_change_buffering=-2;
+ERROR 42000: Incorrect argument type to variable 'innodb_change_buffering'
+set global innodb_change_buffering=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_change_buffering'
+set global innodb_change_buffering='some';
+ERROR 42000: Variable 'innodb_change_buffering' can't be set to the value of 'some'
+SET @@global.innodb_change_buffering = @start_global_value;
+SELECT @@global.innodb_change_buffering;
+@@global.innodb_change_buffering
+inserts
diff --git a/mysql-test/suite/sys_vars/r/innodb_file_format_basic.result b/mysql-test/suite/sys_vars/r/innodb_file_format_basic.result
new file mode 100644
index 00000000000..58e009ea705
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_file_format_basic.result
@@ -0,0 +1,59 @@
+SET @start_global_value = @@global.innodb_file_format;
+SELECT @start_global_value;
+@start_global_value
+Antelope
+Valid values are 'Antelope' and 'Barracuda'
+select @@global.innodb_file_format in ('Antelope', 'Barracuda');
+@@global.innodb_file_format in ('Antelope', 'Barracuda')
+1
+select @@global.innodb_file_format;
+@@global.innodb_file_format
+Antelope
+select @@session.innodb_file_format;
+ERROR HY000: Variable 'innodb_file_format' is a GLOBAL variable
+show global variables like 'innodb_file_format';
+Variable_name Value
+innodb_file_format Antelope
+show session variables like 'innodb_file_format';
+Variable_name Value
+innodb_file_format Antelope
+select * from information_schema.global_variables where variable_name='innodb_file_format';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_FILE_FORMAT Antelope
+select * from information_schema.session_variables where variable_name='innodb_file_format';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_FILE_FORMAT Antelope
+set global innodb_file_format='Antelope';
+select @@global.innodb_file_format;
+@@global.innodb_file_format
+Antelope
+select * from information_schema.global_variables where variable_name='innodb_file_format';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_FILE_FORMAT Antelope
+select * from information_schema.session_variables where variable_name='innodb_file_format';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_FILE_FORMAT Antelope
+set @@global.innodb_file_format='Barracuda';
+select @@global.innodb_file_format;
+@@global.innodb_file_format
+Barracuda
+select * from information_schema.global_variables where variable_name='innodb_file_format';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_FILE_FORMAT Barracuda
+select * from information_schema.session_variables where variable_name='innodb_file_format';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_FILE_FORMAT Barracuda
+set session innodb_file_format='Salmon';
+ERROR HY000: Variable 'innodb_file_format' is a GLOBAL variable and should be set with SET GLOBAL
+set @@session.innodb_file_format='Salmon';
+ERROR HY000: Variable 'innodb_file_format' is a GLOBAL variable and should be set with SET GLOBAL
+set global innodb_file_format=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_file_format'
+set global innodb_file_format=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_file_format'
+set global innodb_file_format='Salmon';
+ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'Salmon'
+SET @@global.innodb_file_format = @start_global_value;
+SELECT @@global.innodb_file_format;
+@@global.innodb_file_format
+Antelope
diff --git a/mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result b/mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result
new file mode 100644
index 00000000000..29be30cf096
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result
@@ -0,0 +1,59 @@
+SET @start_global_value = @@global.innodb_file_format_check;
+SELECT @start_global_value;
+@start_global_value
+Antelope
+Valid values are 'Antelope' and 'Barracuda'
+select @@global.innodb_file_format_check in ('Antelope', 'Barracuda');
+@@global.innodb_file_format_check in ('Antelope', 'Barracuda')
+1
+select @@global.innodb_file_format_check;
+@@global.innodb_file_format_check
+Antelope
+select @@session.innodb_file_format_check;
+ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable
+show global variables like 'innodb_file_format_check';
+Variable_name Value
+innodb_file_format_check Antelope
+show session variables like 'innodb_file_format_check';
+Variable_name Value
+innodb_file_format_check Antelope
+select * from information_schema.global_variables where variable_name='innodb_file_format_check';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_FILE_FORMAT_CHECK Antelope
+select * from information_schema.session_variables where variable_name='innodb_file_format_check';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_FILE_FORMAT_CHECK Antelope
+set global innodb_file_format_check='Antelope';
+select @@global.innodb_file_format_check;
+@@global.innodb_file_format_check
+Antelope
+select * from information_schema.global_variables where variable_name='innodb_file_format_check';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_FILE_FORMAT_CHECK Antelope
+select * from information_schema.session_variables where variable_name='innodb_file_format_check';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_FILE_FORMAT_CHECK Antelope
+set @@global.innodb_file_format_check='Barracuda';
+select @@global.innodb_file_format_check;
+@@global.innodb_file_format_check
+Barracuda
+select * from information_schema.global_variables where variable_name='innodb_file_format_check';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_FILE_FORMAT_CHECK Barracuda
+select * from information_schema.session_variables where variable_name='innodb_file_format_check';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_FILE_FORMAT_CHECK Barracuda
+set session innodb_file_format_check='Salmon';
+ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable and should be set with SET GLOBAL
+set @@session.innodb_file_format_check='Salmon';
+ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable and should be set with SET GLOBAL
+set global innodb_file_format_check=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_file_format_check'
+set global innodb_file_format_check=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_file_format_check'
+set global innodb_file_format_check='Salmon';
+ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'Salmon'
+SET @@global.innodb_file_format_check = @start_global_value;
+SELECT @@global.innodb_file_format_check;
+@@global.innodb_file_format_check
+Antelope
diff --git a/mysql-test/suite/sys_vars/r/innodb_io_capacity_basic.result b/mysql-test/suite/sys_vars/r/innodb_io_capacity_basic.result
new file mode 100644
index 00000000000..25058bc6f09
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_io_capacity_basic.result
@@ -0,0 +1,69 @@
+SET @start_global_value = @@global.innodb_io_capacity;
+SELECT @start_global_value;
+@start_global_value
+200
+Valid value 100 or more
+select @@global.innodb_io_capacity > 99;
+@@global.innodb_io_capacity > 99
+1
+select @@global.innodb_io_capacity;
+@@global.innodb_io_capacity
+200
+select @@session.innodb_io_capacity;
+ERROR HY000: Variable 'innodb_io_capacity' is a GLOBAL variable
+show global variables like 'innodb_io_capacity';
+Variable_name Value
+innodb_io_capacity 200
+show session variables like 'innodb_io_capacity';
+Variable_name Value
+innodb_io_capacity 200
+select * from information_schema.global_variables where variable_name='innodb_io_capacity';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_IO_CAPACITY 200
+select * from information_schema.session_variables where variable_name='innodb_io_capacity';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_IO_CAPACITY 200
+set global innodb_io_capacity=123;
+select @@global.innodb_io_capacity;
+@@global.innodb_io_capacity
+123
+select * from information_schema.global_variables where variable_name='innodb_io_capacity';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_IO_CAPACITY 123
+select * from information_schema.session_variables where variable_name='innodb_io_capacity';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_IO_CAPACITY 123
+set session innodb_io_capacity=444;
+ERROR HY000: Variable 'innodb_io_capacity' is a GLOBAL variable and should be set with SET GLOBAL
+set global innodb_io_capacity=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_io_capacity'
+set global innodb_io_capacity=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_io_capacity'
+set global innodb_io_capacity="foo";
+ERROR 42000: Incorrect argument type to variable 'innodb_io_capacity'
+set global innodb_io_capacity=7;
+Warnings:
+Warning 1292 Truncated incorrect innodb_io_capacity value: '7'
+select @@global.innodb_io_capacity;
+@@global.innodb_io_capacity
+100
+select * from information_schema.global_variables where variable_name='innodb_io_capacity';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_IO_CAPACITY 100
+set global innodb_io_capacity=-7;
+Warnings:
+Warning 1292 Truncated incorrect innodb_io_capacity value: '-7'
+select @@global.innodb_io_capacity;
+@@global.innodb_io_capacity
+100
+select * from information_schema.global_variables where variable_name='innodb_io_capacity';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_IO_CAPACITY 100
+set global innodb_io_capacity=100;
+select @@global.innodb_io_capacity;
+@@global.innodb_io_capacity
+100
+SET @@global.innodb_io_capacity = @start_global_value;
+SELECT @@global.innodb_io_capacity;
+@@global.innodb_io_capacity
+200
diff --git a/mysql-test/suite/sys_vars/r/innodb_old_blocks_pct_basic.result b/mysql-test/suite/sys_vars/r/innodb_old_blocks_pct_basic.result
new file mode 100644
index 00000000000..bbcc2dabb22
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_old_blocks_pct_basic.result
@@ -0,0 +1,82 @@
+SET @start_global_value = @@global.innodb_old_blocks_pct;
+SELECT @start_global_value;
+@start_global_value
+37
+Valid values are between 5 and 95
+select @@global.innodb_old_blocks_pct between 5 and 95;
+@@global.innodb_old_blocks_pct between 5 and 95
+1
+select @@global.innodb_old_blocks_pct;
+@@global.innodb_old_blocks_pct
+37
+select @@session.innodb_old_blocks_pct;
+ERROR HY000: Variable 'innodb_old_blocks_pct' is a GLOBAL variable
+show global variables like 'innodb_old_blocks_pct';
+Variable_name Value
+innodb_old_blocks_pct 37
+show session variables like 'innodb_old_blocks_pct';
+Variable_name Value
+innodb_old_blocks_pct 37
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_pct';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_OLD_BLOCKS_PCT 37
+select * from information_schema.session_variables where variable_name='innodb_old_blocks_pct';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_OLD_BLOCKS_PCT 37
+set global innodb_old_blocks_pct=10;
+select @@global.innodb_old_blocks_pct;
+@@global.innodb_old_blocks_pct
+10
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_pct';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_OLD_BLOCKS_PCT 10
+select * from information_schema.session_variables where variable_name='innodb_old_blocks_pct';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_OLD_BLOCKS_PCT 10
+set session innodb_old_blocks_pct=1;
+ERROR HY000: Variable 'innodb_old_blocks_pct' is a GLOBAL variable and should be set with SET GLOBAL
+set global innodb_old_blocks_pct=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_old_blocks_pct'
+set global innodb_old_blocks_pct=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_old_blocks_pct'
+set global innodb_old_blocks_pct="foo";
+ERROR 42000: Incorrect argument type to variable 'innodb_old_blocks_pct'
+set global innodb_old_blocks_pct=4;
+Warnings:
+Warning 1292 Truncated incorrect innodb_old_blocks_pct value: '4'
+select @@global.innodb_old_blocks_pct;
+@@global.innodb_old_blocks_pct
+5
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_pct';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_OLD_BLOCKS_PCT 5
+set global innodb_old_blocks_pct=-7;
+Warnings:
+Warning 1292 Truncated incorrect innodb_old_blocks_pct value: '-7'
+select @@global.innodb_old_blocks_pct;
+@@global.innodb_old_blocks_pct
+5
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_pct';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_OLD_BLOCKS_PCT 5
+set global innodb_old_blocks_pct=96;
+Warnings:
+Warning 1292 Truncated incorrect innodb_old_blocks_pct value: '96'
+select @@global.innodb_old_blocks_pct;
+@@global.innodb_old_blocks_pct
+95
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_pct';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_OLD_BLOCKS_PCT 95
+set global innodb_old_blocks_pct=5;
+select @@global.innodb_old_blocks_pct;
+@@global.innodb_old_blocks_pct
+5
+set global innodb_old_blocks_pct=95;
+select @@global.innodb_old_blocks_pct;
+@@global.innodb_old_blocks_pct
+95
+SET @@global.innodb_old_blocks_pct = @start_global_value;
+SELECT @@global.innodb_old_blocks_pct;
+@@global.innodb_old_blocks_pct
+37
diff --git a/mysql-test/suite/sys_vars/r/innodb_old_blocks_time_basic.result b/mysql-test/suite/sys_vars/r/innodb_old_blocks_time_basic.result
new file mode 100644
index 00000000000..a285cc14a01
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_old_blocks_time_basic.result
@@ -0,0 +1,56 @@
+SET @start_global_value = @@global.innodb_old_blocks_time;
+SELECT @start_global_value;
+@start_global_value
+0
+Valid values are zero or above
+select @@global.innodb_old_blocks_time >=0;
+@@global.innodb_old_blocks_time >=0
+1
+select @@global.innodb_old_blocks_time;
+@@global.innodb_old_blocks_time
+0
+select @@session.innodb_old_blocks_time;
+ERROR HY000: Variable 'innodb_old_blocks_time' is a GLOBAL variable
+show global variables like 'innodb_old_blocks_time';
+Variable_name Value
+innodb_old_blocks_time 0
+show session variables like 'innodb_old_blocks_time';
+Variable_name Value
+innodb_old_blocks_time 0
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_time';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_OLD_BLOCKS_TIME 0
+select * from information_schema.session_variables where variable_name='innodb_old_blocks_time';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_OLD_BLOCKS_TIME 0
+set global innodb_old_blocks_time=10;
+select @@global.innodb_old_blocks_time;
+@@global.innodb_old_blocks_time
+10
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_time';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_OLD_BLOCKS_TIME 10
+select * from information_schema.session_variables where variable_name='innodb_old_blocks_time';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_OLD_BLOCKS_TIME 10
+set session innodb_old_blocks_time=1;
+ERROR HY000: Variable 'innodb_old_blocks_time' is a GLOBAL variable and should be set with SET GLOBAL
+set global innodb_old_blocks_time=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_old_blocks_time'
+set global innodb_old_blocks_time=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_old_blocks_time'
+set global innodb_old_blocks_time="foo";
+ERROR 42000: Incorrect argument type to variable 'innodb_old_blocks_time'
+set global innodb_old_blocks_time=-7;
+Warnings:
+Warning 1292 Truncated incorrect innodb_old_blocks_time value: '-7'
+select @@global.innodb_old_blocks_time;
+@@global.innodb_old_blocks_time
+0
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_time';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_OLD_BLOCKS_TIME 0
+SET @@global.innodb_old_blocks_time = @start_global_value;
+SELECT @@global.innodb_old_blocks_time;
+@@global.innodb_old_blocks_time
+0
diff --git a/mysql-test/suite/sys_vars/r/innodb_read_ahead_threshold_basic.result b/mysql-test/suite/sys_vars/r/innodb_read_ahead_threshold_basic.result
new file mode 100644
index 00000000000..65a1a8e319f
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_read_ahead_threshold_basic.result
@@ -0,0 +1,73 @@
+SET @start_global_value = @@global.innodb_read_ahead_threshold;
+SELECT @start_global_value;
+@start_global_value
+56
+Valid values are between 0 and 64
+select @@global.innodb_read_ahead_threshold between 0 and 64;
+@@global.innodb_read_ahead_threshold between 0 and 64
+1
+select @@global.innodb_read_ahead_threshold;
+@@global.innodb_read_ahead_threshold
+56
+select @@session.innodb_read_ahead_threshold;
+ERROR HY000: Variable 'innodb_read_ahead_threshold' is a GLOBAL variable
+show global variables like 'innodb_read_ahead_threshold';
+Variable_name Value
+innodb_read_ahead_threshold 56
+show session variables like 'innodb_read_ahead_threshold';
+Variable_name Value
+innodb_read_ahead_threshold 56
+select * from information_schema.global_variables where variable_name='innodb_read_ahead_threshold';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_READ_AHEAD_THRESHOLD 56
+select * from information_schema.session_variables where variable_name='innodb_read_ahead_threshold';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_READ_AHEAD_THRESHOLD 56
+set global innodb_read_ahead_threshold=10;
+select @@global.innodb_read_ahead_threshold;
+@@global.innodb_read_ahead_threshold
+10
+select * from information_schema.global_variables where variable_name='innodb_read_ahead_threshold';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_READ_AHEAD_THRESHOLD 10
+select * from information_schema.session_variables where variable_name='innodb_read_ahead_threshold';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_READ_AHEAD_THRESHOLD 10
+set session innodb_read_ahead_threshold=1;
+ERROR HY000: Variable 'innodb_read_ahead_threshold' is a GLOBAL variable and should be set with SET GLOBAL
+set global innodb_read_ahead_threshold=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_read_ahead_threshold'
+set global innodb_read_ahead_threshold=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_read_ahead_threshold'
+set global innodb_read_ahead_threshold="foo";
+ERROR 42000: Incorrect argument type to variable 'innodb_read_ahead_threshold'
+set global innodb_read_ahead_threshold=-7;
+Warnings:
+Warning 1292 Truncated incorrect innodb_read_ahead_threshold value: '-7'
+select @@global.innodb_read_ahead_threshold;
+@@global.innodb_read_ahead_threshold
+0
+select * from information_schema.global_variables where variable_name='innodb_read_ahead_threshold';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_READ_AHEAD_THRESHOLD 0
+set global innodb_read_ahead_threshold=96;
+Warnings:
+Warning 1292 Truncated incorrect innodb_read_ahead_threshold value: '96'
+select @@global.innodb_read_ahead_threshold;
+@@global.innodb_read_ahead_threshold
+64
+select * from information_schema.global_variables where variable_name='innodb_read_ahead_threshold';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_READ_AHEAD_THRESHOLD 64
+set global innodb_read_ahead_threshold=0;
+select @@global.innodb_read_ahead_threshold;
+@@global.innodb_read_ahead_threshold
+0
+set global innodb_read_ahead_threshold=64;
+select @@global.innodb_read_ahead_threshold;
+@@global.innodb_read_ahead_threshold
+64
+SET @@global.innodb_read_ahead_threshold = @start_global_value;
+SELECT @@global.innodb_read_ahead_threshold;
+@@global.innodb_read_ahead_threshold
+56
diff --git a/mysql-test/suite/sys_vars/r/innodb_read_io_threads_basic.result b/mysql-test/suite/sys_vars/r/innodb_read_io_threads_basic.result
new file mode 100644
index 00000000000..f43fa81c0d0
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_read_io_threads_basic.result
@@ -0,0 +1,21 @@
+select @@global.innodb_read_io_threads;
+@@global.innodb_read_io_threads
+2
+select @@session.innodb_read_io_threads;
+ERROR HY000: Variable 'innodb_read_io_threads' is a GLOBAL variable
+show global variables like 'innodb_read_io_threads';
+Variable_name Value
+innodb_read_io_threads 2
+show session variables like 'innodb_read_io_threads';
+Variable_name Value
+innodb_read_io_threads 2
+select * from information_schema.global_variables where variable_name='innodb_read_io_threads';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_READ_IO_THREADS 2
+select * from information_schema.session_variables where variable_name='innodb_read_io_threads';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_READ_IO_THREADS 2
+set global innodb_read_io_threads=1;
+ERROR HY000: Variable 'innodb_read_io_threads' is a read only variable
+set session innodb_read_io_threads=1;
+ERROR HY000: Variable 'innodb_read_io_threads' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/innodb_replication_delay_basic.result b/mysql-test/suite/sys_vars/r/innodb_replication_delay_basic.result
new file mode 100644
index 00000000000..fa00baa218e
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_replication_delay_basic.result
@@ -0,0 +1,56 @@
+SET @start_global_value = @@global.innodb_replication_delay;
+SELECT @start_global_value;
+@start_global_value
+0
+Valid values are zero or above
+select @@global.innodb_replication_delay >=0;
+@@global.innodb_replication_delay >=0
+1
+select @@global.innodb_replication_delay;
+@@global.innodb_replication_delay
+0
+select @@session.innodb_replication_delay;
+ERROR HY000: Variable 'innodb_replication_delay' is a GLOBAL variable
+show global variables like 'innodb_replication_delay';
+Variable_name Value
+innodb_replication_delay 0
+show session variables like 'innodb_replication_delay';
+Variable_name Value
+innodb_replication_delay 0
+select * from information_schema.global_variables where variable_name='innodb_replication_delay';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_REPLICATION_DELAY 0
+select * from information_schema.session_variables where variable_name='innodb_replication_delay';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_REPLICATION_DELAY 0
+set global innodb_replication_delay=10;
+select @@global.innodb_replication_delay;
+@@global.innodb_replication_delay
+10
+select * from information_schema.global_variables where variable_name='innodb_replication_delay';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_REPLICATION_DELAY 10
+select * from information_schema.session_variables where variable_name='innodb_replication_delay';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_REPLICATION_DELAY 10
+set session innodb_replication_delay=1;
+ERROR HY000: Variable 'innodb_replication_delay' is a GLOBAL variable and should be set with SET GLOBAL
+set global innodb_replication_delay=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_replication_delay'
+set global innodb_replication_delay=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_replication_delay'
+set global innodb_replication_delay="foo";
+ERROR 42000: Incorrect argument type to variable 'innodb_replication_delay'
+set global innodb_replication_delay=-7;
+Warnings:
+Warning 1292 Truncated incorrect innodb_replication_delay value: '-7'
+select @@global.innodb_replication_delay;
+@@global.innodb_replication_delay
+0
+select * from information_schema.global_variables where variable_name='innodb_replication_delay';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_REPLICATION_DELAY 0
+SET @@global.innodb_replication_delay = @start_global_value;
+SELECT @@global.innodb_replication_delay;
+@@global.innodb_replication_delay
+0
diff --git a/mysql-test/suite/sys_vars/r/innodb_spin_wait_delay_basic.result b/mysql-test/suite/sys_vars/r/innodb_spin_wait_delay_basic.result
new file mode 100644
index 00000000000..05672cbb966
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_spin_wait_delay_basic.result
@@ -0,0 +1,56 @@
+SET @start_global_value = @@global.innodb_spin_wait_delay;
+SELECT @start_global_value;
+@start_global_value
+6
+Valid values are zero or above
+select @@global.innodb_spin_wait_delay >=0;
+@@global.innodb_spin_wait_delay >=0
+1
+select @@global.innodb_spin_wait_delay;
+@@global.innodb_spin_wait_delay
+6
+select @@session.innodb_spin_wait_delay;
+ERROR HY000: Variable 'innodb_spin_wait_delay' is a GLOBAL variable
+show global variables like 'innodb_spin_wait_delay';
+Variable_name Value
+innodb_spin_wait_delay 6
+show session variables like 'innodb_spin_wait_delay';
+Variable_name Value
+innodb_spin_wait_delay 6
+select * from information_schema.global_variables where variable_name='innodb_spin_wait_delay';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_SPIN_WAIT_DELAY 6
+select * from information_schema.session_variables where variable_name='innodb_spin_wait_delay';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_SPIN_WAIT_DELAY 6
+set global innodb_spin_wait_delay=10;
+select @@global.innodb_spin_wait_delay;
+@@global.innodb_spin_wait_delay
+10
+select * from information_schema.global_variables where variable_name='innodb_spin_wait_delay';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_SPIN_WAIT_DELAY 10
+select * from information_schema.session_variables where variable_name='innodb_spin_wait_delay';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_SPIN_WAIT_DELAY 10
+set session innodb_spin_wait_delay=1;
+ERROR HY000: Variable 'innodb_spin_wait_delay' is a GLOBAL variable and should be set with SET GLOBAL
+set global innodb_spin_wait_delay=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_spin_wait_delay'
+set global innodb_spin_wait_delay=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_spin_wait_delay'
+set global innodb_spin_wait_delay="foo";
+ERROR 42000: Incorrect argument type to variable 'innodb_spin_wait_delay'
+set global innodb_spin_wait_delay=-7;
+Warnings:
+Warning 1292 Truncated incorrect innodb_spin_wait_delay value: '-7'
+select @@global.innodb_spin_wait_delay;
+@@global.innodb_spin_wait_delay
+0
+select * from information_schema.global_variables where variable_name='innodb_spin_wait_delay';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_SPIN_WAIT_DELAY 0
+SET @@global.innodb_spin_wait_delay = @start_global_value;
+SELECT @@global.innodb_spin_wait_delay;
+@@global.innodb_spin_wait_delay
+6
diff --git a/mysql-test/suite/sys_vars/r/innodb_stats_on_metadata_basic.result b/mysql-test/suite/sys_vars/r/innodb_stats_on_metadata_basic.result
new file mode 100644
index 00000000000..d3410d7b9c1
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_stats_on_metadata_basic.result
@@ -0,0 +1,92 @@
+SET @start_global_value = @@global.innodb_stats_on_metadata;
+SELECT @start_global_value;
+@start_global_value
+1
+Valid values are 'ON' and 'OFF'
+select @@global.innodb_stats_on_metadata in (0, 1);
+@@global.innodb_stats_on_metadata in (0, 1)
+1
+select @@global.innodb_stats_on_metadata;
+@@global.innodb_stats_on_metadata
+1
+select @@session.innodb_stats_on_metadata;
+ERROR HY000: Variable 'innodb_stats_on_metadata' is a GLOBAL variable
+show global variables like 'innodb_stats_on_metadata';
+Variable_name Value
+innodb_stats_on_metadata ON
+show session variables like 'innodb_stats_on_metadata';
+Variable_name Value
+innodb_stats_on_metadata ON
+select * from information_schema.global_variables where variable_name='innodb_stats_on_metadata';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_ON_METADATA ON
+select * from information_schema.session_variables where variable_name='innodb_stats_on_metadata';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_ON_METADATA ON
+set global innodb_stats_on_metadata='OFF';
+select @@global.innodb_stats_on_metadata;
+@@global.innodb_stats_on_metadata
+0
+select * from information_schema.global_variables where variable_name='innodb_stats_on_metadata';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_ON_METADATA OFF
+select * from information_schema.session_variables where variable_name='innodb_stats_on_metadata';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_ON_METADATA OFF
+set @@global.innodb_stats_on_metadata=1;
+select @@global.innodb_stats_on_metadata;
+@@global.innodb_stats_on_metadata
+1
+select * from information_schema.global_variables where variable_name='innodb_stats_on_metadata';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_ON_METADATA ON
+select * from information_schema.session_variables where variable_name='innodb_stats_on_metadata';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_ON_METADATA ON
+set global innodb_stats_on_metadata=0;
+select @@global.innodb_stats_on_metadata;
+@@global.innodb_stats_on_metadata
+0
+select * from information_schema.global_variables where variable_name='innodb_stats_on_metadata';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_ON_METADATA OFF
+select * from information_schema.session_variables where variable_name='innodb_stats_on_metadata';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_ON_METADATA OFF
+set @@global.innodb_stats_on_metadata='ON';
+select @@global.innodb_stats_on_metadata;
+@@global.innodb_stats_on_metadata
+1
+select * from information_schema.global_variables where variable_name='innodb_stats_on_metadata';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_ON_METADATA ON
+select * from information_schema.session_variables where variable_name='innodb_stats_on_metadata';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_ON_METADATA ON
+set session innodb_stats_on_metadata='OFF';
+ERROR HY000: Variable 'innodb_stats_on_metadata' is a GLOBAL variable and should be set with SET GLOBAL
+set @@session.innodb_stats_on_metadata='ON';
+ERROR HY000: Variable 'innodb_stats_on_metadata' is a GLOBAL variable and should be set with SET GLOBAL
+set global innodb_stats_on_metadata=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_stats_on_metadata'
+set global innodb_stats_on_metadata=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_stats_on_metadata'
+set global innodb_stats_on_metadata=2;
+ERROR 42000: Variable 'innodb_stats_on_metadata' can't be set to the value of '2'
+NOTE: The following should fail with ER_WRONG_VALUE_FOR_VAR (BUG#50643)
+set global innodb_stats_on_metadata=-3;
+select @@global.innodb_stats_on_metadata;
+@@global.innodb_stats_on_metadata
+1
+select * from information_schema.global_variables where variable_name='innodb_stats_on_metadata';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_ON_METADATA ON
+select * from information_schema.session_variables where variable_name='innodb_stats_on_metadata';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_ON_METADATA ON
+set global innodb_stats_on_metadata='AUTO';
+ERROR 42000: Variable 'innodb_stats_on_metadata' can't be set to the value of 'AUTO'
+SET @@global.innodb_stats_on_metadata = @start_global_value;
+SELECT @@global.innodb_stats_on_metadata;
+@@global.innodb_stats_on_metadata
+1
diff --git a/mysql-test/suite/sys_vars/r/innodb_stats_sample_pages_basic.result b/mysql-test/suite/sys_vars/r/innodb_stats_sample_pages_basic.result
new file mode 100644
index 00000000000..153ae95a4fe
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_stats_sample_pages_basic.result
@@ -0,0 +1,56 @@
+SET @start_global_value = @@global.innodb_stats_sample_pages;
+SELECT @start_global_value;
+@start_global_value
+8
+Valid values are one or above
+select @@global.innodb_stats_sample_pages >=1;
+@@global.innodb_stats_sample_pages >=1
+1
+select @@global.innodb_stats_sample_pages;
+@@global.innodb_stats_sample_pages
+8
+select @@session.innodb_stats_sample_pages;
+ERROR HY000: Variable 'innodb_stats_sample_pages' is a GLOBAL variable
+show global variables like 'innodb_stats_sample_pages';
+Variable_name Value
+innodb_stats_sample_pages 8
+show session variables like 'innodb_stats_sample_pages';
+Variable_name Value
+innodb_stats_sample_pages 8
+select * from information_schema.global_variables where variable_name='innodb_stats_sample_pages';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_SAMPLE_PAGES 8
+select * from information_schema.session_variables where variable_name='innodb_stats_sample_pages';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_SAMPLE_PAGES 8
+set global innodb_stats_sample_pages=10;
+select @@global.innodb_stats_sample_pages;
+@@global.innodb_stats_sample_pages
+10
+select * from information_schema.global_variables where variable_name='innodb_stats_sample_pages';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_SAMPLE_PAGES 10
+select * from information_schema.session_variables where variable_name='innodb_stats_sample_pages';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_SAMPLE_PAGES 10
+set session innodb_stats_sample_pages=1;
+ERROR HY000: Variable 'innodb_stats_sample_pages' is a GLOBAL variable and should be set with SET GLOBAL
+set global innodb_stats_sample_pages=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_stats_sample_pages'
+set global innodb_stats_sample_pages=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_stats_sample_pages'
+set global innodb_stats_sample_pages="foo";
+ERROR 42000: Incorrect argument type to variable 'innodb_stats_sample_pages'
+set global innodb_stats_sample_pages=-7;
+Warnings:
+Warning 1292 Truncated incorrect innodb_stats_sample_pages value: '-7'
+select @@global.innodb_stats_sample_pages;
+@@global.innodb_stats_sample_pages
+1
+select * from information_schema.global_variables where variable_name='innodb_stats_sample_pages';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STATS_SAMPLE_PAGES 1
+SET @@global.innodb_stats_sample_pages = @start_global_value;
+SELECT @@global.innodb_stats_sample_pages;
+@@global.innodb_stats_sample_pages
+8
diff --git a/mysql-test/suite/sys_vars/r/innodb_strict_mode_basic.result b/mysql-test/suite/sys_vars/r/innodb_strict_mode_basic.result
new file mode 100644
index 00000000000..200f9166215
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_strict_mode_basic.result
@@ -0,0 +1,120 @@
+SET @start_global_value = @@global.innodb_strict_mode;
+SELECT @start_global_value;
+@start_global_value
+0
+Valid values are 'ON' and 'OFF'
+select @@global.innodb_strict_mode in (0, 1);
+@@global.innodb_strict_mode in (0, 1)
+1
+select @@global.innodb_strict_mode;
+@@global.innodb_strict_mode
+0
+select @@session.innodb_strict_mode in (0, 1);
+@@session.innodb_strict_mode in (0, 1)
+1
+select @@session.innodb_strict_mode;
+@@session.innodb_strict_mode
+0
+show global variables like 'innodb_strict_mode';
+Variable_name Value
+innodb_strict_mode OFF
+show session variables like 'innodb_strict_mode';
+Variable_name Value
+innodb_strict_mode OFF
+select * from information_schema.global_variables where variable_name='innodb_strict_mode';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STRICT_MODE OFF
+select * from information_schema.session_variables where variable_name='innodb_strict_mode';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STRICT_MODE OFF
+set global innodb_strict_mode='OFF';
+set session innodb_strict_mode='OFF';
+select @@global.innodb_strict_mode;
+@@global.innodb_strict_mode
+0
+select @@session.innodb_strict_mode;
+@@session.innodb_strict_mode
+0
+select * from information_schema.global_variables where variable_name='innodb_strict_mode';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STRICT_MODE OFF
+select * from information_schema.session_variables where variable_name='innodb_strict_mode';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STRICT_MODE OFF
+set @@global.innodb_strict_mode=1;
+set @@session.innodb_strict_mode=1;
+select @@global.innodb_strict_mode;
+@@global.innodb_strict_mode
+1
+select @@session.innodb_strict_mode;
+@@session.innodb_strict_mode
+1
+select * from information_schema.global_variables where variable_name='innodb_strict_mode';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STRICT_MODE ON
+select * from information_schema.session_variables where variable_name='innodb_strict_mode';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STRICT_MODE ON
+set global innodb_strict_mode=0;
+set session innodb_strict_mode=0;
+select @@global.innodb_strict_mode;
+@@global.innodb_strict_mode
+0
+select @@session.innodb_strict_mode;
+@@session.innodb_strict_mode
+0
+select * from information_schema.global_variables where variable_name='innodb_strict_mode';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STRICT_MODE OFF
+select * from information_schema.session_variables where variable_name='innodb_strict_mode';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STRICT_MODE OFF
+set @@global.innodb_strict_mode='ON';
+set @@session.innodb_strict_mode='ON';
+select @@global.innodb_strict_mode;
+@@global.innodb_strict_mode
+1
+select @@session.innodb_strict_mode;
+@@session.innodb_strict_mode
+1
+select * from information_schema.global_variables where variable_name='innodb_strict_mode';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STRICT_MODE ON
+select * from information_schema.session_variables where variable_name='innodb_strict_mode';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STRICT_MODE ON
+set global innodb_strict_mode=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_strict_mode'
+set session innodb_strict_mode=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_strict_mode'
+set global innodb_strict_mode=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_strict_mode'
+set session innodb_strict_mode=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_strict_mode'
+set global innodb_strict_mode=2;
+ERROR 42000: Variable 'innodb_strict_mode' can't be set to the value of '2'
+set session innodb_strict_mode=2;
+ERROR 42000: Variable 'innodb_strict_mode' can't be set to the value of '2'
+set global innodb_strict_mode='AUTO';
+ERROR 42000: Variable 'innodb_strict_mode' can't be set to the value of 'AUTO'
+set session innodb_strict_mode='AUTO';
+ERROR 42000: Variable 'innodb_strict_mode' can't be set to the value of 'AUTO'
+NOTE: The following should fail with ER_WRONG_VALUE_FOR_VAR (BUG#50643)
+set global innodb_strict_mode=-3;
+set session innodb_strict_mode=-7;
+select @@global.innodb_strict_mode;
+@@global.innodb_strict_mode
+1
+select @@session.innodb_strict_mode;
+@@session.innodb_strict_mode
+1
+select * from information_schema.global_variables where variable_name='innodb_strict_mode';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STRICT_MODE ON
+select * from information_schema.session_variables where variable_name='innodb_strict_mode';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_STRICT_MODE ON
+SET @@global.innodb_strict_mode = @start_global_value;
+SELECT @@global.innodb_strict_mode;
+@@global.innodb_strict_mode
+0
diff --git a/mysql-test/suite/sys_vars/r/innodb_thread_sleep_delay_basic.result b/mysql-test/suite/sys_vars/r/innodb_thread_sleep_delay_basic.result
index 979bfd930ca..fb7093ec3b3 100644
--- a/mysql-test/suite/sys_vars/r/innodb_thread_sleep_delay_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_thread_sleep_delay_basic.result
@@ -1,84 +1,56 @@
-SET @global_start_value = @@global.innodb_thread_sleep_delay;
-SELECT @global_start_value;
-@global_start_value
+SET @start_global_value = @@global.innodb_thread_sleep_delay;
+SELECT @start_global_value;
+@start_global_value
10000
-'#--------------------FN_DYNVARS_046_01------------------------#'
-SET @@global.innodb_thread_sleep_delay = 0;
-SET @@global.innodb_thread_sleep_delay = DEFAULT;
-SELECT @@global.innodb_thread_sleep_delay;
+Valid values are zero or above
+select @@global.innodb_thread_sleep_delay >=0;
+@@global.innodb_thread_sleep_delay >=0
+1
+select @@global.innodb_thread_sleep_delay;
@@global.innodb_thread_sleep_delay
10000
-'#---------------------FN_DYNVARS_046_02-------------------------#'
-SET innodb_thread_sleep_delay = 1;
+select @@session.innodb_thread_sleep_delay;
+ERROR HY000: Variable 'innodb_thread_sleep_delay' is a GLOBAL variable
+show global variables like 'innodb_thread_sleep_delay';
+Variable_name Value
+innodb_thread_sleep_delay 10000
+show session variables like 'innodb_thread_sleep_delay';
+Variable_name Value
+innodb_thread_sleep_delay 10000
+select * from information_schema.global_variables where variable_name='innodb_thread_sleep_delay';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_THREAD_SLEEP_DELAY 10000
+select * from information_schema.session_variables where variable_name='innodb_thread_sleep_delay';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_THREAD_SLEEP_DELAY 10000
+set global innodb_thread_sleep_delay=10;
+select @@global.innodb_thread_sleep_delay;
+@@global.innodb_thread_sleep_delay
+10
+select * from information_schema.global_variables where variable_name='innodb_thread_sleep_delay';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_THREAD_SLEEP_DELAY 10
+select * from information_schema.session_variables where variable_name='innodb_thread_sleep_delay';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_THREAD_SLEEP_DELAY 10
+set session innodb_thread_sleep_delay=1;
ERROR HY000: Variable 'innodb_thread_sleep_delay' is a GLOBAL variable and should be set with SET GLOBAL
-SELECT @@innodb_thread_sleep_delay;
-@@innodb_thread_sleep_delay
-10000
-SELECT local.innodb_thread_sleep_delay;
-ERROR 42S02: Unknown table 'local' in field list
-SET global innodb_thread_sleep_delay = 0;
-SELECT @@global.innodb_thread_sleep_delay;
-@@global.innodb_thread_sleep_delay
-0
-'#--------------------FN_DYNVARS_046_03------------------------#'
-SET @@global.innodb_thread_sleep_delay = 0;
-SELECT @@global.innodb_thread_sleep_delay;
-@@global.innodb_thread_sleep_delay
-0
-SET @@global.innodb_thread_sleep_delay = 1;
-SELECT @@global.innodb_thread_sleep_delay;
-@@global.innodb_thread_sleep_delay
-1
-SET @@global.innodb_thread_sleep_delay = 4294967295;
-SELECT @@global.innodb_thread_sleep_delay;
-@@global.innodb_thread_sleep_delay
-4294967295
-'#--------------------FN_DYNVARS_046_04-------------------------#'
-SET @@global.innodb_thread_sleep_delay = -1;
-SELECT @@global.innodb_autoextend_increment;
-@@global.innodb_autoextend_increment
-8
-SET @@global.innodb_thread_sleep_delay = "T";
+set global innodb_thread_sleep_delay=1.1;
ERROR 42000: Incorrect argument type to variable 'innodb_thread_sleep_delay'
-SELECT @@global.innodb_autoextend_increment;
-@@global.innodb_autoextend_increment
-8
-SET @@global.innodb_thread_sleep_delay = "Y";
+set global innodb_thread_sleep_delay=1e1;
ERROR 42000: Incorrect argument type to variable 'innodb_thread_sleep_delay'
-SELECT @@global.innodb_autoextend_increment;
-@@global.innodb_autoextend_increment
-8
-SET @@global.innodb_thread_sleep_delay = 1001;
-SELECT @@global.innodb_autoextend_increment;
-@@global.innodb_autoextend_increment
-8
-'#----------------------FN_DYNVARS_046_05------------------------#'
-SELECT @@global.innodb_thread_sleep_delay = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_thread_sleep_delay';
-@@global.innodb_thread_sleep_delay = VARIABLE_VALUE
-1
-SELECT @@global.innodb_thread_sleep_delay;
-@@global.innodb_thread_sleep_delay
-1001
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_thread_sleep_delay';
-VARIABLE_VALUE
-1001
-'#---------------------FN_DYNVARS_046_06-------------------------#'
-SET @@global.innodb_thread_sleep_delay = OFF;
+set global innodb_thread_sleep_delay="foo";
ERROR 42000: Incorrect argument type to variable 'innodb_thread_sleep_delay'
-SELECT @@global.innodb_thread_sleep_delay;
-@@global.innodb_thread_sleep_delay
-1001
-SET @@global.innodb_thread_sleep_delay = ON;
-ERROR 42000: Incorrect argument type to variable 'innodb_thread_sleep_delay'
-SELECT @@global.innodb_thread_sleep_delay;
+set global innodb_thread_sleep_delay=-7;
+Warnings:
+Warning 1292 Truncated incorrect innodb_thread_sleep_delay value: '-7'
+select @@global.innodb_thread_sleep_delay;
@@global.innodb_thread_sleep_delay
-1001
-'#---------------------FN_DYNVARS_046_07----------------------#'
-SET @@global.innodb_thread_sleep_delay = TRUE;
-SELECT @@global.innodb_thread_sleep_delay;
-@@global.innodb_thread_sleep_delay
-1
-SET @@global.innodb_thread_sleep_delay = FALSE;
+0
+select * from information_schema.global_variables where variable_name='innodb_thread_sleep_delay';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_THREAD_SLEEP_DELAY 0
+SET @@global.innodb_thread_sleep_delay = @start_global_value;
SELECT @@global.innodb_thread_sleep_delay;
@@global.innodb_thread_sleep_delay
-0
+10000
diff --git a/mysql-test/suite/sys_vars/r/innodb_use_sys_malloc_basic.result b/mysql-test/suite/sys_vars/r/innodb_use_sys_malloc_basic.result
new file mode 100644
index 00000000000..0c2685b1a49
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_use_sys_malloc_basic.result
@@ -0,0 +1,25 @@
+Valid values are 'ON' and 'OFF'
+select @@global.innodb_adaptive_flushing in (0, 1);
+@@global.innodb_adaptive_flushing in (0, 1)
+1
+select @@global.innodb_use_sys_malloc;
+@@global.innodb_use_sys_malloc
+1
+select @@session.innodb_use_sys_malloc;
+ERROR HY000: Variable 'innodb_use_sys_malloc' is a GLOBAL variable
+show global variables like 'innodb_use_sys_malloc';
+Variable_name Value
+innodb_use_sys_malloc ON
+show session variables like 'innodb_use_sys_malloc';
+Variable_name Value
+innodb_use_sys_malloc ON
+select * from information_schema.global_variables where variable_name='innodb_use_sys_malloc';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_USE_SYS_MALLOC ON
+select * from information_schema.session_variables where variable_name='innodb_use_sys_malloc';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_USE_SYS_MALLOC ON
+set global innodb_use_sys_malloc=1;
+ERROR HY000: Variable 'innodb_use_sys_malloc' is a read only variable
+set session innodb_use_sys_malloc=1;
+ERROR HY000: Variable 'innodb_use_sys_malloc' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/innodb_version_basic.result b/mysql-test/suite/sys_vars/r/innodb_version_basic.result
new file mode 100644
index 00000000000..759b5048512
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_version_basic.result
@@ -0,0 +1,17 @@
+select @@global.innodb_version;
+@@global.innodb_version
+x.y.z
+select @@session.innodb_version;
+ERROR HY000: Variable 'innodb_version' is a GLOBAL variable
+show global variables like 'innodb_version' disabled so to not change with every version;
+show session variables like 'innodb_version' disabled so to not change with every version;
+select VARIABLE_VALUE=@@global.innodb_version from information_schema.global_variables where variable_name='innodb_version';
+VARIABLE_VALUE=@@global.innodb_version
+1
+select VARIABLE_VALUE=@@global.innodb_version from information_schema.session_variables where variable_name='innodb_version';
+VARIABLE_VALUE=@@global.innodb_version
+1
+set global innodb_version=1;
+ERROR HY000: Variable 'innodb_version' is a read only variable
+set session innodb_version=1;
+ERROR HY000: Variable 'innodb_version' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/innodb_write_io_threads_basic.result b/mysql-test/suite/sys_vars/r/innodb_write_io_threads_basic.result
new file mode 100644
index 00000000000..a363f4292dd
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_write_io_threads_basic.result
@@ -0,0 +1,21 @@
+select @@global.innodb_write_io_threads;
+@@global.innodb_write_io_threads
+2
+select @@session.innodb_write_io_threads;
+ERROR HY000: Variable 'innodb_write_io_threads' is a GLOBAL variable
+show global variables like 'innodb_write_io_threads';
+Variable_name Value
+innodb_write_io_threads 2
+show session variables like 'innodb_write_io_threads';
+Variable_name Value
+innodb_write_io_threads 2
+select * from information_schema.global_variables where variable_name='innodb_write_io_threads';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_WRITE_IO_THREADS 2
+select * from information_schema.session_variables where variable_name='innodb_write_io_threads';
+VARIABLE_NAME VARIABLE_VALUE
+INNODB_WRITE_IO_THREADS 2
+set global innodb_write_io_threads=1;
+ERROR HY000: Variable 'innodb_write_io_threads' is a read only variable
+set session innodb_write_io_threads=1;
+ERROR HY000: Variable 'innodb_write_io_threads' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/last_insert_id_basic.result b/mysql-test/suite/sys_vars/r/last_insert_id_basic.result
index c29a313b9e7..a4ae20dbabb 100644
--- a/mysql-test/suite/sys_vars/r/last_insert_id_basic.result
+++ b/mysql-test/suite/sys_vars/r/last_insert_id_basic.result
@@ -13,12 +13,24 @@ VARIABLE_NAME VARIABLE_VALUE
select * from information_schema.session_variables where variable_name='last_insert_id';
VARIABLE_NAME VARIABLE_VALUE
LAST_INSERT_ID 0
-set session last_insert_id=1;
+set global last_insert_id=99;
+ERROR HY000: Variable 'last_insert_id' is a SESSION variable and can't be used with SET GLOBAL
+set session last_insert_id=42;
+select @@global.last_insert_id;
+ERROR HY000: Variable 'last_insert_id' is a SESSION variable
select @@session.last_insert_id;
@@session.last_insert_id
-1
-set global last_insert_id=1;
-ERROR HY000: Variable 'last_insert_id' is a SESSION variable and can't be used with SET GLOBAL
+42
+show global variables like 'last_insert_id';
+Variable_name Value
+show session variables like 'last_insert_id';
+Variable_name Value
+last_insert_id 42
+select * from information_schema.global_variables where variable_name='last_insert_id';
+VARIABLE_NAME VARIABLE_VALUE
+select * from information_schema.session_variables where variable_name='last_insert_id';
+VARIABLE_NAME VARIABLE_VALUE
+LAST_INSERT_ID 42
set session last_insert_id=1.1;
ERROR 42000: Incorrect argument type to variable 'last_insert_id'
set session last_insert_id=1e1;
diff --git a/mysql-test/suite/sys_vars/r/lc_messages_basic.result b/mysql-test/suite/sys_vars/r/lc_messages_basic.result
index e765dd53516..b9350828dba 100644
--- a/mysql-test/suite/sys_vars/r/lc_messages_basic.result
+++ b/mysql-test/suite/sys_vars/r/lc_messages_basic.result
@@ -29,13 +29,19 @@ select @@session.lc_messages;
@@session.lc_messages
ja_JP
set global lc_messages="en_US";
+set session lc_messages="en_GB";
select @@global.lc_messages;
@@global.lc_messages
en_US
-set session lc_messages="en_GB";
select @@session.lc_messages;
@@session.lc_messages
en_GB
+select * from information_schema.global_variables where variable_name='lc_messages';
+VARIABLE_NAME VARIABLE_VALUE
+LC_MESSAGES en_US
+select * from information_schema.session_variables where variable_name='lc_messages';
+VARIABLE_NAME VARIABLE_VALUE
+LC_MESSAGES en_GB
set global lc_messages=1.1;
ERROR 42000: Incorrect argument type to variable 'lc_messages'
set global lc_messages=1e1;
diff --git a/mysql-test/suite/sys_vars/r/log_slow_queries_basic.result b/mysql-test/suite/sys_vars/r/log_slow_queries_basic.result
index ca530ebb41a..1748406b74b 100644
--- a/mysql-test/suite/sys_vars/r/log_slow_queries_basic.result
+++ b/mysql-test/suite/sys_vars/r/log_slow_queries_basic.result
@@ -65,12 +65,22 @@ Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed i
SELECT @@global.log_slow_queries;
@@global.log_slow_queries
0
+SELECT IF(@@global.log_slow_queries, "ON", "OFF") = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='log_slow_queries';
+IF(@@global.log_slow_queries, "ON", "OFF") = VARIABLE_VALUE
+1
SET @@global.log_slow_queries = 1;
Warnings:
Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
SELECT @@global.log_slow_queries;
@@global.log_slow_queries
1
+SELECT IF(@@global.log_slow_queries, "ON", "OFF") = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='log_slow_queries';
+IF(@@global.log_slow_queries, "ON", "OFF") = VARIABLE_VALUE
+1
'#---------------------FN_DYNVARS_004_07----------------------#'
SET @@global.log_slow_queries = TRUE;
Warnings:
@@ -78,12 +88,22 @@ Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed i
SELECT @@global.log_slow_queries;
@@global.log_slow_queries
1
+SELECT IF(@@global.log_slow_queries, "ON", "OFF") = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='log_slow_queries';
+IF(@@global.log_slow_queries, "ON", "OFF") = VARIABLE_VALUE
+1
SET @@global.log_slow_queries = FALSE;
Warnings:
Warning 1287 The syntax '@@log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '@@slow_query_log' instead
SELECT @@global.log_slow_queries;
@@global.log_slow_queries
0
+SELECT IF(@@global.log_slow_queries, "ON", "OFF") = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='log_slow_queries';
+IF(@@global.log_slow_queries, "ON", "OFF") = VARIABLE_VALUE
+1
'#---------------------FN_DYNVARS_004_08----------------------#'
SET @@global.log_slow_queries = ON;
Warnings:
diff --git a/mysql-test/suite/sys_vars/r/lower_case_file_system_basic.result b/mysql-test/suite/sys_vars/r/lower_case_file_system_basic.result
index 0488ed30dc0..4ecd81685c5 100644
--- a/mysql-test/suite/sys_vars/r/lower_case_file_system_basic.result
+++ b/mysql-test/suite/sys_vars/r/lower_case_file_system_basic.result
@@ -3,18 +3,19 @@ select @@global.lower_case_file_system=2;
0
select @@session.lower_case_file_system;
ERROR HY000: Variable 'lower_case_file_system' is a GLOBAL variable
-show global variables like 'lower_case_file_system';
-Variable_name Value
-lower_case_file_system #
-show session variables like 'lower_case_file_system';
-Variable_name Value
-lower_case_file_system #
-select * from information_schema.global_variables where variable_name='lower_case_file_system';
-VARIABLE_NAME VARIABLE_VALUE
-LOWER_CASE_FILE_SYSTEM #
-select * from information_schema.session_variables where variable_name='lower_case_file_system';
-VARIABLE_NAME VARIABLE_VALUE
-LOWER_CASE_FILE_SYSTEM #
+SELECT @@global.lower_case_file_system in (0,1);
+@@global.lower_case_file_system in (0,1)
+1
+SELECT IF(@@global.lower_case_file_system, "ON", "OFF") = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='lower_case_file_system';
+IF(@@global.lower_case_file_system, "ON", "OFF") = VARIABLE_VALUE
+1
+SELECT IF(@@global.lower_case_file_system, "ON", "OFF") = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.SESSION_VARIABLES
+WHERE VARIABLE_NAME='lower_case_file_system';
+IF(@@global.lower_case_file_system, "ON", "OFF") = VARIABLE_VALUE
+1
set global lower_case_file_system=1;
ERROR HY000: Variable 'lower_case_file_system' is a read only variable
set session lower_case_file_system=1;
diff --git a/mysql-test/suite/sys_vars/r/lower_case_table_names_basic.result b/mysql-test/suite/sys_vars/r/lower_case_table_names_basic.result
index d7dc6d69e30..cae6ecb215c 100644
--- a/mysql-test/suite/sys_vars/r/lower_case_table_names_basic.result
+++ b/mysql-test/suite/sys_vars/r/lower_case_table_names_basic.result
@@ -3,18 +3,19 @@ select @@global.lower_case_table_names=20;
0
select @@session.lower_case_table_names;
ERROR HY000: Variable 'lower_case_table_names' is a GLOBAL variable
-show global variables like 'lower_case_table_names';
-Variable_name Value
-lower_case_table_names #
-show session variables like 'lower_case_table_names';
-Variable_name Value
-lower_case_table_names #
-select * from information_schema.global_variables where variable_name='lower_case_table_names';
-VARIABLE_NAME VARIABLE_VALUE
-LOWER_CASE_TABLE_NAMES #
-select * from information_schema.session_variables where variable_name='lower_case_table_names';
-VARIABLE_NAME VARIABLE_VALUE
-LOWER_CASE_TABLE_NAMES #
+SELECT @@global.lower_case_table_names in (0,1,2);
+@@global.lower_case_table_names in (0,1,2)
+1
+SELECT @@global.lower_case_table_names = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='lower_case_table_names';
+@@global.lower_case_table_names = VARIABLE_VALUE
+1
+SELECT @@global.lower_case_table_names = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='lower_case_table_names';
+@@global.lower_case_table_names = VARIABLE_VALUE
+1
set global lower_case_table_names=1;
ERROR HY000: Variable 'lower_case_table_names' is a read only variable
set session lower_case_table_names=1;
diff --git a/mysql-test/suite/sys_vars/r/max_join_size_basic.result b/mysql-test/suite/sys_vars/r/max_join_size_basic.result
index 5cebefe9ea3..acf9f123238 100644
--- a/mysql-test/suite/sys_vars/r/max_join_size_basic.result
+++ b/mysql-test/suite/sys_vars/r/max_join_size_basic.result
@@ -21,13 +21,25 @@ select * from information_schema.session_variables where variable_name='max_join
VARIABLE_NAME VARIABLE_VALUE
MAX_JOIN_SIZE 18446744073709551615
set global max_join_size=10;
+set session max_join_size=20;
select @@global.max_join_size;
@@global.max_join_size
10
-set session max_join_size=20;
select @@session.max_join_size;
@@session.max_join_size
20
+show global variables like 'max_join_size';
+Variable_name Value
+max_join_size 10
+show session variables like 'max_join_size';
+Variable_name Value
+max_join_size 20
+select * from information_schema.global_variables where variable_name='max_join_size';
+VARIABLE_NAME VARIABLE_VALUE
+MAX_JOIN_SIZE 10
+select * from information_schema.session_variables where variable_name='max_join_size';
+VARIABLE_NAME VARIABLE_VALUE
+MAX_JOIN_SIZE 20
set global max_join_size=1.1;
ERROR 42000: Incorrect argument type to variable 'max_join_size'
set global max_join_size=1e1;
diff --git a/mysql-test/suite/sys_vars/r/old_alter_table_basic.result b/mysql-test/suite/sys_vars/r/old_alter_table_basic.result
index 0619235b8e0..5cc17917242 100644
--- a/mysql-test/suite/sys_vars/r/old_alter_table_basic.result
+++ b/mysql-test/suite/sys_vars/r/old_alter_table_basic.result
@@ -21,13 +21,25 @@ select * from information_schema.session_variables where variable_name='old_alte
VARIABLE_NAME VARIABLE_VALUE
OLD_ALTER_TABLE OFF
set global old_alter_table=1;
+set session old_alter_table=ON;
select @@global.old_alter_table;
@@global.old_alter_table
1
-set session old_alter_table=ON;
select @@session.old_alter_table;
@@session.old_alter_table
1
+show global variables like 'old_alter_table';
+Variable_name Value
+old_alter_table ON
+show session variables like 'old_alter_table';
+Variable_name Value
+old_alter_table ON
+select * from information_schema.global_variables where variable_name='old_alter_table';
+VARIABLE_NAME VARIABLE_VALUE
+OLD_ALTER_TABLE ON
+select * from information_schema.session_variables where variable_name='old_alter_table';
+VARIABLE_NAME VARIABLE_VALUE
+OLD_ALTER_TABLE ON
set global old_alter_table=1.1;
ERROR 42000: Incorrect argument type to variable 'old_alter_table'
set global old_alter_table=1e1;
diff --git a/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result b/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result
index 2d648259a26..acc8cd699f8 100644
--- a/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result
+++ b/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result
@@ -21,21 +21,33 @@ select * from information_schema.session_variables where variable_name='optimize
VARIABLE_NAME VARIABLE_VALUE
OPTIMIZER_SWITCH index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
set global optimizer_switch=10;
+set session optimizer_switch=5;
select @@global.optimizer_switch;
@@global.optimizer_switch
index_merge=off,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on,engine_condition_pushdown=off
-set session optimizer_switch=5;
select @@session.optimizer_switch;
@@session.optimizer_switch
index_merge=on,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,engine_condition_pushdown=off
set global optimizer_switch="index_merge_sort_union=on";
+set session optimizer_switch="index_merge=off";
select @@global.optimizer_switch;
@@global.optimizer_switch
index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
-set session optimizer_switch="index_merge=off";
select @@session.optimizer_switch;
@@session.optimizer_switch
index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,engine_condition_pushdown=off
+show global variables like 'optimizer_switch';
+Variable_name Value
+optimizer_switch index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+show session variables like 'optimizer_switch';
+Variable_name Value
+optimizer_switch index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,engine_condition_pushdown=off
+select * from information_schema.global_variables where variable_name='optimizer_switch';
+VARIABLE_NAME VARIABLE_VALUE
+OPTIMIZER_SWITCH index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=off
+select * from information_schema.session_variables where variable_name='optimizer_switch';
+VARIABLE_NAME VARIABLE_VALUE
+OPTIMIZER_SWITCH index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=off,engine_condition_pushdown=off
set session optimizer_switch="default";
select @@session.optimizer_switch;
@@session.optimizer_switch
diff --git a/mysql-test/suite/sys_vars/r/profiling_basic.result b/mysql-test/suite/sys_vars/r/profiling_basic.result
index 26704b6b725..4f987d690ba 100644
--- a/mysql-test/suite/sys_vars/r/profiling_basic.result
+++ b/mysql-test/suite/sys_vars/r/profiling_basic.result
@@ -21,13 +21,45 @@ select * from information_schema.session_variables where variable_name='profilin
VARIABLE_NAME VARIABLE_VALUE
PROFILING OFF
set global profiling=1;
+set session profiling=ON;
select @@global.profiling;
@@global.profiling
1
-set session profiling=ON;
select @@session.profiling;
@@session.profiling
1
+show global variables like 'profiling';
+Variable_name Value
+profiling ON
+show session variables like 'profiling';
+Variable_name Value
+profiling ON
+select * from information_schema.global_variables where variable_name='profiling';
+VARIABLE_NAME VARIABLE_VALUE
+PROFILING ON
+select * from information_schema.session_variables where variable_name='profiling';
+VARIABLE_NAME VARIABLE_VALUE
+PROFILING ON
+set global profiling=0;
+set session profiling=OFF;
+select @@global.profiling;
+@@global.profiling
+0
+select @@session.profiling;
+@@session.profiling
+0
+show global variables like 'profiling';
+Variable_name Value
+profiling OFF
+show session variables like 'profiling';
+Variable_name Value
+profiling OFF
+select * from information_schema.global_variables where variable_name='profiling';
+VARIABLE_NAME VARIABLE_VALUE
+PROFILING OFF
+select * from information_schema.session_variables where variable_name='profiling';
+VARIABLE_NAME VARIABLE_VALUE
+PROFILING OFF
set global profiling=1.1;
ERROR 42000: Incorrect argument type to variable 'profiling'
set global profiling=1e1;
diff --git a/mysql-test/suite/sys_vars/r/profiling_history_size_basic.result b/mysql-test/suite/sys_vars/r/profiling_history_size_basic.result
index be92d075326..396d280ad18 100644
--- a/mysql-test/suite/sys_vars/r/profiling_history_size_basic.result
+++ b/mysql-test/suite/sys_vars/r/profiling_history_size_basic.result
@@ -21,13 +21,25 @@ select * from information_schema.session_variables where variable_name='profilin
VARIABLE_NAME VARIABLE_VALUE
PROFILING_HISTORY_SIZE 15
set global profiling_history_size=10;
+set session profiling_history_size=20;
select @@global.profiling_history_size;
@@global.profiling_history_size
10
-set session profiling_history_size=20;
select @@session.profiling_history_size;
@@session.profiling_history_size
20
+show global variables like 'profiling_history_size';
+Variable_name Value
+profiling_history_size 10
+show session variables like 'profiling_history_size';
+Variable_name Value
+profiling_history_size 20
+select * from information_schema.global_variables where variable_name='profiling_history_size';
+VARIABLE_NAME VARIABLE_VALUE
+PROFILING_HISTORY_SIZE 10
+select * from information_schema.session_variables where variable_name='profiling_history_size';
+VARIABLE_NAME VARIABLE_VALUE
+PROFILING_HISTORY_SIZE 20
set global profiling_history_size=1.1;
ERROR 42000: Incorrect argument type to variable 'profiling_history_size'
set global profiling_history_size=1e1;
diff --git a/mysql-test/suite/sys_vars/r/pseudo_thread_id_basic.result b/mysql-test/suite/sys_vars/r/pseudo_thread_id_basic.result
index e6619e206f1..ee6169a9e35 100644
--- a/mysql-test/suite/sys_vars/r/pseudo_thread_id_basic.result
+++ b/mysql-test/suite/sys_vars/r/pseudo_thread_id_basic.result
@@ -1,22 +1,29 @@
select @@global.pseudo_thread_id;
ERROR HY000: Variable 'pseudo_thread_id' is a SESSION variable
-select @@session.pseudo_thread_id=0;
-@@session.pseudo_thread_id=0
-0
+select @@session.pseudo_thread_id between 1 and 10000;
+@@session.pseudo_thread_id between 1 and 10000
+1
+should be empty
show global variables like 'pseudo_thread_id';
Variable_name Value
show session variables like 'pseudo_thread_id';
Variable_name Value
pseudo_thread_id #
+should be empty
select * from information_schema.global_variables where variable_name='pseudo_thread_id';
VARIABLE_NAME VARIABLE_VALUE
-select * from information_schema.session_variables where variable_name='pseudo_thread_id';
-VARIABLE_NAME VARIABLE_VALUE
-PSEUDO_THREAD_ID #
-set session pseudo_thread_id=1;
+select @@session.pseudo_thread_id = variable_value from information_schema.session_variables where variable_name='pseudo_thread_id';
+@@session.pseudo_thread_id = variable_value
+1
+set session pseudo_thread_id=42;
select @@session.pseudo_thread_id;
@@session.pseudo_thread_id
-1
+42
+select * from information_schema.global_variables where variable_name='pseudo_thread_id';
+VARIABLE_NAME VARIABLE_VALUE
+select variable_value from information_schema.session_variables where variable_name='pseudo_thread_id';
+variable_value
+42
set global pseudo_thread_id=1;
ERROR HY000: Variable 'pseudo_thread_id' is a SESSION variable and can't be used with SET GLOBAL
set session pseudo_thread_id=1.1;
diff --git a/mysql-test/suite/sys_vars/r/rand_seed1_basic.result b/mysql-test/suite/sys_vars/r/rand_seed1_basic.result
index 7b92d533c9e..155d7169168 100644
--- a/mysql-test/suite/sys_vars/r/rand_seed1_basic.result
+++ b/mysql-test/suite/sys_vars/r/rand_seed1_basic.result
@@ -17,6 +17,11 @@ set session rand_seed1=1;
select @@session.rand_seed1;
@@session.rand_seed1
0
+select * from information_schema.global_variables where variable_name='rand_seed1';
+VARIABLE_NAME VARIABLE_VALUE
+select * from information_schema.session_variables where variable_name='rand_seed1';
+VARIABLE_NAME VARIABLE_VALUE
+RAND_SEED1 0
set global rand_seed1=1;
ERROR HY000: Variable 'rand_seed1' is a SESSION variable and can't be used with SET GLOBAL
set session rand_seed1=1.1;
diff --git a/mysql-test/suite/sys_vars/r/rand_seed2_basic.result b/mysql-test/suite/sys_vars/r/rand_seed2_basic.result
index 3d84aa3e37e..4974d8a53a3 100644
--- a/mysql-test/suite/sys_vars/r/rand_seed2_basic.result
+++ b/mysql-test/suite/sys_vars/r/rand_seed2_basic.result
@@ -17,6 +17,11 @@ set session rand_seed2=1;
select @@session.rand_seed2;
@@session.rand_seed2
0
+select * from information_schema.global_variables where variable_name='rand_seed2';
+VARIABLE_NAME VARIABLE_VALUE
+select * from information_schema.session_variables where variable_name='rand_seed2';
+VARIABLE_NAME VARIABLE_VALUE
+RAND_SEED2 0
set global rand_seed2=1;
ERROR HY000: Variable 'rand_seed2' is a SESSION variable and can't be used with SET GLOBAL
set session rand_seed2=1.1;
diff --git a/mysql-test/suite/sys_vars/r/relay_log_recovery_basic.result b/mysql-test/suite/sys_vars/r/relay_log_recovery_basic.result
index 97b991ce65b..af3b51bcffe 100644
--- a/mysql-test/suite/sys_vars/r/relay_log_recovery_basic.result
+++ b/mysql-test/suite/sys_vars/r/relay_log_recovery_basic.result
@@ -23,10 +23,22 @@ set global relay_log_recovery=1;
select @@global.relay_log_recovery;
@@global.relay_log_recovery
1
+select * from information_schema.global_variables where variable_name='relay_log_recovery';
+VARIABLE_NAME VARIABLE_VALUE
+RELAY_LOG_RECOVERY ON
+select * from information_schema.session_variables where variable_name='relay_log_recovery';
+VARIABLE_NAME VARIABLE_VALUE
+RELAY_LOG_RECOVERY ON
set global relay_log_recovery=OFF;
select @@global.relay_log_recovery;
@@global.relay_log_recovery
0
+select * from information_schema.global_variables where variable_name='relay_log_recovery';
+VARIABLE_NAME VARIABLE_VALUE
+RELAY_LOG_RECOVERY OFF
+select * from information_schema.session_variables where variable_name='relay_log_recovery';
+VARIABLE_NAME VARIABLE_VALUE
+RELAY_LOG_RECOVERY OFF
set session relay_log_recovery=1;
ERROR HY000: Variable 'relay_log_recovery' is a GLOBAL variable and should be set with SET GLOBAL
set global relay_log_recovery=1.1;
diff --git a/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result b/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result
new file mode 100644
index 00000000000..ad3ca0de0fa
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result
@@ -0,0 +1,73 @@
+INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
+select @@global.rpl_semi_sync_master_enabled;
+@@global.rpl_semi_sync_master_enabled
+0
+SET @start_global_value = @@global.rpl_semi_sync_master_enabled;
+select @@global.rpl_semi_sync_master_enabled in (0,1);
+@@global.rpl_semi_sync_master_enabled in (0,1)
+1
+select @@session.rpl_semi_sync_master_enabled;
+ERROR HY000: Variable 'rpl_semi_sync_master_enabled' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_master_enabled';
+Variable_name Value
+rpl_semi_sync_master_enabled OFF
+show session variables like 'rpl_semi_sync_master_enabled';
+Variable_name Value
+rpl_semi_sync_master_enabled OFF
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_enabled';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_ENABLED OFF
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_enabled';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_ENABLED OFF
+set global rpl_semi_sync_master_enabled=0;
+set session rpl_semi_sync_master_enabled=0;
+ERROR HY000: Variable 'rpl_semi_sync_master_enabled' is a GLOBAL variable and should be set with SET GLOBAL
+select @@global.rpl_semi_sync_master_enabled;
+@@global.rpl_semi_sync_master_enabled
+0
+select @@session.rpl_semi_sync_master_enabled;
+ERROR HY000: Variable 'rpl_semi_sync_master_enabled' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_master_enabled';
+Variable_name Value
+rpl_semi_sync_master_enabled OFF
+show session variables like 'rpl_semi_sync_master_enabled';
+Variable_name Value
+rpl_semi_sync_master_enabled OFF
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_enabled';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_ENABLED OFF
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_enabled';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_ENABLED OFF
+set global rpl_semi_sync_master_enabled=1;
+set session rpl_semi_sync_master_enabled=1;
+ERROR HY000: Variable 'rpl_semi_sync_master_enabled' is a GLOBAL variable and should be set with SET GLOBAL
+select @@global.rpl_semi_sync_master_enabled;
+@@global.rpl_semi_sync_master_enabled
+-1
+select @@session.rpl_semi_sync_master_enabled;
+ERROR HY000: Variable 'rpl_semi_sync_master_enabled' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_master_enabled';
+Variable_name Value
+rpl_semi_sync_master_enabled ON
+show session variables like 'rpl_semi_sync_master_enabled';
+Variable_name Value
+rpl_semi_sync_master_enabled ON
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_enabled';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_ENABLED ON
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_enabled';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_ENABLED ON
+set global rpl_semi_sync_master_enabled=1.1;
+ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_master_enabled'
+set global rpl_semi_sync_master_enabled=1e1;
+ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_master_enabled'
+set global rpl_semi_sync_master_enabled="some text";
+ERROR 42000: Variable 'rpl_semi_sync_master_enabled' can't be set to the value of 'some text'
+SET @@global.rpl_semi_sync_master_enabled = @start_global_value;
+select @@global.rpl_semi_sync_master_enabled;
+@@global.rpl_semi_sync_master_enabled
+0
+UNINSTALL PLUGIN rpl_semi_sync_master;
diff --git a/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_timeout_basic.result b/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_timeout_basic.result
new file mode 100644
index 00000000000..e77bcc1c12a
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_timeout_basic.result
@@ -0,0 +1,54 @@
+INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
+select @@global.rpl_semi_sync_master_timeout;
+@@global.rpl_semi_sync_master_timeout
+10000
+SET @start_global_value = @@global.rpl_semi_sync_master_timeout;
+Assuming value will not be more then 100 sec
+select @@global.rpl_semi_sync_master_timeout between 1 and 100000;
+@@global.rpl_semi_sync_master_timeout between 1 and 100000
+1
+select @@session.rpl_semi_sync_master_timeout;
+ERROR HY000: Variable 'rpl_semi_sync_master_timeout' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_master_timeout';
+Variable_name Value
+rpl_semi_sync_master_timeout 10000
+show session variables like 'rpl_semi_sync_master_timeout';
+Variable_name Value
+rpl_semi_sync_master_timeout 10000
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_timeout';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_TIMEOUT 10000
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_timeout';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_TIMEOUT 10000
+set global rpl_semi_sync_master_timeout=42;
+set session rpl_semi_sync_master_timeout=99;
+ERROR HY000: Variable 'rpl_semi_sync_master_timeout' is a GLOBAL variable and should be set with SET GLOBAL
+select @@global.rpl_semi_sync_master_timeout;
+@@global.rpl_semi_sync_master_timeout
+42
+select @@session.rpl_semi_sync_master_timeout;
+ERROR HY000: Variable 'rpl_semi_sync_master_timeout' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_master_timeout';
+Variable_name Value
+rpl_semi_sync_master_timeout 42
+show session variables like 'rpl_semi_sync_master_timeout';
+Variable_name Value
+rpl_semi_sync_master_timeout 42
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_timeout';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_TIMEOUT 42
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_timeout';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_TIMEOUT 42
+set global rpl_semi_sync_master_timeout=1.1;
+ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_master_timeout'
+set global rpl_semi_sync_master_timeout=1e1;
+ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_master_timeout'
+set global rpl_semi_sync_master_timeout="some text";
+ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_master_timeout'
+SET @@global.rpl_semi_sync_master_timeout = @start_global_value;
+select @@global.rpl_semi_sync_master_timeout;
+@@global.rpl_semi_sync_master_timeout
+10000
+UNINSTALL PLUGIN rpl_semi_sync_master;
diff --git a/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_trace_level_basic.result b/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_trace_level_basic.result
new file mode 100644
index 00000000000..55df5f57d9e
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_trace_level_basic.result
@@ -0,0 +1,72 @@
+INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
+select @@global.rpl_semi_sync_master_trace_level;
+@@global.rpl_semi_sync_master_trace_level
+32
+SET @start_global_value = @@global.rpl_semi_sync_master_trace_level;
+select @@global.rpl_semi_sync_master_trace_level in (1,16,32,64);
+@@global.rpl_semi_sync_master_trace_level in (1,16,32,64)
+1
+select @@session.rpl_semi_sync_master_trace_level;
+ERROR HY000: Variable 'rpl_semi_sync_master_trace_level' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_master_trace_level';
+Variable_name Value
+rpl_semi_sync_master_trace_level 32
+show session variables like 'rpl_semi_sync_master_trace_level';
+Variable_name Value
+rpl_semi_sync_master_trace_level 32
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_trace_level';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_TRACE_LEVEL 32
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_trace_level';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_TRACE_LEVEL 32
+set global rpl_semi_sync_master_trace_level=16;
+set session rpl_semi_sync_master_trace_level=99;
+ERROR HY000: Variable 'rpl_semi_sync_master_trace_level' is a GLOBAL variable and should be set with SET GLOBAL
+select @@global.rpl_semi_sync_master_trace_level;
+@@global.rpl_semi_sync_master_trace_level
+16
+select @@session.rpl_semi_sync_master_trace_level;
+ERROR HY000: Variable 'rpl_semi_sync_master_trace_level' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_master_trace_level';
+Variable_name Value
+rpl_semi_sync_master_trace_level 16
+show session variables like 'rpl_semi_sync_master_trace_level';
+Variable_name Value
+rpl_semi_sync_master_trace_level 16
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_trace_level';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_TRACE_LEVEL 16
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_trace_level';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_TRACE_LEVEL 16
+NOTE: Value can also be set to values that are combinations of values
+set global rpl_semi_sync_master_trace_level=42;
+select @@global.rpl_semi_sync_master_trace_level;
+@@global.rpl_semi_sync_master_trace_level
+42
+select @@session.rpl_semi_sync_master_trace_level;
+ERROR HY000: Variable 'rpl_semi_sync_master_trace_level' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_master_trace_level';
+Variable_name Value
+rpl_semi_sync_master_trace_level 42
+show session variables like 'rpl_semi_sync_master_trace_level';
+Variable_name Value
+rpl_semi_sync_master_trace_level 42
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_trace_level';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_TRACE_LEVEL 42
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_trace_level';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_TRACE_LEVEL 42
+set global rpl_semi_sync_master_trace_level=1.1;
+ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_master_trace_level'
+set global rpl_semi_sync_master_trace_level=1e1;
+ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_master_trace_level'
+set global rpl_semi_sync_master_trace_level="some text";
+ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_master_trace_level'
+SET @@global.rpl_semi_sync_master_trace_level = @start_global_value;
+select @@global.rpl_semi_sync_master_trace_level;
+@@global.rpl_semi_sync_master_trace_level
+32
+UNINSTALL PLUGIN rpl_semi_sync_master;
diff --git a/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_wait_no_slave_basic.result b/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_wait_no_slave_basic.result
new file mode 100644
index 00000000000..3d951b499ed
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/rpl_semi_sync_master_wait_no_slave_basic.result
@@ -0,0 +1,73 @@
+INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
+select @@global.rpl_semi_sync_master_wait_no_slave;
+@@global.rpl_semi_sync_master_wait_no_slave
+1
+SET @start_global_value = @@global.rpl_semi_sync_master_wait_no_slave;
+select @@global.rpl_semi_sync_master_wait_no_slave in (0,1);
+@@global.rpl_semi_sync_master_wait_no_slave in (0,1)
+1
+select @@session.rpl_semi_sync_master_wait_no_slave;
+ERROR HY000: Variable 'rpl_semi_sync_master_wait_no_slave' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_master_wait_no_slave';
+Variable_name Value
+rpl_semi_sync_master_wait_no_slave ON
+show session variables like 'rpl_semi_sync_master_wait_no_slave';
+Variable_name Value
+rpl_semi_sync_master_wait_no_slave ON
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_wait_no_slave';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_WAIT_NO_SLAVE ON
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_wait_no_slave';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_WAIT_NO_SLAVE ON
+set global rpl_semi_sync_master_wait_no_slave=0;
+set session rpl_semi_sync_master_wait_no_slave=0;
+ERROR HY000: Variable 'rpl_semi_sync_master_wait_no_slave' is a GLOBAL variable and should be set with SET GLOBAL
+select @@global.rpl_semi_sync_master_wait_no_slave;
+@@global.rpl_semi_sync_master_wait_no_slave
+0
+select @@session.rpl_semi_sync_master_wait_no_slave;
+ERROR HY000: Variable 'rpl_semi_sync_master_wait_no_slave' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_master_wait_no_slave';
+Variable_name Value
+rpl_semi_sync_master_wait_no_slave OFF
+show session variables like 'rpl_semi_sync_master_wait_no_slave';
+Variable_name Value
+rpl_semi_sync_master_wait_no_slave OFF
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_wait_no_slave';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_WAIT_NO_SLAVE OFF
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_wait_no_slave';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_WAIT_NO_SLAVE OFF
+set global rpl_semi_sync_master_wait_no_slave=1;
+set session rpl_semi_sync_master_wait_no_slave=1;
+ERROR HY000: Variable 'rpl_semi_sync_master_wait_no_slave' is a GLOBAL variable and should be set with SET GLOBAL
+select @@global.rpl_semi_sync_master_wait_no_slave;
+@@global.rpl_semi_sync_master_wait_no_slave
+1
+select @@session.rpl_semi_sync_master_wait_no_slave;
+ERROR HY000: Variable 'rpl_semi_sync_master_wait_no_slave' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_master_wait_no_slave';
+Variable_name Value
+rpl_semi_sync_master_wait_no_slave ON
+show session variables like 'rpl_semi_sync_master_wait_no_slave';
+Variable_name Value
+rpl_semi_sync_master_wait_no_slave ON
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_wait_no_slave';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_WAIT_NO_SLAVE ON
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_wait_no_slave';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_MASTER_WAIT_NO_SLAVE ON
+set global rpl_semi_sync_master_wait_no_slave=1.1;
+ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_master_wait_no_slave'
+set global rpl_semi_sync_master_wait_no_slave=1e1;
+ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_master_wait_no_slave'
+set global rpl_semi_sync_master_wait_no_slave="some text";
+ERROR 42000: Variable 'rpl_semi_sync_master_wait_no_slave' can't be set to the value of 'some text'
+SET @@global.rpl_semi_sync_master_wait_no_slave = @start_global_value;
+select @@global.rpl_semi_sync_master_wait_no_slave;
+@@global.rpl_semi_sync_master_wait_no_slave
+1
+UNINSTALL PLUGIN rpl_semi_sync_master;
diff --git a/mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_enabled_basic.result b/mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_enabled_basic.result
new file mode 100644
index 00000000000..25688f55ecd
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_enabled_basic.result
@@ -0,0 +1,73 @@
+INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
+select @@global.rpl_semi_sync_slave_enabled;
+@@global.rpl_semi_sync_slave_enabled
+0
+SET @start_global_value = @@global.rpl_semi_sync_slave_enabled;
+select @@global.rpl_semi_sync_slave_enabled in (0,1);
+@@global.rpl_semi_sync_slave_enabled in (0,1)
+1
+select @@session.rpl_semi_sync_slave_enabled;
+ERROR HY000: Variable 'rpl_semi_sync_slave_enabled' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_slave_enabled';
+Variable_name Value
+rpl_semi_sync_slave_enabled OFF
+show session variables like 'rpl_semi_sync_slave_enabled';
+Variable_name Value
+rpl_semi_sync_slave_enabled OFF
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_slave_enabled';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_SLAVE_ENABLED OFF
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_slave_enabled';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_SLAVE_ENABLED OFF
+set global rpl_semi_sync_slave_enabled=0;
+set session rpl_semi_sync_slave_enabled=0;
+ERROR HY000: Variable 'rpl_semi_sync_slave_enabled' is a GLOBAL variable and should be set with SET GLOBAL
+select @@global.rpl_semi_sync_slave_enabled;
+@@global.rpl_semi_sync_slave_enabled
+0
+select @@session.rpl_semi_sync_slave_enabled;
+ERROR HY000: Variable 'rpl_semi_sync_slave_enabled' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_slave_enabled';
+Variable_name Value
+rpl_semi_sync_slave_enabled OFF
+show session variables like 'rpl_semi_sync_slave_enabled';
+Variable_name Value
+rpl_semi_sync_slave_enabled OFF
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_slave_enabled';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_SLAVE_ENABLED OFF
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_slave_enabled';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_SLAVE_ENABLED OFF
+set global rpl_semi_sync_slave_enabled=1;
+set session rpl_semi_sync_slave_enabled=1;
+ERROR HY000: Variable 'rpl_semi_sync_slave_enabled' is a GLOBAL variable and should be set with SET GLOBAL
+select @@global.rpl_semi_sync_slave_enabled;
+@@global.rpl_semi_sync_slave_enabled
+-1
+select @@session.rpl_semi_sync_slave_enabled;
+ERROR HY000: Variable 'rpl_semi_sync_slave_enabled' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_slave_enabled';
+Variable_name Value
+rpl_semi_sync_slave_enabled ON
+show session variables like 'rpl_semi_sync_slave_enabled';
+Variable_name Value
+rpl_semi_sync_slave_enabled ON
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_slave_enabled';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_SLAVE_ENABLED ON
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_slave_enabled';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_SLAVE_ENABLED ON
+set global rpl_semi_sync_slave_enabled=1.1;
+ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_slave_enabled'
+set global rpl_semi_sync_slave_enabled=1e1;
+ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_slave_enabled'
+set global rpl_semi_sync_slave_enabled="some text";
+ERROR 42000: Variable 'rpl_semi_sync_slave_enabled' can't be set to the value of 'some text'
+SET @@global.rpl_semi_sync_slave_enabled = @start_global_value;
+select @@global.rpl_semi_sync_slave_enabled;
+@@global.rpl_semi_sync_slave_enabled
+0
+UNINSTALL PLUGIN rpl_semi_sync_slave;
diff --git a/mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_trace_level_basic.result b/mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_trace_level_basic.result
new file mode 100644
index 00000000000..f7796309aea
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_trace_level_basic.result
@@ -0,0 +1,72 @@
+INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
+select @@global.rpl_semi_sync_slave_trace_level;
+@@global.rpl_semi_sync_slave_trace_level
+32
+SET @start_global_value = @@global.rpl_semi_sync_slave_trace_level;
+select @@global.rpl_semi_sync_slave_trace_level in (1,16,32,64);
+@@global.rpl_semi_sync_slave_trace_level in (1,16,32,64)
+1
+select @@session.rpl_semi_sync_slave_trace_level;
+ERROR HY000: Variable 'rpl_semi_sync_slave_trace_level' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_slave_trace_level';
+Variable_name Value
+rpl_semi_sync_slave_trace_level 32
+show session variables like 'rpl_semi_sync_slave_trace_level';
+Variable_name Value
+rpl_semi_sync_slave_trace_level 32
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_slave_trace_level';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_SLAVE_TRACE_LEVEL 32
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_slave_trace_level';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_SLAVE_TRACE_LEVEL 32
+set global rpl_semi_sync_slave_trace_level=16;
+set session rpl_semi_sync_slave_trace_level=99;
+ERROR HY000: Variable 'rpl_semi_sync_slave_trace_level' is a GLOBAL variable and should be set with SET GLOBAL
+select @@global.rpl_semi_sync_slave_trace_level;
+@@global.rpl_semi_sync_slave_trace_level
+16
+select @@session.rpl_semi_sync_slave_trace_level;
+ERROR HY000: Variable 'rpl_semi_sync_slave_trace_level' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_slave_trace_level';
+Variable_name Value
+rpl_semi_sync_slave_trace_level 16
+show session variables like 'rpl_semi_sync_slave_trace_level';
+Variable_name Value
+rpl_semi_sync_slave_trace_level 16
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_slave_trace_level';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_SLAVE_TRACE_LEVEL 16
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_slave_trace_level';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_SLAVE_TRACE_LEVEL 16
+NOTE: Value can also be set to values that are combinations of values
+set global rpl_semi_sync_slave_trace_level=42;
+select @@global.rpl_semi_sync_slave_trace_level;
+@@global.rpl_semi_sync_slave_trace_level
+42
+select @@session.rpl_semi_sync_slave_trace_level;
+ERROR HY000: Variable 'rpl_semi_sync_slave_trace_level' is a GLOBAL variable
+show global variables like 'rpl_semi_sync_slave_trace_level';
+Variable_name Value
+rpl_semi_sync_slave_trace_level 42
+show session variables like 'rpl_semi_sync_slave_trace_level';
+Variable_name Value
+rpl_semi_sync_slave_trace_level 42
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_slave_trace_level';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_SLAVE_TRACE_LEVEL 42
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_slave_trace_level';
+VARIABLE_NAME VARIABLE_VALUE
+RPL_SEMI_SYNC_SLAVE_TRACE_LEVEL 42
+set global rpl_semi_sync_slave_trace_level=1.1;
+ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_slave_trace_level'
+set global rpl_semi_sync_slave_trace_level=1e1;
+ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_slave_trace_level'
+set global rpl_semi_sync_slave_trace_level="some text";
+ERROR 42000: Incorrect argument type to variable 'rpl_semi_sync_slave_trace_level'
+SET @@global.rpl_semi_sync_slave_trace_level = @start_global_value;
+select @@global.rpl_semi_sync_slave_trace_level;
+@@global.rpl_semi_sync_slave_trace_level
+32
+UNINSTALL PLUGIN rpl_semi_sync_slave;
diff --git a/mysql-test/suite/sys_vars/r/sql_log_update_basic.result b/mysql-test/suite/sys_vars/r/sql_log_update_basic.result
index b6329b2820c..c18b9017021 100644
--- a/mysql-test/suite/sys_vars/r/sql_log_update_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_log_update_basic.result
@@ -23,15 +23,51 @@ SQL_LOG_UPDATE ON
set global sql_log_update=1;
Warnings:
Note 1315 The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored. This option will be removed in MySQL 5.6.
+set session sql_log_update=ON;
+Warnings:
+Note 1315 The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored. This option will be removed in MySQL 5.6.
select @@global.sql_log_update;
@@global.sql_log_update
1
-set session sql_log_update=ON;
+select @@session.sql_log_update;
+@@session.sql_log_update
+1
+show global variables like 'sql_log_update';
+Variable_name Value
+sql_log_update ON
+show session variables like 'sql_log_update';
+Variable_name Value
+sql_log_update ON
+select * from information_schema.global_variables where variable_name='sql_log_update';
+VARIABLE_NAME VARIABLE_VALUE
+SQL_LOG_UPDATE ON
+select * from information_schema.session_variables where variable_name='sql_log_update';
+VARIABLE_NAME VARIABLE_VALUE
+SQL_LOG_UPDATE ON
+set global sql_log_update=0;
+Warnings:
+Note 1315 The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored. This option will be removed in MySQL 5.6.
+set session sql_log_update=OFF;
Warnings:
Note 1315 The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored. This option will be removed in MySQL 5.6.
+select @@global.sql_log_update;
+@@global.sql_log_update
+0
select @@session.sql_log_update;
@@session.sql_log_update
-1
+0
+show global variables like 'sql_log_update';
+Variable_name Value
+sql_log_update OFF
+show session variables like 'sql_log_update';
+Variable_name Value
+sql_log_update OFF
+select * from information_schema.global_variables where variable_name='sql_log_update';
+VARIABLE_NAME VARIABLE_VALUE
+SQL_LOG_UPDATE OFF
+select * from information_schema.session_variables where variable_name='sql_log_update';
+VARIABLE_NAME VARIABLE_VALUE
+SQL_LOG_UPDATE OFF
set global sql_log_update=1.1;
ERROR 42000: Incorrect argument type to variable 'sql_log_update'
set global sql_log_update=1e1;
diff --git a/mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result b/mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result
index 8aaea049b94..8ec2a60887f 100644
--- a/mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result
@@ -23,15 +23,27 @@ SQL_MAX_JOIN_SIZE 18446744073709551615
set global sql_max_join_size=10;
Warnings:
Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
-select @@global.sql_max_join_size;
-@@global.sql_max_join_size
-10
set session sql_max_join_size=20;
Warnings:
Warning 1287 The syntax '@@sql_max_join_size' is deprecated and will be removed in MySQL 7.0.
+select @@global.sql_max_join_size;
+@@global.sql_max_join_size
+10
select @@session.sql_max_join_size;
@@session.sql_max_join_size
20
+show global variables like 'sql_max_join_size';
+Variable_name Value
+sql_max_join_size 10
+show session variables like 'sql_max_join_size';
+Variable_name Value
+sql_max_join_size 20
+select * from information_schema.global_variables where variable_name='sql_max_join_size';
+VARIABLE_NAME VARIABLE_VALUE
+SQL_MAX_JOIN_SIZE 10
+select * from information_schema.session_variables where variable_name='sql_max_join_size';
+VARIABLE_NAME VARIABLE_VALUE
+SQL_MAX_JOIN_SIZE 20
set global sql_max_join_size=1.1;
ERROR 42000: Incorrect argument type to variable 'sql_max_join_size'
set global sql_max_join_size=1e1;
diff --git a/mysql-test/suite/sys_vars/r/sql_select_limit_basic.result b/mysql-test/suite/sys_vars/r/sql_select_limit_basic.result
index c601fa148ce..78119cd9dff 100644
--- a/mysql-test/suite/sys_vars/r/sql_select_limit_basic.result
+++ b/mysql-test/suite/sys_vars/r/sql_select_limit_basic.result
@@ -21,13 +21,25 @@ select * from information_schema.session_variables where variable_name='sql_sele
VARIABLE_NAME VARIABLE_VALUE
SQL_SELECT_LIMIT 18446744073709551615
set global sql_select_limit=10;
+set session sql_select_limit=20;
select @@global.sql_select_limit;
@@global.sql_select_limit
10
-set session sql_select_limit=20;
select @@session.sql_select_limit;
@@session.sql_select_limit
20
+show global variables like 'sql_select_limit';
+Variable_name Value
+sql_select_limit 10
+show session variables like 'sql_select_limit';
+Variable_name Value
+sql_select_limit 20
+select * from information_schema.global_variables where variable_name='sql_select_limit';
+VARIABLE_NAME VARIABLE_VALUE
+SQL_SELECT_LIMIT 10
+select * from information_schema.session_variables where variable_name='sql_select_limit';
+VARIABLE_NAME VARIABLE_VALUE
+SQL_SELECT_LIMIT 20
set global sql_select_limit=1.1;
ERROR 42000: Incorrect argument type to variable 'sql_select_limit'
set global sql_select_limit=1e1;
diff --git a/mysql-test/suite/sys_vars/r/thread_cache_size_basic.result b/mysql-test/suite/sys_vars/r/thread_cache_size_basic.result
index 1c802f1afdd..83501ca929b 100644
--- a/mysql-test/suite/sys_vars/r/thread_cache_size_basic.result
+++ b/mysql-test/suite/sys_vars/r/thread_cache_size_basic.result
@@ -23,6 +23,12 @@ set global thread_cache_size=1;
select @@global.thread_cache_size;
@@global.thread_cache_size
1
+select * from information_schema.global_variables where variable_name='thread_cache_size';
+VARIABLE_NAME VARIABLE_VALUE
+THREAD_CACHE_SIZE 1
+select * from information_schema.session_variables where variable_name='thread_cache_size';
+VARIABLE_NAME VARIABLE_VALUE
+THREAD_CACHE_SIZE 1
set session thread_cache_size=1;
ERROR HY000: Variable 'thread_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
set global thread_cache_size=1.1;
diff --git a/mysql-test/suite/sys_vars/t/all_vars-master.opt b/mysql-test/suite/sys_vars/t/all_vars-master.opt
new file mode 100644
index 00000000000..3eec696ce86
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/all_vars-master.opt
@@ -0,0 +1 @@
+$SEMISYNC_PLUGIN_OPT --loose-innodb
diff --git a/mysql-test/suite/sys_vars/t/all_vars.test b/mysql-test/suite/sys_vars/t/all_vars.test
index 6a18b5e3d37..e9e7e16687a 100644
--- a/mysql-test/suite/sys_vars/t/all_vars.test
+++ b/mysql-test/suite/sys_vars/t/all_vars.test
@@ -15,6 +15,25 @@
--source include/not_embedded.inc
+# 2010-01-28 OBN Added support to load 'innodb' and 'semisync' if possible.
+# As we need to have there variables loaded if the components exist but do
+# not want the test skiped if they are not, we cannot use the 'have_xxx' mecanizm.
+# Added an 'all_vars-master.opt' file that includes
+# "$SEMISYNC_PLUGIN_OPT --loose-innodb" (see $SEMISYNC_PLUGIN_OPT setting in mysql-test-run.pl)
+# and logic similar to 'include/have_semisync_plugin.inc' that will load semisync plugin
+if (`SELECT @@have_dynamic_loading = 'YES' AND LENGTH('$SEMISYNC_MASTER_PLUGIN') > 0`)
+{
+ --disable_query_log
+ # The following is to prevent a mis-match on windows that has the name of of the lib ending with 'dll'
+ --replace_regex /\.dll/.so/
+ eval INSTALL PLUGIN rpl_semi_sync_master SONAME '$SEMISYNC_MASTER_PLUGIN';
+ --replace_regex /\.dll/.so/
+ eval INSTALL PLUGIN rpl_semi_sync_slave SONAME '$SEMISYNC_SLAVE_PLUGIN';
+ --enable_query_log
+}
+
+
+
#
# This test verifies that *all* system variables are tested
# by the sys_vars suite. For every system variable
@@ -58,3 +77,12 @@ select variable_name as `There should be *no* variables listed below:` from t2
drop table t1;
drop table t2;
+
+# Unloading the semisync plugins in case they were loaded
+if (`SELECT @@have_dynamic_loading = 'YES' AND LENGTH('$SEMISYNC_MASTER_PLUGIN') > 0`)
+{
+ --disable_query_log
+ UNINSTALL PLUGIN rpl_semi_sync_master;
+ UNINSTALL PLUGIN rpl_semi_sync_slave;
+ --enable_query_log
+}
diff --git a/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test b/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test
index 8ab825ea31d..60092dbb8e8 100644
--- a/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test
+++ b/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test
@@ -208,7 +208,9 @@ let $wait_condition=
WHERE variable_name like 'Not_flushed_delayed_rows';
--source include/wait_condition.inc
--echo Asynchronous execute
-let $my_select= SELECT COUNT(*) = 22 FROM t1;
+# Due to performance and server behaveiour the test observes values between 6 and 22.
+# In any case the value must not be outside of that range.
+let $my_select= SELECT COUNT(*) BETWEEN 6 AND 22 FROM t1;
send;
eval $my_select;
diff --git a/mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_basic.test b/mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_basic.test
new file mode 100644
index 00000000000..236b652f9c6
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_basic.test
@@ -0,0 +1,70 @@
+
+
+# 2010-01-25 - Added
+#
+
+--source include/have_innodb.inc
+
+SET @start_global_value = @@global.innodb_adaptive_flushing;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+--echo Valid values are 'ON' and 'OFF'
+select @@global.innodb_adaptive_flushing in (0, 1);
+select @@global.innodb_adaptive_flushing;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_adaptive_flushing;
+show global variables like 'innodb_adaptive_flushing';
+show session variables like 'innodb_adaptive_flushing';
+select * from information_schema.global_variables where variable_name='innodb_adaptive_flushing';
+select * from information_schema.session_variables where variable_name='innodb_adaptive_flushing';
+
+#
+# show that it's writable
+#
+set global innodb_adaptive_flushing='OFF';
+select @@global.innodb_adaptive_flushing;
+select * from information_schema.global_variables where variable_name='innodb_adaptive_flushing';
+select * from information_schema.session_variables where variable_name='innodb_adaptive_flushing';
+set @@global.innodb_adaptive_flushing=1;
+select @@global.innodb_adaptive_flushing;
+select * from information_schema.global_variables where variable_name='innodb_adaptive_flushing';
+select * from information_schema.session_variables where variable_name='innodb_adaptive_flushing';
+set global innodb_adaptive_flushing=0;
+select @@global.innodb_adaptive_flushing;
+select * from information_schema.global_variables where variable_name='innodb_adaptive_flushing';
+select * from information_schema.session_variables where variable_name='innodb_adaptive_flushing';
+set @@global.innodb_adaptive_flushing='ON';
+select @@global.innodb_adaptive_flushing;
+select * from information_schema.global_variables where variable_name='innodb_adaptive_flushing';
+select * from information_schema.session_variables where variable_name='innodb_adaptive_flushing';
+--error ER_GLOBAL_VARIABLE
+set session innodb_adaptive_flushing='OFF';
+--error ER_GLOBAL_VARIABLE
+set @@session.innodb_adaptive_flushing='ON';
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_adaptive_flushing=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_adaptive_flushing=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set global innodb_adaptive_flushing=2;
+--echo NOTE: The following should fail with ER_WRONG_VALUE_FOR_VAR (BUG#50643)
+set global innodb_adaptive_flushing=-3;
+select @@global.innodb_adaptive_flushing;
+select * from information_schema.global_variables where variable_name='innodb_adaptive_flushing';
+select * from information_schema.session_variables where variable_name='innodb_adaptive_flushing';
+--error ER_WRONG_VALUE_FOR_VAR
+set global innodb_adaptive_flushing='AUTO';
+
+#
+# Cleanup
+#
+
+SET @@global.innodb_adaptive_flushing = @start_global_value;
+SELECT @@global.innodb_adaptive_flushing;
diff --git a/mysql-test/suite/sys_vars/t/innodb_adaptive_hash_index_basic.test b/mysql-test/suite/sys_vars/t/innodb_adaptive_hash_index_basic.test
new file mode 100644
index 00000000000..d6d48ab460c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_adaptive_hash_index_basic.test
@@ -0,0 +1,70 @@
+
+
+# 2010-01-25 - Added
+#
+
+--source include/have_innodb.inc
+
+SET @start_global_value = @@global.innodb_adaptive_hash_index;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+--echo Valid values are 'ON' and 'OFF'
+select @@global.innodb_adaptive_hash_index in (0, 1);
+select @@global.innodb_adaptive_hash_index;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_adaptive_hash_index;
+show global variables like 'innodb_adaptive_hash_index';
+show session variables like 'innodb_adaptive_hash_index';
+select * from information_schema.global_variables where variable_name='innodb_adaptive_hash_index';
+select * from information_schema.session_variables where variable_name='innodb_adaptive_hash_index';
+
+#
+# show that it's writable
+#
+set global innodb_adaptive_hash_index='OFF';
+select @@global.innodb_adaptive_hash_index;
+select * from information_schema.global_variables where variable_name='innodb_adaptive_hash_index';
+select * from information_schema.session_variables where variable_name='innodb_adaptive_hash_index';
+set @@global.innodb_adaptive_hash_index=1;
+select @@global.innodb_adaptive_hash_index;
+select * from information_schema.global_variables where variable_name='innodb_adaptive_hash_index';
+select * from information_schema.session_variables where variable_name='innodb_adaptive_hash_index';
+set global innodb_adaptive_hash_index=0;
+select @@global.innodb_adaptive_hash_index;
+select * from information_schema.global_variables where variable_name='innodb_adaptive_hash_index';
+select * from information_schema.session_variables where variable_name='innodb_adaptive_hash_index';
+set @@global.innodb_adaptive_hash_index='ON';
+select @@global.innodb_adaptive_hash_index;
+select * from information_schema.global_variables where variable_name='innodb_adaptive_hash_index';
+select * from information_schema.session_variables where variable_name='innodb_adaptive_hash_index';
+--error ER_GLOBAL_VARIABLE
+set session innodb_adaptive_hash_index='OFF';
+--error ER_GLOBAL_VARIABLE
+set @@session.innodb_adaptive_hash_index='ON';
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_adaptive_hash_index=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_adaptive_hash_index=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set global innodb_adaptive_hash_index=2;
+--echo NOTE: The following should fail with ER_WRONG_VALUE_FOR_VAR (BUG#50643)
+set global innodb_adaptive_hash_index=-3;
+select @@global.innodb_adaptive_hash_index;
+select * from information_schema.global_variables where variable_name='innodb_adaptive_hash_index';
+select * from information_schema.session_variables where variable_name='innodb_adaptive_hash_index';
+--error ER_WRONG_VALUE_FOR_VAR
+set global innodb_adaptive_hash_index='AUTO';
+
+#
+# Cleanup
+#
+
+SET @@global.innodb_adaptive_hash_index = @start_global_value;
+SELECT @@global.innodb_adaptive_hash_index;
diff --git a/mysql-test/suite/sys_vars/t/innodb_change_buffering_basic.test b/mysql-test/suite/sys_vars/t/innodb_change_buffering_basic.test
new file mode 100644
index 00000000000..65e36aa9cb3
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_change_buffering_basic.test
@@ -0,0 +1,59 @@
+
+
+# 2010-01-25 - Added
+#
+
+--source include/have_innodb.inc
+
+SET @start_global_value = @@global.innodb_change_buffering;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+--echo Valid values are 'inserts' and 'none'
+select @@global.innodb_change_buffering in ('inserts', 'none');
+select @@global.innodb_change_buffering;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_change_buffering;
+show global variables like 'innodb_change_buffering';
+show session variables like 'innodb_change_buffering';
+select * from information_schema.global_variables where variable_name='innodb_change_buffering';
+select * from information_schema.session_variables where variable_name='innodb_change_buffering';
+
+#
+# show that it's writable
+#
+set global innodb_change_buffering='none';
+select @@global.innodb_change_buffering;
+select * from information_schema.global_variables where variable_name='innodb_change_buffering';
+select * from information_schema.session_variables where variable_name='innodb_change_buffering';
+set @@global.innodb_change_buffering='inserts';
+select @@global.innodb_change_buffering;
+select * from information_schema.global_variables where variable_name='innodb_change_buffering';
+select * from information_schema.session_variables where variable_name='innodb_change_buffering';
+--error ER_GLOBAL_VARIABLE
+set session innodb_change_buffering='some';
+--error ER_GLOBAL_VARIABLE
+set @@session.innodb_change_buffering='some';
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_change_buffering=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_change_buffering=1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_change_buffering=-2;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_change_buffering=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set global innodb_change_buffering='some';
+
+#
+# Cleanup
+#
+
+SET @@global.innodb_change_buffering = @start_global_value;
+SELECT @@global.innodb_change_buffering;
diff --git a/mysql-test/suite/sys_vars/t/innodb_file_format_basic.test b/mysql-test/suite/sys_vars/t/innodb_file_format_basic.test
new file mode 100644
index 00000000000..bfc092f2f05
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_file_format_basic.test
@@ -0,0 +1,55 @@
+
+
+# 2010-01-25 - Added
+#
+
+--source include/have_innodb.inc
+
+SET @start_global_value = @@global.innodb_file_format;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+--echo Valid values are 'Antelope' and 'Barracuda'
+select @@global.innodb_file_format in ('Antelope', 'Barracuda');
+select @@global.innodb_file_format;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_file_format;
+show global variables like 'innodb_file_format';
+show session variables like 'innodb_file_format';
+select * from information_schema.global_variables where variable_name='innodb_file_format';
+select * from information_schema.session_variables where variable_name='innodb_file_format';
+
+#
+# show that it's writable
+#
+set global innodb_file_format='Antelope';
+select @@global.innodb_file_format;
+select * from information_schema.global_variables where variable_name='innodb_file_format';
+select * from information_schema.session_variables where variable_name='innodb_file_format';
+set @@global.innodb_file_format='Barracuda';
+select @@global.innodb_file_format;
+select * from information_schema.global_variables where variable_name='innodb_file_format';
+select * from information_schema.session_variables where variable_name='innodb_file_format';
+--error ER_GLOBAL_VARIABLE
+set session innodb_file_format='Salmon';
+--error ER_GLOBAL_VARIABLE
+set @@session.innodb_file_format='Salmon';
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_file_format=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_file_format=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set global innodb_file_format='Salmon';
+
+#
+# Cleanup
+#
+
+SET @@global.innodb_file_format = @start_global_value;
+SELECT @@global.innodb_file_format;
diff --git a/mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test b/mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test
new file mode 100644
index 00000000000..4c60957561c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test
@@ -0,0 +1,55 @@
+
+
+# 2010-01-25 - Added
+#
+
+--source include/have_innodb.inc
+
+SET @start_global_value = @@global.innodb_file_format_check;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+--echo Valid values are 'Antelope' and 'Barracuda'
+select @@global.innodb_file_format_check in ('Antelope', 'Barracuda');
+select @@global.innodb_file_format_check;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_file_format_check;
+show global variables like 'innodb_file_format_check';
+show session variables like 'innodb_file_format_check';
+select * from information_schema.global_variables where variable_name='innodb_file_format_check';
+select * from information_schema.session_variables where variable_name='innodb_file_format_check';
+
+#
+# show that it's writable
+#
+set global innodb_file_format_check='Antelope';
+select @@global.innodb_file_format_check;
+select * from information_schema.global_variables where variable_name='innodb_file_format_check';
+select * from information_schema.session_variables where variable_name='innodb_file_format_check';
+set @@global.innodb_file_format_check='Barracuda';
+select @@global.innodb_file_format_check;
+select * from information_schema.global_variables where variable_name='innodb_file_format_check';
+select * from information_schema.session_variables where variable_name='innodb_file_format_check';
+--error ER_GLOBAL_VARIABLE
+set session innodb_file_format_check='Salmon';
+--error ER_GLOBAL_VARIABLE
+set @@session.innodb_file_format_check='Salmon';
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_file_format_check=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_file_format_check=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set global innodb_file_format_check='Salmon';
+
+#
+# Cleanup
+#
+
+SET @@global.innodb_file_format_check = @start_global_value;
+SELECT @@global.innodb_file_format_check;
diff --git a/mysql-test/suite/sys_vars/t/innodb_io_capacity_basic.test b/mysql-test/suite/sys_vars/t/innodb_io_capacity_basic.test
new file mode 100644
index 00000000000..3f00b50cf08
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_io_capacity_basic.test
@@ -0,0 +1,58 @@
+
+
+# 2010-01-27 - Added
+#
+
+--source include/have_innodb.inc
+
+SET @start_global_value = @@global.innodb_io_capacity;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+--echo Valid value 100 or more
+select @@global.innodb_io_capacity > 99;
+select @@global.innodb_io_capacity;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_io_capacity;
+show global variables like 'innodb_io_capacity';
+show session variables like 'innodb_io_capacity';
+select * from information_schema.global_variables where variable_name='innodb_io_capacity';
+select * from information_schema.session_variables where variable_name='innodb_io_capacity';
+
+#
+# show that it's writable
+#
+set global innodb_io_capacity=123;
+select @@global.innodb_io_capacity;
+select * from information_schema.global_variables where variable_name='innodb_io_capacity';
+select * from information_schema.session_variables where variable_name='innodb_io_capacity';
+--error ER_GLOBAL_VARIABLE
+set session innodb_io_capacity=444;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_io_capacity=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_io_capacity=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_io_capacity="foo";
+
+set global innodb_io_capacity=7;
+select @@global.innodb_io_capacity;
+select * from information_schema.global_variables where variable_name='innodb_io_capacity';
+set global innodb_io_capacity=-7;
+select @@global.innodb_io_capacity;
+select * from information_schema.global_variables where variable_name='innodb_io_capacity';
+
+#
+# min/max values
+#
+set global innodb_io_capacity=100;
+select @@global.innodb_io_capacity;
+
+SET @@global.innodb_io_capacity = @start_global_value;
+SELECT @@global.innodb_io_capacity;
diff --git a/mysql-test/suite/sys_vars/t/innodb_old_blocks_pct_basic.test b/mysql-test/suite/sys_vars/t/innodb_old_blocks_pct_basic.test
new file mode 100644
index 00000000000..0dcef3bb09f
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_old_blocks_pct_basic.test
@@ -0,0 +1,63 @@
+
+
+# 2010-01-25 - Added
+#
+
+--source include/have_innodb.inc
+
+SET @start_global_value = @@global.innodb_old_blocks_pct;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+--echo Valid values are between 5 and 95
+select @@global.innodb_old_blocks_pct between 5 and 95;
+select @@global.innodb_old_blocks_pct;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_old_blocks_pct;
+show global variables like 'innodb_old_blocks_pct';
+show session variables like 'innodb_old_blocks_pct';
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_pct';
+select * from information_schema.session_variables where variable_name='innodb_old_blocks_pct';
+
+#
+# show that it's writable
+#
+set global innodb_old_blocks_pct=10;
+select @@global.innodb_old_blocks_pct;
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_pct';
+select * from information_schema.session_variables where variable_name='innodb_old_blocks_pct';
+--error ER_GLOBAL_VARIABLE
+set session innodb_old_blocks_pct=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_old_blocks_pct=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_old_blocks_pct=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_old_blocks_pct="foo";
+
+set global innodb_old_blocks_pct=4;
+select @@global.innodb_old_blocks_pct;
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_pct';
+set global innodb_old_blocks_pct=-7;
+select @@global.innodb_old_blocks_pct;
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_pct';
+set global innodb_old_blocks_pct=96;
+select @@global.innodb_old_blocks_pct;
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_pct';
+
+#
+# min/max values
+#
+set global innodb_old_blocks_pct=5;
+select @@global.innodb_old_blocks_pct;
+set global innodb_old_blocks_pct=95;
+select @@global.innodb_old_blocks_pct;
+
+SET @@global.innodb_old_blocks_pct = @start_global_value;
+SELECT @@global.innodb_old_blocks_pct;
diff --git a/mysql-test/suite/sys_vars/t/innodb_old_blocks_time_basic.test b/mysql-test/suite/sys_vars/t/innodb_old_blocks_time_basic.test
new file mode 100644
index 00000000000..3efec2bbf15
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_old_blocks_time_basic.test
@@ -0,0 +1,52 @@
+
+#
+# 2010-01-25 - Added
+#
+
+--source include/have_innodb.inc
+
+SET @start_global_value = @@global.innodb_old_blocks_time;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+--echo Valid values are zero or above
+select @@global.innodb_old_blocks_time >=0;
+select @@global.innodb_old_blocks_time;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_old_blocks_time;
+show global variables like 'innodb_old_blocks_time';
+show session variables like 'innodb_old_blocks_time';
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_time';
+select * from information_schema.session_variables where variable_name='innodb_old_blocks_time';
+
+#
+# show that it's writable
+#
+set global innodb_old_blocks_time=10;
+select @@global.innodb_old_blocks_time;
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_time';
+select * from information_schema.session_variables where variable_name='innodb_old_blocks_time';
+--error ER_GLOBAL_VARIABLE
+set session innodb_old_blocks_time=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_old_blocks_time=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_old_blocks_time=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_old_blocks_time="foo";
+
+set global innodb_old_blocks_time=-7;
+select @@global.innodb_old_blocks_time;
+select * from information_schema.global_variables where variable_name='innodb_old_blocks_time';
+
+#
+# cleanup
+#
+SET @@global.innodb_old_blocks_time = @start_global_value;
+SELECT @@global.innodb_old_blocks_time;
diff --git a/mysql-test/suite/sys_vars/t/innodb_read_ahead_threshold_basic.test b/mysql-test/suite/sys_vars/t/innodb_read_ahead_threshold_basic.test
new file mode 100644
index 00000000000..1298a28b3d3
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_read_ahead_threshold_basic.test
@@ -0,0 +1,60 @@
+
+
+# 2010-01-27 - Added
+#
+
+--source include/have_innodb.inc
+
+SET @start_global_value = @@global.innodb_read_ahead_threshold;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+--echo Valid values are between 0 and 64
+select @@global.innodb_read_ahead_threshold between 0 and 64;
+select @@global.innodb_read_ahead_threshold;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_read_ahead_threshold;
+show global variables like 'innodb_read_ahead_threshold';
+show session variables like 'innodb_read_ahead_threshold';
+select * from information_schema.global_variables where variable_name='innodb_read_ahead_threshold';
+select * from information_schema.session_variables where variable_name='innodb_read_ahead_threshold';
+
+#
+# show that it's writable
+#
+set global innodb_read_ahead_threshold=10;
+select @@global.innodb_read_ahead_threshold;
+select * from information_schema.global_variables where variable_name='innodb_read_ahead_threshold';
+select * from information_schema.session_variables where variable_name='innodb_read_ahead_threshold';
+--error ER_GLOBAL_VARIABLE
+set session innodb_read_ahead_threshold=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_read_ahead_threshold=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_read_ahead_threshold=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_read_ahead_threshold="foo";
+
+set global innodb_read_ahead_threshold=-7;
+select @@global.innodb_read_ahead_threshold;
+select * from information_schema.global_variables where variable_name='innodb_read_ahead_threshold';
+set global innodb_read_ahead_threshold=96;
+select @@global.innodb_read_ahead_threshold;
+select * from information_schema.global_variables where variable_name='innodb_read_ahead_threshold';
+
+#
+# min/max values
+#
+set global innodb_read_ahead_threshold=0;
+select @@global.innodb_read_ahead_threshold;
+set global innodb_read_ahead_threshold=64;
+select @@global.innodb_read_ahead_threshold;
+
+SET @@global.innodb_read_ahead_threshold = @start_global_value;
+SELECT @@global.innodb_read_ahead_threshold;
diff --git a/mysql-test/suite/sys_vars/t/innodb_read_io_threads_basic.test b/mysql-test/suite/sys_vars/t/innodb_read_io_threads_basic.test
new file mode 100644
index 00000000000..14426395d6c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_read_io_threads_basic.test
@@ -0,0 +1,26 @@
+
+#
+# 2010-01-27 OBN - Added (this variable is also covered in innodb_file_io_threads_basic.test)
+#
+
+--source include/have_innodb.inc
+
+#
+# show the global and session values;
+#
+select @@global.innodb_read_io_threads;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_read_io_threads;
+show global variables like 'innodb_read_io_threads';
+show session variables like 'innodb_read_io_threads';
+select * from information_schema.global_variables where variable_name='innodb_read_io_threads';
+select * from information_schema.session_variables where variable_name='innodb_read_io_threads';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global innodb_read_io_threads=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session innodb_read_io_threads=1;
+
diff --git a/mysql-test/suite/sys_vars/t/innodb_replication_delay_basic.test b/mysql-test/suite/sys_vars/t/innodb_replication_delay_basic.test
new file mode 100644
index 00000000000..e495de46611
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_replication_delay_basic.test
@@ -0,0 +1,52 @@
+
+#
+# 2010-01-27 - Added
+#
+
+--source include/have_innodb.inc
+
+SET @start_global_value = @@global.innodb_replication_delay;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+--echo Valid values are zero or above
+select @@global.innodb_replication_delay >=0;
+select @@global.innodb_replication_delay;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_replication_delay;
+show global variables like 'innodb_replication_delay';
+show session variables like 'innodb_replication_delay';
+select * from information_schema.global_variables where variable_name='innodb_replication_delay';
+select * from information_schema.session_variables where variable_name='innodb_replication_delay';
+
+#
+# show that it's writable
+#
+set global innodb_replication_delay=10;
+select @@global.innodb_replication_delay;
+select * from information_schema.global_variables where variable_name='innodb_replication_delay';
+select * from information_schema.session_variables where variable_name='innodb_replication_delay';
+--error ER_GLOBAL_VARIABLE
+set session innodb_replication_delay=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_replication_delay=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_replication_delay=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_replication_delay="foo";
+
+set global innodb_replication_delay=-7;
+select @@global.innodb_replication_delay;
+select * from information_schema.global_variables where variable_name='innodb_replication_delay';
+
+#
+# cleanup
+#
+SET @@global.innodb_replication_delay = @start_global_value;
+SELECT @@global.innodb_replication_delay;
diff --git a/mysql-test/suite/sys_vars/t/innodb_spin_wait_delay_basic.test b/mysql-test/suite/sys_vars/t/innodb_spin_wait_delay_basic.test
new file mode 100644
index 00000000000..8f2eee08b6a
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_spin_wait_delay_basic.test
@@ -0,0 +1,52 @@
+
+#
+# 2010-01-27 - Added
+#
+
+--source include/have_innodb.inc
+
+SET @start_global_value = @@global.innodb_spin_wait_delay;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+--echo Valid values are zero or above
+select @@global.innodb_spin_wait_delay >=0;
+select @@global.innodb_spin_wait_delay;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_spin_wait_delay;
+show global variables like 'innodb_spin_wait_delay';
+show session variables like 'innodb_spin_wait_delay';
+select * from information_schema.global_variables where variable_name='innodb_spin_wait_delay';
+select * from information_schema.session_variables where variable_name='innodb_spin_wait_delay';
+
+#
+# show that it's writable
+#
+set global innodb_spin_wait_delay=10;
+select @@global.innodb_spin_wait_delay;
+select * from information_schema.global_variables where variable_name='innodb_spin_wait_delay';
+select * from information_schema.session_variables where variable_name='innodb_spin_wait_delay';
+--error ER_GLOBAL_VARIABLE
+set session innodb_spin_wait_delay=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_spin_wait_delay=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_spin_wait_delay=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_spin_wait_delay="foo";
+
+set global innodb_spin_wait_delay=-7;
+select @@global.innodb_spin_wait_delay;
+select * from information_schema.global_variables where variable_name='innodb_spin_wait_delay';
+
+#
+# cleanup
+#
+SET @@global.innodb_spin_wait_delay = @start_global_value;
+SELECT @@global.innodb_spin_wait_delay;
diff --git a/mysql-test/suite/sys_vars/t/innodb_stats_on_metadata_basic.test b/mysql-test/suite/sys_vars/t/innodb_stats_on_metadata_basic.test
new file mode 100644
index 00000000000..e6d59997ac6
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_stats_on_metadata_basic.test
@@ -0,0 +1,70 @@
+
+
+# 2010-01-25 - Added
+#
+
+--source include/have_innodb.inc
+
+SET @start_global_value = @@global.innodb_stats_on_metadata;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+--echo Valid values are 'ON' and 'OFF'
+select @@global.innodb_stats_on_metadata in (0, 1);
+select @@global.innodb_stats_on_metadata;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_stats_on_metadata;
+show global variables like 'innodb_stats_on_metadata';
+show session variables like 'innodb_stats_on_metadata';
+select * from information_schema.global_variables where variable_name='innodb_stats_on_metadata';
+select * from information_schema.session_variables where variable_name='innodb_stats_on_metadata';
+
+#
+# show that it's writable
+#
+set global innodb_stats_on_metadata='OFF';
+select @@global.innodb_stats_on_metadata;
+select * from information_schema.global_variables where variable_name='innodb_stats_on_metadata';
+select * from information_schema.session_variables where variable_name='innodb_stats_on_metadata';
+set @@global.innodb_stats_on_metadata=1;
+select @@global.innodb_stats_on_metadata;
+select * from information_schema.global_variables where variable_name='innodb_stats_on_metadata';
+select * from information_schema.session_variables where variable_name='innodb_stats_on_metadata';
+set global innodb_stats_on_metadata=0;
+select @@global.innodb_stats_on_metadata;
+select * from information_schema.global_variables where variable_name='innodb_stats_on_metadata';
+select * from information_schema.session_variables where variable_name='innodb_stats_on_metadata';
+set @@global.innodb_stats_on_metadata='ON';
+select @@global.innodb_stats_on_metadata;
+select * from information_schema.global_variables where variable_name='innodb_stats_on_metadata';
+select * from information_schema.session_variables where variable_name='innodb_stats_on_metadata';
+--error ER_GLOBAL_VARIABLE
+set session innodb_stats_on_metadata='OFF';
+--error ER_GLOBAL_VARIABLE
+set @@session.innodb_stats_on_metadata='ON';
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_stats_on_metadata=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_stats_on_metadata=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set global innodb_stats_on_metadata=2;
+--echo NOTE: The following should fail with ER_WRONG_VALUE_FOR_VAR (BUG#50643)
+set global innodb_stats_on_metadata=-3;
+select @@global.innodb_stats_on_metadata;
+select * from information_schema.global_variables where variable_name='innodb_stats_on_metadata';
+select * from information_schema.session_variables where variable_name='innodb_stats_on_metadata';
+--error ER_WRONG_VALUE_FOR_VAR
+set global innodb_stats_on_metadata='AUTO';
+
+#
+# Cleanup
+#
+
+SET @@global.innodb_stats_on_metadata = @start_global_value;
+SELECT @@global.innodb_stats_on_metadata;
diff --git a/mysql-test/suite/sys_vars/t/innodb_stats_sample_pages_basic.test b/mysql-test/suite/sys_vars/t/innodb_stats_sample_pages_basic.test
new file mode 100644
index 00000000000..2c91f11405d
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_stats_sample_pages_basic.test
@@ -0,0 +1,52 @@
+
+#
+# 2010-01-27 - Added
+#
+
+--source include/have_innodb.inc
+
+SET @start_global_value = @@global.innodb_stats_sample_pages;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+--echo Valid values are one or above
+select @@global.innodb_stats_sample_pages >=1;
+select @@global.innodb_stats_sample_pages;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_stats_sample_pages;
+show global variables like 'innodb_stats_sample_pages';
+show session variables like 'innodb_stats_sample_pages';
+select * from information_schema.global_variables where variable_name='innodb_stats_sample_pages';
+select * from information_schema.session_variables where variable_name='innodb_stats_sample_pages';
+
+#
+# show that it's writable
+#
+set global innodb_stats_sample_pages=10;
+select @@global.innodb_stats_sample_pages;
+select * from information_schema.global_variables where variable_name='innodb_stats_sample_pages';
+select * from information_schema.session_variables where variable_name='innodb_stats_sample_pages';
+--error ER_GLOBAL_VARIABLE
+set session innodb_stats_sample_pages=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_stats_sample_pages=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_stats_sample_pages=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_stats_sample_pages="foo";
+
+set global innodb_stats_sample_pages=-7;
+select @@global.innodb_stats_sample_pages;
+select * from information_schema.global_variables where variable_name='innodb_stats_sample_pages';
+
+#
+# cleanup
+#
+SET @@global.innodb_stats_sample_pages = @start_global_value;
+SELECT @@global.innodb_stats_sample_pages;
diff --git a/mysql-test/suite/sys_vars/t/innodb_strict_mode_basic.test b/mysql-test/suite/sys_vars/t/innodb_strict_mode_basic.test
new file mode 100644
index 00000000000..53fbdca2d32
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_strict_mode_basic.test
@@ -0,0 +1,84 @@
+
+
+# 2010-01-25 - Added
+#
+
+--source include/have_innodb.inc
+
+SET @start_global_value = @@global.innodb_strict_mode;
+SELECT @start_global_value;
+
+#
+# exists as global and session
+#
+--echo Valid values are 'ON' and 'OFF'
+select @@global.innodb_strict_mode in (0, 1);
+select @@global.innodb_strict_mode;
+select @@session.innodb_strict_mode in (0, 1);
+select @@session.innodb_strict_mode;
+show global variables like 'innodb_strict_mode';
+show session variables like 'innodb_strict_mode';
+select * from information_schema.global_variables where variable_name='innodb_strict_mode';
+select * from information_schema.session_variables where variable_name='innodb_strict_mode';
+
+#
+# show that it's writable
+#
+set global innodb_strict_mode='OFF';
+set session innodb_strict_mode='OFF';
+select @@global.innodb_strict_mode;
+select @@session.innodb_strict_mode;
+select * from information_schema.global_variables where variable_name='innodb_strict_mode';
+select * from information_schema.session_variables where variable_name='innodb_strict_mode';
+set @@global.innodb_strict_mode=1;
+set @@session.innodb_strict_mode=1;
+select @@global.innodb_strict_mode;
+select @@session.innodb_strict_mode;
+select * from information_schema.global_variables where variable_name='innodb_strict_mode';
+select * from information_schema.session_variables where variable_name='innodb_strict_mode';
+set global innodb_strict_mode=0;
+set session innodb_strict_mode=0;
+select @@global.innodb_strict_mode;
+select @@session.innodb_strict_mode;
+select * from information_schema.global_variables where variable_name='innodb_strict_mode';
+select * from information_schema.session_variables where variable_name='innodb_strict_mode';
+set @@global.innodb_strict_mode='ON';
+set @@session.innodb_strict_mode='ON';
+select @@global.innodb_strict_mode;
+select @@session.innodb_strict_mode;
+select * from information_schema.global_variables where variable_name='innodb_strict_mode';
+select * from information_schema.session_variables where variable_name='innodb_strict_mode';
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_strict_mode=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set session innodb_strict_mode=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_strict_mode=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set session innodb_strict_mode=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set global innodb_strict_mode=2;
+--error ER_WRONG_VALUE_FOR_VAR
+set session innodb_strict_mode=2;
+--error ER_WRONG_VALUE_FOR_VAR
+set global innodb_strict_mode='AUTO';
+--error ER_WRONG_VALUE_FOR_VAR
+set session innodb_strict_mode='AUTO';
+--echo NOTE: The following should fail with ER_WRONG_VALUE_FOR_VAR (BUG#50643)
+set global innodb_strict_mode=-3;
+set session innodb_strict_mode=-7;
+select @@global.innodb_strict_mode;
+select @@session.innodb_strict_mode;
+select * from information_schema.global_variables where variable_name='innodb_strict_mode';
+select * from information_schema.session_variables where variable_name='innodb_strict_mode';
+
+#
+# Cleanup
+#
+
+SET @@global.innodb_strict_mode = @start_global_value;
+SELECT @@global.innodb_strict_mode;
diff --git a/mysql-test/suite/sys_vars/t/innodb_thread_sleep_delay_basic.test b/mysql-test/suite/sys_vars/t/innodb_thread_sleep_delay_basic.test
new file mode 100644
index 00000000000..7156f309a64
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_thread_sleep_delay_basic.test
@@ -0,0 +1,52 @@
+
+#
+# 2010-01-27 - Added
+#
+
+--source include/have_innodb.inc
+
+SET @start_global_value = @@global.innodb_thread_sleep_delay;
+SELECT @start_global_value;
+
+#
+# exists as global only
+#
+--echo Valid values are zero or above
+select @@global.innodb_thread_sleep_delay >=0;
+select @@global.innodb_thread_sleep_delay;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_thread_sleep_delay;
+show global variables like 'innodb_thread_sleep_delay';
+show session variables like 'innodb_thread_sleep_delay';
+select * from information_schema.global_variables where variable_name='innodb_thread_sleep_delay';
+select * from information_schema.session_variables where variable_name='innodb_thread_sleep_delay';
+
+#
+# show that it's writable
+#
+set global innodb_thread_sleep_delay=10;
+select @@global.innodb_thread_sleep_delay;
+select * from information_schema.global_variables where variable_name='innodb_thread_sleep_delay';
+select * from information_schema.session_variables where variable_name='innodb_thread_sleep_delay';
+--error ER_GLOBAL_VARIABLE
+set session innodb_thread_sleep_delay=1;
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_thread_sleep_delay=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_thread_sleep_delay=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global innodb_thread_sleep_delay="foo";
+
+set global innodb_thread_sleep_delay=-7;
+select @@global.innodb_thread_sleep_delay;
+select * from information_schema.global_variables where variable_name='innodb_thread_sleep_delay';
+
+#
+# cleanup
+#
+SET @@global.innodb_thread_sleep_delay = @start_global_value;
+SELECT @@global.innodb_thread_sleep_delay;
diff --git a/mysql-test/suite/sys_vars/t/innodb_use_sys_malloc_basic.test b/mysql-test/suite/sys_vars/t/innodb_use_sys_malloc_basic.test
new file mode 100644
index 00000000000..21f3e904547
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_use_sys_malloc_basic.test
@@ -0,0 +1,28 @@
+
+#
+# 2010-01-27 OBN - Added
+#
+
+--source include/have_innodb.inc
+
+#
+# show the global and session values;
+#
+--echo Valid values are 'ON' and 'OFF'
+select @@global.innodb_adaptive_flushing in (0, 1);
+select @@global.innodb_use_sys_malloc;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_use_sys_malloc;
+show global variables like 'innodb_use_sys_malloc';
+show session variables like 'innodb_use_sys_malloc';
+select * from information_schema.global_variables where variable_name='innodb_use_sys_malloc';
+select * from information_schema.session_variables where variable_name='innodb_use_sys_malloc';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global innodb_use_sys_malloc=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session innodb_use_sys_malloc=1;
+
diff --git a/mysql-test/suite/sys_vars/t/innodb_version_basic.test b/mysql-test/suite/sys_vars/t/innodb_version_basic.test
new file mode 100644
index 00000000000..6ee2adf6cf9
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_version_basic.test
@@ -0,0 +1,28 @@
+
+#
+# 2010-01-27 OBN - Added
+#
+
+--source include/have_innodb.inc
+
+#
+# show the global and session values;
+#
+--let $inno_ver= `select @@global.innodb_version`
+--replace_result $inno_ver x.y.z
+select @@global.innodb_version;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_version;
+--echo show global variables like 'innodb_version' disabled so to not change with every version;
+--echo show session variables like 'innodb_version' disabled so to not change with every version;
+select VARIABLE_VALUE=@@global.innodb_version from information_schema.global_variables where variable_name='innodb_version';
+select VARIABLE_VALUE=@@global.innodb_version from information_schema.session_variables where variable_name='innodb_version';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global innodb_version=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session innodb_version=1;
+
diff --git a/mysql-test/suite/sys_vars/t/innodb_write_io_threads_basic.test b/mysql-test/suite/sys_vars/t/innodb_write_io_threads_basic.test
new file mode 100644
index 00000000000..8efa6576a66
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_write_io_threads_basic.test
@@ -0,0 +1,26 @@
+
+#
+# 2010-01-27 OBN - Added (this variable is also covered in innodb_file_io_threads_basic.test)
+#
+
+--source include/have_innodb.inc
+
+#
+# show the global and session values;
+#
+select @@global.innodb_write_io_threads;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.innodb_write_io_threads;
+show global variables like 'innodb_write_io_threads';
+show session variables like 'innodb_write_io_threads';
+select * from information_schema.global_variables where variable_name='innodb_write_io_threads';
+select * from information_schema.session_variables where variable_name='innodb_write_io_threads';
+
+#
+# show that it's read-only
+#
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global innodb_write_io_threads=1;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set session innodb_write_io_threads=1;
+
diff --git a/mysql-test/suite/sys_vars/t/last_insert_id_basic.test b/mysql-test/suite/sys_vars/t/last_insert_id_basic.test
index a2e0116f11d..ca971c660ca 100644
--- a/mysql-test/suite/sys_vars/t/last_insert_id_basic.test
+++ b/mysql-test/suite/sys_vars/t/last_insert_id_basic.test
@@ -2,6 +2,8 @@
#
# exists as a session only
#
+# 2010-01-20 OBN - Added check for variable value matching I_S tables
+#
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
select @@global.last_insert_id;
select @@session.last_insert_id;
@@ -13,10 +15,16 @@ select * from information_schema.session_variables where variable_name='last_ins
#
# show that it's writable
#
-set session last_insert_id=1;
-select @@session.last_insert_id;
--error ER_LOCAL_VARIABLE
-set global last_insert_id=1;
+set global last_insert_id=99;
+set session last_insert_id=42;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@global.last_insert_id;
+select @@session.last_insert_id;
+show global variables like 'last_insert_id';
+show session variables like 'last_insert_id';
+select * from information_schema.global_variables where variable_name='last_insert_id';
+select * from information_schema.session_variables where variable_name='last_insert_id';
#
# incorrect types
diff --git a/mysql-test/suite/sys_vars/t/lc_messages_basic.test b/mysql-test/suite/sys_vars/t/lc_messages_basic.test
index f8a25738285..a76381e8cb4 100644
--- a/mysql-test/suite/sys_vars/t/lc_messages_basic.test
+++ b/mysql-test/suite/sys_vars/t/lc_messages_basic.test
@@ -1,3 +1,8 @@
+#
+# 2010-01-20 OBN - Added check for variable value matching I_S tables
+#
+
+
SET @start_global_value = @@global.lc_messages;
SELECT @start_global_value;
@@ -19,9 +24,11 @@ select @@global.lc_messages;
set session lc_messages=2;
select @@session.lc_messages;
set global lc_messages="en_US";
-select @@global.lc_messages;
set session lc_messages="en_GB";
+select @@global.lc_messages;
select @@session.lc_messages;
+select * from information_schema.global_variables where variable_name='lc_messages';
+select * from information_schema.session_variables where variable_name='lc_messages';
#
# incorrect types
diff --git a/mysql-test/suite/sys_vars/t/log_slow_queries_basic.test b/mysql-test/suite/sys_vars/t/log_slow_queries_basic.test
index 95dda5b73c9..22fe4dfaa6e 100644
--- a/mysql-test/suite/sys_vars/t/log_slow_queries_basic.test
+++ b/mysql-test/suite/sys_vars/t/log_slow_queries_basic.test
@@ -11,7 +11,7 @@
# Creation Date: 2008-03-16 #
# Author: Salman Rawala #
# #
-# Description: Test Cases of Dynamic System Variable "log_slow_queries" #
+# Description: Test Cases of Dynamic System Variable "log_slow_queries" #
# that checks behavior of this variable in the following ways #
# * Default Value #
# * Valid & Invalid values #
@@ -21,6 +21,10 @@
# Reference: http://dev.mysql.com/doc/refman/5.1/en/ #
# server-options.html#option_mysqld_event-scheduler #
# #
+# #
+# 2010-01-20 OBN - Added check for variable value matching I_S tables after #
+# variable value change #
+# #
################################################################################
--source include/load_sysvars.inc
@@ -116,8 +120,14 @@ WHERE VARIABLE_NAME='log_slow_queries';
SET @@global.log_slow_queries = 0;
SELECT @@global.log_slow_queries;
+SELECT IF(@@global.log_slow_queries, "ON", "OFF") = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='log_slow_queries';
SET @@global.log_slow_queries = 1;
SELECT @@global.log_slow_queries;
+SELECT IF(@@global.log_slow_queries, "ON", "OFF") = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='log_slow_queries';
--echo '#---------------------FN_DYNVARS_004_07----------------------#'
###################################################################
@@ -126,8 +136,14 @@ SELECT @@global.log_slow_queries;
SET @@global.log_slow_queries = TRUE;
SELECT @@global.log_slow_queries;
+SELECT IF(@@global.log_slow_queries, "ON", "OFF") = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='log_slow_queries';
SET @@global.log_slow_queries = FALSE;
SELECT @@global.log_slow_queries;
+SELECT IF(@@global.log_slow_queries, "ON", "OFF") = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='log_slow_queries';
--echo '#---------------------FN_DYNVARS_004_08----------------------#'
##############################################################################
diff --git a/mysql-test/suite/sys_vars/t/lower_case_file_system_basic.test b/mysql-test/suite/sys_vars/t/lower_case_file_system_basic.test
index 6c15f188880..6c2af693128 100644
--- a/mysql-test/suite/sys_vars/t/lower_case_file_system_basic.test
+++ b/mysql-test/suite/sys_vars/t/lower_case_file_system_basic.test
@@ -1,17 +1,25 @@
#
# only global
#
+# 2010-01-20 OBN - Modified to include check for valid values
+# - Added check for variable value matching I_S tables
+#
select @@global.lower_case_file_system=2;
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
select @@session.lower_case_file_system;
---replace_column 2 #
-show global variables like 'lower_case_file_system';
---replace_column 2 #
-show session variables like 'lower_case_file_system';
---replace_column 2 #
-select * from information_schema.global_variables where variable_name='lower_case_file_system';
---replace_column 2 #
-select * from information_schema.session_variables where variable_name='lower_case_file_system';
+
+# Show variable has a valid value
+SELECT @@global.lower_case_file_system in (0,1);
+
+# Show that value of the variable matches the value in the GLOBAL I_S table
+SELECT IF(@@global.lower_case_file_system, "ON", "OFF") = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='lower_case_file_system';
+
+# Show that value of the variable matches the value in the SESSION I_S table
+SELECT IF(@@global.lower_case_file_system, "ON", "OFF") = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.SESSION_VARIABLES
+WHERE VARIABLE_NAME='lower_case_file_system';
#
# show that it's read-only
diff --git a/mysql-test/suite/sys_vars/t/lower_case_table_names_basic.test b/mysql-test/suite/sys_vars/t/lower_case_table_names_basic.test
index 8d6a3bb5ca6..eaa6c95974e 100644
--- a/mysql-test/suite/sys_vars/t/lower_case_table_names_basic.test
+++ b/mysql-test/suite/sys_vars/t/lower_case_table_names_basic.test
@@ -1,17 +1,26 @@
#
# only global
#
+# 2010-01-20 OBN - Modified to include check for valid values
+# - Added check for variable value matching I_S tables
+#
+
select @@global.lower_case_table_names=20;
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
select @@session.lower_case_table_names;
---replace_column 2 #
-show global variables like 'lower_case_table_names';
---replace_column 2 #
-show session variables like 'lower_case_table_names';
---replace_column 2 #
-select * from information_schema.global_variables where variable_name='lower_case_table_names';
---replace_column 2 #
-select * from information_schema.session_variables where variable_name='lower_case_table_names';
+
+# Show variable has a valid value
+SELECT @@global.lower_case_table_names in (0,1,2);
+
+# Show that value of the variable matches the value in the GLOBAL I_S table
+SELECT @@global.lower_case_table_names = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='lower_case_table_names';
+
+# Show that value of the variable matches the value in the SESSION I_S table
+SELECT @@global.lower_case_table_names = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='lower_case_table_names';
#
# show that it's read-only
diff --git a/mysql-test/suite/sys_vars/t/max_join_size_basic.test b/mysql-test/suite/sys_vars/t/max_join_size_basic.test
index 7566ab11520..bbe13457ee7 100644
--- a/mysql-test/suite/sys_vars/t/max_join_size_basic.test
+++ b/mysql-test/suite/sys_vars/t/max_join_size_basic.test
@@ -1,3 +1,11 @@
+
+
+#
+# 2010-01-20 - OBN - Added check for variable value sameas I_S table
+# after variable value change
+#
+
+
SET @start_global_value = @@global.max_join_size;
SELECT @start_global_value;
@@ -15,9 +23,13 @@ select * from information_schema.session_variables where variable_name='max_join
# show that it's writable
#
set global max_join_size=10;
-select @@global.max_join_size;
set session max_join_size=20;
+select @@global.max_join_size;
select @@session.max_join_size;
+show global variables like 'max_join_size';
+show session variables like 'max_join_size';
+select * from information_schema.global_variables where variable_name='max_join_size';
+select * from information_schema.session_variables where variable_name='max_join_size';
#
# incorrect types
diff --git a/mysql-test/suite/sys_vars/t/old_alter_table_basic.test b/mysql-test/suite/sys_vars/t/old_alter_table_basic.test
index 32d0f45ad25..cce180fea67 100644
--- a/mysql-test/suite/sys_vars/t/old_alter_table_basic.test
+++ b/mysql-test/suite/sys_vars/t/old_alter_table_basic.test
@@ -1,3 +1,8 @@
+
+#
+# 2010-01-20 OBN - added check of I_S values after variable value changed
+#
+
SET @start_global_value = @@global.old_alter_table;
SELECT @start_global_value;
@@ -15,9 +20,13 @@ select * from information_schema.session_variables where variable_name='old_alte
# show that it's writable
#
set global old_alter_table=1;
-select @@global.old_alter_table;
set session old_alter_table=ON;
+select @@global.old_alter_table;
select @@session.old_alter_table;
+show global variables like 'old_alter_table';
+show session variables like 'old_alter_table';
+select * from information_schema.global_variables where variable_name='old_alter_table';
+select * from information_schema.session_variables where variable_name='old_alter_table';
#
# incorrect types
diff --git a/mysql-test/suite/sys_vars/t/optimizer_switch_basic.test b/mysql-test/suite/sys_vars/t/optimizer_switch_basic.test
index 32a77c90b34..4267b3726aa 100644
--- a/mysql-test/suite/sys_vars/t/optimizer_switch_basic.test
+++ b/mysql-test/suite/sys_vars/t/optimizer_switch_basic.test
@@ -1,3 +1,8 @@
+
+#
+# 2010-01-20 OBN Added check for I_S values after variable value changed
+#
+
SET @start_global_value = @@global.optimizer_switch;
SELECT @start_global_value;
@@ -15,13 +20,17 @@ select * from information_schema.session_variables where variable_name='optimize
# show that it's writable
#
set global optimizer_switch=10;
-select @@global.optimizer_switch;
set session optimizer_switch=5;
+select @@global.optimizer_switch;
select @@session.optimizer_switch;
set global optimizer_switch="index_merge_sort_union=on";
-select @@global.optimizer_switch;
set session optimizer_switch="index_merge=off";
+select @@global.optimizer_switch;
select @@session.optimizer_switch;
+show global variables like 'optimizer_switch';
+show session variables like 'optimizer_switch';
+select * from information_schema.global_variables where variable_name='optimizer_switch';
+select * from information_schema.session_variables where variable_name='optimizer_switch';
set session optimizer_switch="default";
select @@session.optimizer_switch;
diff --git a/mysql-test/suite/sys_vars/t/profiling_basic.test b/mysql-test/suite/sys_vars/t/profiling_basic.test
index aef56e50900..da54d5a207d 100644
--- a/mysql-test/suite/sys_vars/t/profiling_basic.test
+++ b/mysql-test/suite/sys_vars/t/profiling_basic.test
@@ -1,3 +1,8 @@
+
+#
+# 2010-01-20 OBN - Added check for I_S values after variable value change
+#
+
--source include/have_profiling.inc
SET @start_global_value = @@global.profiling;
@@ -17,9 +22,21 @@ select * from information_schema.session_variables where variable_name='profilin
# show that it's writable
#
set global profiling=1;
-select @@global.profiling;
set session profiling=ON;
+select @@global.profiling;
+select @@session.profiling;
+show global variables like 'profiling';
+show session variables like 'profiling';
+select * from information_schema.global_variables where variable_name='profiling';
+select * from information_schema.session_variables where variable_name='profiling';
+set global profiling=0;
+set session profiling=OFF;
+select @@global.profiling;
select @@session.profiling;
+show global variables like 'profiling';
+show session variables like 'profiling';
+select * from information_schema.global_variables where variable_name='profiling';
+select * from information_schema.session_variables where variable_name='profiling';
#
# incorrect types
diff --git a/mysql-test/suite/sys_vars/t/profiling_history_size_basic.test b/mysql-test/suite/sys_vars/t/profiling_history_size_basic.test
index 01d3533be3d..26fdc55328b 100644
--- a/mysql-test/suite/sys_vars/t/profiling_history_size_basic.test
+++ b/mysql-test/suite/sys_vars/t/profiling_history_size_basic.test
@@ -1,3 +1,8 @@
+
+#
+# 2010-01-20 OBN Added check for variable and I_S values after incorrect change attempt
+#
+
--source include/have_profiling.inc
SET @start_global_value = @@global.profiling_history_size;
@@ -17,9 +22,13 @@ select * from information_schema.session_variables where variable_name='profilin
# show that it's writable
#
set global profiling_history_size=10;
-select @@global.profiling_history_size;
set session profiling_history_size=20;
+select @@global.profiling_history_size;
select @@session.profiling_history_size;
+show global variables like 'profiling_history_size';
+show session variables like 'profiling_history_size';
+select * from information_schema.global_variables where variable_name='profiling_history_size';
+select * from information_schema.session_variables where variable_name='profiling_history_size';
#
# incorrect assignments
diff --git a/mysql-test/suite/sys_vars/t/pseudo_thread_id_basic.test b/mysql-test/suite/sys_vars/t/pseudo_thread_id_basic.test
index a948f2a8ff0..fef3e906869 100644
--- a/mysql-test/suite/sys_vars/t/pseudo_thread_id_basic.test
+++ b/mysql-test/suite/sys_vars/t/pseudo_thread_id_basic.test
@@ -2,21 +2,37 @@
#
# exists as a session only
#
+# 2010-01-20 OBN - Added check for session I_S values being equal to variable value
+# - Added check for session variable value being numberic
+#
+
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
select @@global.pseudo_thread_id;
-select @@session.pseudo_thread_id=0;
+
+# Check the variable has a valid numeric value (assumed to be less then 10000)
+select @@session.pseudo_thread_id between 1 and 10000;
+
+--echo should be empty
show global variables like 'pseudo_thread_id';
+
+# Check that shows returns a value (can't confirm the actual one)
--replace_column 2 #
show session variables like 'pseudo_thread_id';
+
+# Global I_S variable is empty
+--echo should be empty
select * from information_schema.global_variables where variable_name='pseudo_thread_id';
---replace_column 2 #
-select * from information_schema.session_variables where variable_name='pseudo_thread_id';
+
+# Check that I_S value is same as variable
+select @@session.pseudo_thread_id = variable_value from information_schema.session_variables where variable_name='pseudo_thread_id';
#
# show that it's writable
#
-set session pseudo_thread_id=1;
+set session pseudo_thread_id=42;
select @@session.pseudo_thread_id;
+select * from information_schema.global_variables where variable_name='pseudo_thread_id';
+select variable_value from information_schema.session_variables where variable_name='pseudo_thread_id';
--error ER_LOCAL_VARIABLE
set global pseudo_thread_id=1;
diff --git a/mysql-test/suite/sys_vars/t/rand_seed1_basic.test b/mysql-test/suite/sys_vars/t/rand_seed1_basic.test
index 79c946a3d2f..3745d2fcb1e 100644
--- a/mysql-test/suite/sys_vars/t/rand_seed1_basic.test
+++ b/mysql-test/suite/sys_vars/t/rand_seed1_basic.test
@@ -2,6 +2,8 @@
#
# exists as a session only
#
+# 2010-01-20 OBN - Added check for I_S value after variable value change
+#
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
select @@global.rand_seed1;
select @@session.rand_seed1;
@@ -11,10 +13,12 @@ select * from information_schema.global_variables where variable_name='rand_seed
select * from information_schema.session_variables where variable_name='rand_seed1';
#
-# show that it's writable
+# show that it's writable (note value can be set but not read - returned value is zero)
#
set session rand_seed1=1;
select @@session.rand_seed1;
+select * from information_schema.global_variables where variable_name='rand_seed1';
+select * from information_schema.session_variables where variable_name='rand_seed1';
--error ER_LOCAL_VARIABLE
set global rand_seed1=1;
diff --git a/mysql-test/suite/sys_vars/t/rand_seed2_basic.test b/mysql-test/suite/sys_vars/t/rand_seed2_basic.test
index 18e2a62557c..7a5abcd340b 100644
--- a/mysql-test/suite/sys_vars/t/rand_seed2_basic.test
+++ b/mysql-test/suite/sys_vars/t/rand_seed2_basic.test
@@ -2,6 +2,9 @@
#
# exists as a session only
#
+#
+# 2010-01-20 OBN - Added check for I_S value after variable value change
+#
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
select @@global.rand_seed2;
select @@session.rand_seed2;
@@ -11,10 +14,12 @@ select * from information_schema.global_variables where variable_name='rand_seed
select * from information_schema.session_variables where variable_name='rand_seed2';
#
-# show that it's writable
+# show that it's writable (note value can be set but not read - returned value is zero)
#
set session rand_seed2=1;
select @@session.rand_seed2;
+select * from information_schema.global_variables where variable_name='rand_seed2';
+select * from information_schema.session_variables where variable_name='rand_seed2';
--error ER_LOCAL_VARIABLE
set global rand_seed2=1;
diff --git a/mysql-test/suite/sys_vars/t/relay_log_recovery_basic.test b/mysql-test/suite/sys_vars/t/relay_log_recovery_basic.test
index 57c28468bd1..a6f218a59ae 100644
--- a/mysql-test/suite/sys_vars/t/relay_log_recovery_basic.test
+++ b/mysql-test/suite/sys_vars/t/relay_log_recovery_basic.test
@@ -1,3 +1,9 @@
+
+
+#
+# 2010-01-10 - Added check for I_S values aver variable value change
+#
+
--source include/not_embedded.inc
SET @start_global_value = @@global.relay_log_recovery;
@@ -19,8 +25,12 @@ select * from information_schema.session_variables where variable_name='relay_lo
#
set global relay_log_recovery=1;
select @@global.relay_log_recovery;
+select * from information_schema.global_variables where variable_name='relay_log_recovery';
+select * from information_schema.session_variables where variable_name='relay_log_recovery';
set global relay_log_recovery=OFF;
select @@global.relay_log_recovery;
+select * from information_schema.global_variables where variable_name='relay_log_recovery';
+select * from information_schema.session_variables where variable_name='relay_log_recovery';
--error ER_GLOBAL_VARIABLE
set session relay_log_recovery=1;
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic-master.opt b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic-master.opt
new file mode 100644
index 00000000000..58029d28ace
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic-master.opt
@@ -0,0 +1 @@
+$SEMISYNC_PLUGIN_OPT
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic.test b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic.test
new file mode 100644
index 00000000000..749695e035c
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic.test
@@ -0,0 +1,64 @@
+
+#
+# exists as a global only
+#
+# 2010-01-21 OBN - Added
+#
+#
+source include/have_semisync_plugin.inc;
+# The following is to prevent a mis-match on windows that has the name of of the lib ending with 'dll'
+--replace_regex /\.dll/.so/
+eval INSTALL PLUGIN rpl_semi_sync_master SONAME '$SEMISYNC_MASTER_PLUGIN';
+select @@global.rpl_semi_sync_master_enabled;
+SET @start_global_value = @@global.rpl_semi_sync_master_enabled;
+
+select @@global.rpl_semi_sync_master_enabled in (0,1);
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_master_enabled;
+show global variables like 'rpl_semi_sync_master_enabled';
+show session variables like 'rpl_semi_sync_master_enabled';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_enabled';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_enabled';
+
+#
+# show that it's writable
+#
+set global rpl_semi_sync_master_enabled=0;
+--error ER_GLOBAL_VARIABLE
+set session rpl_semi_sync_master_enabled=0;
+select @@global.rpl_semi_sync_master_enabled;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_master_enabled;
+show global variables like 'rpl_semi_sync_master_enabled';
+show session variables like 'rpl_semi_sync_master_enabled';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_enabled';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_enabled';
+set global rpl_semi_sync_master_enabled=1;
+--error ER_GLOBAL_VARIABLE
+set session rpl_semi_sync_master_enabled=1;
+select @@global.rpl_semi_sync_master_enabled;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_master_enabled;
+show global variables like 'rpl_semi_sync_master_enabled';
+show session variables like 'rpl_semi_sync_master_enabled';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_enabled';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_enabled';
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global rpl_semi_sync_master_enabled=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global rpl_semi_sync_master_enabled=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set global rpl_semi_sync_master_enabled="some text";
+
+
+#
+# Cleanup
+#
+SET @@global.rpl_semi_sync_master_enabled = @start_global_value;
+select @@global.rpl_semi_sync_master_enabled;
+UNINSTALL PLUGIN rpl_semi_sync_master;
+
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic-master.opt b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic-master.opt
new file mode 100644
index 00000000000..58029d28ace
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic-master.opt
@@ -0,0 +1 @@
+$SEMISYNC_PLUGIN_OPT
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic.test b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic.test
new file mode 100644
index 00000000000..16389c23d54
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic.test
@@ -0,0 +1,54 @@
+
+#
+# exists as a global only
+#
+# 2010-01-21 OBN - Added
+#
+source include/have_semisync_plugin.inc;
+# The following is to prevent a mis-match on windows that has the name of of the lib ending with 'dll'
+--replace_regex /\.dll/.so/
+eval INSTALL PLUGIN rpl_semi_sync_master SONAME '$SEMISYNC_MASTER_PLUGIN';
+select @@global.rpl_semi_sync_master_timeout;
+SET @start_global_value = @@global.rpl_semi_sync_master_timeout;
+
+--echo Assuming value will not be more then 100 sec
+select @@global.rpl_semi_sync_master_timeout between 1 and 100000;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_master_timeout;
+show global variables like 'rpl_semi_sync_master_timeout';
+show session variables like 'rpl_semi_sync_master_timeout';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_timeout';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_timeout';
+
+#
+# show that it's writable
+#
+set global rpl_semi_sync_master_timeout=42;
+--error ER_GLOBAL_VARIABLE
+set session rpl_semi_sync_master_timeout=99;
+select @@global.rpl_semi_sync_master_timeout;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_master_timeout;
+show global variables like 'rpl_semi_sync_master_timeout';
+show session variables like 'rpl_semi_sync_master_timeout';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_timeout';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_timeout';
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global rpl_semi_sync_master_timeout=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global rpl_semi_sync_master_timeout=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global rpl_semi_sync_master_timeout="some text";
+
+
+#
+# Cleanup
+#
+SET @@global.rpl_semi_sync_master_timeout = @start_global_value;
+select @@global.rpl_semi_sync_master_timeout;
+UNINSTALL PLUGIN rpl_semi_sync_master;
+
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic-master.opt b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic-master.opt
new file mode 100644
index 00000000000..58029d28ace
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic-master.opt
@@ -0,0 +1 @@
+$SEMISYNC_PLUGIN_OPT
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic.test b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic.test
new file mode 100644
index 00000000000..c23aa1da688
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic.test
@@ -0,0 +1,62 @@
+
+#
+# exists as a global only
+#
+# 2010-01-21 OBN - Added
+#
+source include/have_semisync_plugin.inc;
+# The following is to prevent a mis-match on windows that has the name of of the lib ending with 'dll'
+--replace_regex /\.dll/.so/
+eval INSTALL PLUGIN rpl_semi_sync_master SONAME '$SEMISYNC_MASTER_PLUGIN';
+select @@global.rpl_semi_sync_master_trace_level;
+SET @start_global_value = @@global.rpl_semi_sync_master_trace_level;
+
+select @@global.rpl_semi_sync_master_trace_level in (1,16,32,64);
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_master_trace_level;
+show global variables like 'rpl_semi_sync_master_trace_level';
+show session variables like 'rpl_semi_sync_master_trace_level';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_trace_level';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_trace_level';
+
+#
+# show that it's writable
+#
+set global rpl_semi_sync_master_trace_level=16;
+--error ER_GLOBAL_VARIABLE
+set session rpl_semi_sync_master_trace_level=99;
+select @@global.rpl_semi_sync_master_trace_level;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_master_trace_level;
+show global variables like 'rpl_semi_sync_master_trace_level';
+show session variables like 'rpl_semi_sync_master_trace_level';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_trace_level';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_trace_level';
+
+--echo NOTE: Value can also be set to values that are combinations of values
+set global rpl_semi_sync_master_trace_level=42;
+select @@global.rpl_semi_sync_master_trace_level;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_master_trace_level;
+show global variables like 'rpl_semi_sync_master_trace_level';
+show session variables like 'rpl_semi_sync_master_trace_level';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_trace_level';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_trace_level';
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global rpl_semi_sync_master_trace_level=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global rpl_semi_sync_master_trace_level=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global rpl_semi_sync_master_trace_level="some text";
+
+#
+# Cleanup
+#
+SET @@global.rpl_semi_sync_master_trace_level = @start_global_value;
+select @@global.rpl_semi_sync_master_trace_level;
+UNINSTALL PLUGIN rpl_semi_sync_master;
+
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic-master.opt b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic-master.opt
new file mode 100644
index 00000000000..58029d28ace
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic-master.opt
@@ -0,0 +1 @@
+$SEMISYNC_PLUGIN_OPT
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic.test b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic.test
new file mode 100644
index 00000000000..9686a0e0d9a
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic.test
@@ -0,0 +1,64 @@
+
+#
+# exists as a global only
+#
+# 2010-01-21 OBN - Added
+#
+#
+source include/have_semisync_plugin.inc;
+# The following is to prevent a mis-match on windows that has the name of of the lib ending with 'dll'
+--replace_regex /\.dll/.so/
+eval INSTALL PLUGIN rpl_semi_sync_master SONAME '$SEMISYNC_MASTER_PLUGIN';
+select @@global.rpl_semi_sync_master_wait_no_slave;
+SET @start_global_value = @@global.rpl_semi_sync_master_wait_no_slave;
+
+select @@global.rpl_semi_sync_master_wait_no_slave in (0,1);
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_master_wait_no_slave;
+show global variables like 'rpl_semi_sync_master_wait_no_slave';
+show session variables like 'rpl_semi_sync_master_wait_no_slave';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_wait_no_slave';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_wait_no_slave';
+
+#
+# show that it's writable
+#
+set global rpl_semi_sync_master_wait_no_slave=0;
+--error ER_GLOBAL_VARIABLE
+set session rpl_semi_sync_master_wait_no_slave=0;
+select @@global.rpl_semi_sync_master_wait_no_slave;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_master_wait_no_slave;
+show global variables like 'rpl_semi_sync_master_wait_no_slave';
+show session variables like 'rpl_semi_sync_master_wait_no_slave';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_wait_no_slave';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_wait_no_slave';
+set global rpl_semi_sync_master_wait_no_slave=1;
+--error ER_GLOBAL_VARIABLE
+set session rpl_semi_sync_master_wait_no_slave=1;
+select @@global.rpl_semi_sync_master_wait_no_slave;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_master_wait_no_slave;
+show global variables like 'rpl_semi_sync_master_wait_no_slave';
+show session variables like 'rpl_semi_sync_master_wait_no_slave';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_master_wait_no_slave';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_master_wait_no_slave';
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global rpl_semi_sync_master_wait_no_slave=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global rpl_semi_sync_master_wait_no_slave=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set global rpl_semi_sync_master_wait_no_slave="some text";
+
+
+#
+# Cleanup
+#
+SET @@global.rpl_semi_sync_master_wait_no_slave = @start_global_value;
+select @@global.rpl_semi_sync_master_wait_no_slave;
+UNINSTALL PLUGIN rpl_semi_sync_master;
+
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic-master.opt b/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic-master.opt
new file mode 100644
index 00000000000..58029d28ace
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic-master.opt
@@ -0,0 +1 @@
+$SEMISYNC_PLUGIN_OPT
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic.test b/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic.test
new file mode 100644
index 00000000000..0bb16cfd38e
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic.test
@@ -0,0 +1,65 @@
+
+#
+# exists as a global only
+#
+# 2010-01-21 OBN - Added
+#
+#
+source include/have_semisync_plugin.inc;
+# The following is to prevent a mis-match on windows that has the name of of the lib ending with 'dll'
+--replace_regex /\.dll/.so/
+eval INSTALL PLUGIN rpl_semi_sync_slave SONAME '$SEMISYNC_SLAVE_PLUGIN';
+select @@global.rpl_semi_sync_slave_enabled;
+SET @start_global_value = @@global.rpl_semi_sync_slave_enabled;
+
+select @@global.rpl_semi_sync_slave_enabled in (0,1);
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_slave_enabled;
+show global variables like 'rpl_semi_sync_slave_enabled';
+show session variables like 'rpl_semi_sync_slave_enabled';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_slave_enabled';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_slave_enabled';
+
+#
+# show that it's writable
+#
+set global rpl_semi_sync_slave_enabled=0;
+--error ER_GLOBAL_VARIABLE
+set session rpl_semi_sync_slave_enabled=0;
+select @@global.rpl_semi_sync_slave_enabled;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_slave_enabled;
+show global variables like 'rpl_semi_sync_slave_enabled';
+show session variables like 'rpl_semi_sync_slave_enabled';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_slave_enabled';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_slave_enabled';
+set global rpl_semi_sync_slave_enabled=1;
+--error ER_GLOBAL_VARIABLE
+set session rpl_semi_sync_slave_enabled=1;
+select @@global.rpl_semi_sync_slave_enabled;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_slave_enabled;
+show global variables like 'rpl_semi_sync_slave_enabled';
+show session variables like 'rpl_semi_sync_slave_enabled';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_slave_enabled';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_slave_enabled';
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global rpl_semi_sync_slave_enabled=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global rpl_semi_sync_slave_enabled=1e1;
+--error ER_WRONG_VALUE_FOR_VAR
+set global rpl_semi_sync_slave_enabled="some text";
+--error ER_WRONG_VALUE_FOR_VAR
+
+
+#
+# Cleanup
+#
+SET @@global.rpl_semi_sync_slave_enabled = @start_global_value;
+select @@global.rpl_semi_sync_slave_enabled;
+UNINSTALL PLUGIN rpl_semi_sync_slave;
+
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic-master.opt b/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic-master.opt
new file mode 100644
index 00000000000..58029d28ace
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic-master.opt
@@ -0,0 +1 @@
+$SEMISYNC_PLUGIN_OPT
diff --git a/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic.test b/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic.test
new file mode 100644
index 00000000000..2bdf09f2a7f
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic.test
@@ -0,0 +1,62 @@
+
+#
+# exists as a global only
+#
+# 2010-01-21 OBN - Added
+#
+source include/have_semisync_plugin.inc;
+# The following is to prevent a mis-match on windows that has the name of of the lib ending with 'dll'
+--replace_regex /\.dll/.so/
+eval INSTALL PLUGIN rpl_semi_sync_slave SONAME '$SEMISYNC_SLAVE_PLUGIN';
+select @@global.rpl_semi_sync_slave_trace_level;
+SET @start_global_value = @@global.rpl_semi_sync_slave_trace_level;
+
+select @@global.rpl_semi_sync_slave_trace_level in (1,16,32,64);
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_slave_trace_level;
+show global variables like 'rpl_semi_sync_slave_trace_level';
+show session variables like 'rpl_semi_sync_slave_trace_level';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_slave_trace_level';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_slave_trace_level';
+
+#
+# show that it's writable
+#
+set global rpl_semi_sync_slave_trace_level=16;
+--error ER_GLOBAL_VARIABLE
+set session rpl_semi_sync_slave_trace_level=99;
+select @@global.rpl_semi_sync_slave_trace_level;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_slave_trace_level;
+show global variables like 'rpl_semi_sync_slave_trace_level';
+show session variables like 'rpl_semi_sync_slave_trace_level';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_slave_trace_level';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_slave_trace_level';
+
+--echo NOTE: Value can also be set to values that are combinations of values
+set global rpl_semi_sync_slave_trace_level=42;
+select @@global.rpl_semi_sync_slave_trace_level;
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+select @@session.rpl_semi_sync_slave_trace_level;
+show global variables like 'rpl_semi_sync_slave_trace_level';
+show session variables like 'rpl_semi_sync_slave_trace_level';
+select * from information_schema.global_variables where variable_name='rpl_semi_sync_slave_trace_level';
+select * from information_schema.session_variables where variable_name='rpl_semi_sync_slave_trace_level';
+
+#
+# incorrect types
+#
+--error ER_WRONG_TYPE_FOR_VAR
+set global rpl_semi_sync_slave_trace_level=1.1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global rpl_semi_sync_slave_trace_level=1e1;
+--error ER_WRONG_TYPE_FOR_VAR
+set global rpl_semi_sync_slave_trace_level="some text";
+
+#
+# Cleanup
+#
+SET @@global.rpl_semi_sync_slave_trace_level = @start_global_value;
+select @@global.rpl_semi_sync_slave_trace_level;
+UNINSTALL PLUGIN rpl_semi_sync_slave;
+
diff --git a/mysql-test/suite/sys_vars/t/sql_log_update_basic.test b/mysql-test/suite/sys_vars/t/sql_log_update_basic.test
index c48840d4a81..9b9f6f375b6 100644
--- a/mysql-test/suite/sys_vars/t/sql_log_update_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_log_update_basic.test
@@ -1,3 +1,9 @@
+
+#
+# 2010-01-20 OBN - Added check of I_S tables after variable value changes.
+# - Added value change to ON/OFF to ensure change of current value
+#
+
--source include/have_profiling.inc
SET @start_global_value = @@global.sql_log_update;
@@ -17,9 +23,21 @@ select * from information_schema.session_variables where variable_name='sql_log_
# show that it's writable
#
set global sql_log_update=1;
-select @@global.sql_log_update;
set session sql_log_update=ON;
+select @@global.sql_log_update;
+select @@session.sql_log_update;
+show global variables like 'sql_log_update';
+show session variables like 'sql_log_update';
+select * from information_schema.global_variables where variable_name='sql_log_update';
+select * from information_schema.session_variables where variable_name='sql_log_update';
+set global sql_log_update=0;
+set session sql_log_update=OFF;
+select @@global.sql_log_update;
select @@session.sql_log_update;
+show global variables like 'sql_log_update';
+show session variables like 'sql_log_update';
+select * from information_schema.global_variables where variable_name='sql_log_update';
+select * from information_schema.session_variables where variable_name='sql_log_update';
#
# incorrect types
diff --git a/mysql-test/suite/sys_vars/t/sql_max_join_size_basic.test b/mysql-test/suite/sys_vars/t/sql_max_join_size_basic.test
index bafa11379aa..9a72846b29c 100644
--- a/mysql-test/suite/sys_vars/t/sql_max_join_size_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_max_join_size_basic.test
@@ -1,3 +1,8 @@
+
+#
+# 2010-01-20 OBN - Added check of I_S values after variable value change
+#
+
SET @start_global_value = @@global.sql_max_join_size;
SELECT @start_global_value;
@@ -15,9 +20,13 @@ select * from information_schema.session_variables where variable_name='sql_max_
# show that it's writable
#
set global sql_max_join_size=10;
-select @@global.sql_max_join_size;
set session sql_max_join_size=20;
+select @@global.sql_max_join_size;
select @@session.sql_max_join_size;
+show global variables like 'sql_max_join_size';
+show session variables like 'sql_max_join_size';
+select * from information_schema.global_variables where variable_name='sql_max_join_size';
+select * from information_schema.session_variables where variable_name='sql_max_join_size';
#
# incorrect types
diff --git a/mysql-test/suite/sys_vars/t/sql_select_limit_basic.test b/mysql-test/suite/sys_vars/t/sql_select_limit_basic.test
index 0b941d25f42..c6bc5962205 100644
--- a/mysql-test/suite/sys_vars/t/sql_select_limit_basic.test
+++ b/mysql-test/suite/sys_vars/t/sql_select_limit_basic.test
@@ -1,3 +1,8 @@
+
+#
+# 2010-01-10 OBN - Added check for I_S values after change of variable value
+#
+
SET @start_global_value = @@global.sql_select_limit;
SELECT @start_global_value;
@@ -15,9 +20,13 @@ select * from information_schema.session_variables where variable_name='sql_sele
# show that it's writable
#
set global sql_select_limit=10;
-select @@global.sql_select_limit;
set session sql_select_limit=20;
+select @@global.sql_select_limit;
select @@session.sql_select_limit;
+show global variables like 'sql_select_limit';
+show session variables like 'sql_select_limit';
+select * from information_schema.global_variables where variable_name='sql_select_limit';
+select * from information_schema.session_variables where variable_name='sql_select_limit';
#
# incorrect types
diff --git a/mysql-test/suite/sys_vars/t/thread_cache_size_basic.test b/mysql-test/suite/sys_vars/t/thread_cache_size_basic.test
index 48a4c0797e5..22aaff6d426 100644
--- a/mysql-test/suite/sys_vars/t/thread_cache_size_basic.test
+++ b/mysql-test/suite/sys_vars/t/thread_cache_size_basic.test
@@ -1,4 +1,8 @@
+#
+# 2010-01-20 OBN - Added check of I_S values after variable value change
+#
+
SET @start_global_value = @@global.thread_cache_size;
SELECT @start_global_value;
@@ -18,6 +22,8 @@ select * from information_schema.session_variables where variable_name='thread_c
#
set global thread_cache_size=1;
select @@global.thread_cache_size;
+select * from information_schema.global_variables where variable_name='thread_cache_size';
+select * from information_schema.session_variables where variable_name='thread_cache_size';
--error ER_GLOBAL_VARIABLE
set session thread_cache_size=1;