summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorunknown <msvensson@pilot.mysql.com>2008-03-25 16:28:02 +0100
committerunknown <msvensson@pilot.mysql.com>2008-03-25 16:28:02 +0100
commitbccc041dc9331d9ecb60d3e2597969441827dfca (patch)
treeb445af258d960535ee93a17fb106d8406f983eda /mysql-test
parent266790e8f7b15e8386c8cf1fa8d966422e99423f (diff)
parentb84d4a8235431dc9a39f52ee52c884b383546f79 (diff)
downloadmariadb-git-bccc041dc9331d9ecb60d3e2597969441827dfca.tar.gz
Merge pilot.mysql.com:/data/msvensson/mysql/mysql-5.1
into pilot.mysql.com:/data/msvensson/mysql/mysql-5.1-rpl
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/extra/binlog_tests/ctype_cp932.test2
-rw-r--r--mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test2
-rw-r--r--mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test59
-rw-r--r--mysql-test/extra/rpl_tests/rpl_loaddata.test7
-rw-r--r--mysql-test/extra/rpl_tests/rpl_log.test2
-rw-r--r--mysql-test/extra/rpl_tests/rpl_ndb_2multi_eng.test1
-rw-r--r--mysql-test/include/commit.inc10
-rw-r--r--mysql-test/include/ctype_german.inc40
-rw-r--r--mysql-test/include/ctype_like_range_f1f2.inc25
-rw-r--r--mysql-test/include/diff_tables.inc122
-rw-r--r--mysql-test/include/wait_for_binlog_event.inc33
-rw-r--r--mysql-test/lib/mtr_report.pl11
-rw-r--r--mysql-test/r/commit_1innodb.result3
-rw-r--r--mysql-test/r/ctype_big5.result34
-rwxr-xr-xmysql-test/r/ctype_eucjpms.result34
-rw-r--r--mysql-test/r/ctype_euckr.result34
-rw-r--r--mysql-test/r/ctype_gb2312.result34
-rw-r--r--mysql-test/r/ctype_gbk.result34
-rw-r--r--mysql-test/r/ctype_latin1_de.result35
-rw-r--r--mysql-test/r/ctype_sjis.result34
-rw-r--r--mysql-test/r/ctype_uca.result52
-rw-r--r--mysql-test/r/ctype_ucs.result69
-rw-r--r--mysql-test/r/ctype_ujis.result34
-rw-r--r--mysql-test/r/ctype_utf8.result35
-rw-r--r--mysql-test/r/multi_update.result4
-rw-r--r--mysql-test/r/mysqlbinlog.result40
-rw-r--r--mysql-test/r/mysqlbinlog2.result166
-rw-r--r--mysql-test/r/mysqldump.result175
-rw-r--r--mysql-test/r/mysqltest.result4
-rw-r--r--mysql-test/r/user_var-binlog.result4
-rw-r--r--mysql-test/r/variables-notembedded.result17
-rw-r--r--mysql-test/suite/binlog/r/binlog_base64_flag.result9
-rw-r--r--mysql-test/suite/binlog/r/binlog_multi_engine.result22
-rw-r--r--mysql-test/suite/binlog/r/binlog_row_ctype_cp932.result34
-rw-r--r--mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result2
-rwxr-xr-xmysql-test/suite/binlog/r/binlog_stm_ctype_cp932.result34
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result4
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result4
-rw-r--r--mysql-test/suite/binlog/r/binlog_unsafe.result207
-rw-r--r--mysql-test/suite/binlog/t/binlog_base64_flag.test2
-rw-r--r--mysql-test/suite/binlog/t/binlog_multi_engine.test22
-rw-r--r--mysql-test/suite/binlog/t/binlog_unsafe.test240
-rw-r--r--mysql-test/suite/binlog/t/disabled.def1
-rw-r--r--mysql-test/suite/bugs/r/rpl_bug23533.result23
-rw-r--r--mysql-test/suite/bugs/r/rpl_bug31583.result1
-rw-r--r--mysql-test/suite/bugs/t/rpl_bug23533.test43
-rw-r--r--mysql-test/suite/ndb/r/ndb_binlog_format.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_bug33931.result43
-rw-r--r--mysql-test/suite/rpl/r/rpl_extraCol_innodb.result56
-rw-r--r--mysql-test/suite/rpl/r/rpl_extraCol_myisam.result56
-rw-r--r--mysql-test/suite/rpl/r/rpl_flushlog_loop.result6
-rw-r--r--mysql-test/suite/rpl/r/rpl_invoked_features.result16
-rw-r--r--mysql-test/suite/rpl/r/rpl_loaddata.result3
-rw-r--r--mysql-test/suite/rpl/r/rpl_master_pos_wait.result6
-rw-r--r--mysql-test/suite/rpl/r/rpl_report.result33
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result16
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_view01.result3
-rw-r--r--mysql-test/suite/rpl/r/rpl_server_id1.result23
-rw-r--r--mysql-test/suite/rpl/r/rpl_skip_error.result75
-rw-r--r--mysql-test/suite/rpl/r/rpl_variables.result591
-rw-r--r--mysql-test/suite/rpl/r/rpl_variables_stm.result526
-rw-r--r--mysql-test/suite/rpl/t/rpl_bug33931-slave.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_bug33931.test37
-rw-r--r--mysql-test/suite/rpl/t/rpl_change_master.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_drop_temp.test14
-rw-r--r--mysql-test/suite/rpl/t/rpl_flushlog_loop.test29
-rw-r--r--mysql-test/suite/rpl/t/rpl_invoked_features.test26
-rw-r--r--mysql-test/suite/rpl/t/rpl_master_pos_wait.test11
-rw-r--r--mysql-test/suite/rpl/t/rpl_relayspace.test21
-rw-r--r--mysql-test/suite/rpl/t/rpl_report-slave.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_report.test21
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_view01.test16
-rw-r--r--mysql-test/suite/rpl/t/rpl_server_id1.test17
-rw-r--r--mysql-test/suite/rpl/t/rpl_skip_error.test77
-rw-r--r--mysql-test/suite/rpl/t/rpl_slave_status.test5
-rw-r--r--mysql-test/suite/rpl/t/rpl_temporary.test5
-rw-r--r--mysql-test/suite/rpl/t/rpl_trunc_temp.test7
-rw-r--r--mysql-test/suite/rpl/t/rpl_variables-master.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_variables.test747
-rw-r--r--mysql-test/suite/rpl/t/rpl_variables_stm.test636
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result56
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test24
-rw-r--r--mysql-test/t/ctype_big5.test2
-rw-r--r--mysql-test/t/ctype_eucjpms.test3
-rw-r--r--mysql-test/t/ctype_euckr.test2
-rw-r--r--mysql-test/t/ctype_gb2312.test2
-rw-r--r--mysql-test/t/ctype_gbk.test2
-rw-r--r--mysql-test/t/ctype_latin1_de.test1
-rw-r--r--mysql-test/t/ctype_sjis.test2
-rw-r--r--mysql-test/t/ctype_uca.test4
-rw-r--r--mysql-test/t/ctype_ucs.test3
-rw-r--r--mysql-test/t/ctype_ujis.test2
-rw-r--r--mysql-test/t/ctype_utf8.test1
-rw-r--r--mysql-test/t/disabled.def2
-rw-r--r--mysql-test/t/mysqlbinlog2.test3
-rw-r--r--mysql-test/t/mysqldump.test6
-rw-r--r--mysql-test/t/variables-notembedded-master.opt1
-rw-r--r--mysql-test/t/variables-notembedded.test30
98 files changed, 4624 insertions, 458 deletions
diff --git a/mysql-test/extra/binlog_tests/ctype_cp932.test b/mysql-test/extra/binlog_tests/ctype_cp932.test
index 3deeea13997..33247550d62 100644
--- a/mysql-test/extra/binlog_tests/ctype_cp932.test
+++ b/mysql-test/extra/binlog_tests/ctype_cp932.test
@@ -404,8 +404,10 @@ DROP TABLE t4;
SET collation_connection='cp932_japanese_ci';
-- source include/ctype_filesort.inc
+-- source include/ctype_like_range_f1f2.inc
SET collation_connection='cp932_bin';
-- source include/ctype_filesort.inc
+-- source include/ctype_like_range_f1f2.inc
#
# Bug#29333 myisam corruption with
diff --git a/mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test b/mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test
index 6ac8a89591a..6879089a1b7 100644
--- a/mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test
+++ b/mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test
@@ -7,7 +7,7 @@
-- source include/have_log_bin.inc
-- source include/have_innodb.inc
--- source include/have_debug.inc
+
--disable_warnings
drop table if exists t1, t2;
diff --git a/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test b/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test
index 6fa2c9ac1b5..7e726828a1e 100644
--- a/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test
+++ b/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test
@@ -403,45 +403,38 @@ sync_slave_with_master;
# added columns do not have default values#
# Expect: Proper error message #
###########################################
-# Commented out due to Bug #23907 Extra Slave Col is not
-# erroring on extra col with no default values.
+# Bug#22234, Bug#23907 Extra Slave Col is not
+# erroring on extra col with no default values.
########################################################
#--echo *** Create t9 on slave ***
-#STOP SLAVE;
-#RESET SLAVE;
-#eval CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
-# d TIMESTAMP,
-# e INT DEFAULT '1')ENGINE=$engine_type;
-
-#--echo *** Create t9 on Master ***
-#connection master;
-#eval CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
-# ) ENGINE=$engine_type;
-#RESET MASTER;
+STOP SLAVE;
+RESET SLAVE;
+eval CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
+ d TIMESTAMP,
+ e INT NOT NULL) ENGINE=$engine_type;
-#--echo *** Start Slave ***
-#connection slave;
-#START SLAVE;
+--echo *** Create t9 on Master ***
+connection master;
+eval CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
+ ) ENGINE=$engine_type;
+RESET MASTER;
-#--echo *** Master Data Insert ***
-#connection master;
-#set @b1 = 'b1b1b1b1';
-#set @b1 = concat(@b1,@b1);
-#INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
+--echo *** Start Slave ***
+connection slave;
+START SLAVE;
-#--echo *************************************************
-#--echo ** Currently giving wrong error see bug#22234 ***
-#--echo *************************************************
-#sync_slave_with_master;
-#connection slave;
+--echo *** Master Data Insert ***
+connection master;
+set @b1 = 'b1b1b1b1';
+set @b1 = concat(@b1,@b1);
+INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
-#--echo *** Select from T9 ***
-#--source include/wait_for_slave_sql_to_stop.inc
-#--replace_result $MASTER_MYPORT MASTER_PORT
-#--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
-#--query_vertical SHOW SLAVE STATUS
-#SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-#START SLAVE;
+--source include/wait_for_slave_sql_to_stop.inc
+--replace_result $MASTER_MYPORT MASTER_PORT
+--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
+--query_vertical SHOW SLAVE STATUS
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
+START SLAVE;
#--echo *** Drop t9 ***
#connection master;
diff --git a/mysql-test/extra/rpl_tests/rpl_loaddata.test b/mysql-test/extra/rpl_tests/rpl_loaddata.test
index bb6afd73034..8f32ee674f8 100644
--- a/mysql-test/extra/rpl_tests/rpl_loaddata.test
+++ b/mysql-test/extra/rpl_tests/rpl_loaddata.test
@@ -39,13 +39,6 @@ sync_with_master;
select * from t1;
select * from t3;
-# We want to be sure that LOAD DATA is in the slave's binlog.
-# But we can't simply read this binlog, because as the slave has not been
-# restarted for this test, the file_id is uncertain (would cause test
-# failures). So instead, we test if the binlog looks long enough to
-# contain LOAD DATA. Since 5.0.3 we assume that binlog of 1292 is ok.
-# If LOAD DATA was not logged, the binlog would be shorter.
-show master status;
connection master;
diff --git a/mysql-test/extra/rpl_tests/rpl_log.test b/mysql-test/extra/rpl_tests/rpl_log.test
index a5db4dfab4d..078d3d4557d 100644
--- a/mysql-test/extra/rpl_tests/rpl_log.test
+++ b/mysql-test/extra/rpl_tests/rpl_log.test
@@ -148,5 +148,5 @@ drop table t1;
# End of 4.1 tests
-sync_with_master;
+sync_slave_with_master;
diff --git a/mysql-test/extra/rpl_tests/rpl_ndb_2multi_eng.test b/mysql-test/extra/rpl_tests/rpl_ndb_2multi_eng.test
index 7f19245c0b9..1677aaf8277 100644
--- a/mysql-test/extra/rpl_tests/rpl_ndb_2multi_eng.test
+++ b/mysql-test/extra/rpl_tests/rpl_ndb_2multi_eng.test
@@ -342,5 +342,6 @@ SHOW CREATE TABLE t1;
--echo --- Do Cleanup ---
DROP TABLE IF EXISTS t1;
+sync_slave_with_master;
# End of 5.1 test case
diff --git a/mysql-test/include/commit.inc b/mysql-test/include/commit.inc
index 9bd11bf33c1..38c123295fb 100644
--- a/mysql-test/include/commit.inc
+++ b/mysql-test/include/commit.inc
@@ -341,6 +341,14 @@ drop function if exists f1;
drop procedure if exists p_verify_status_increment;
--enable_warnings
+# Save binlog_format in a user variable. References to system
+# variables are "unsafe", meaning they are written as rows instead of
+# as statements to the binlog, if the loggging mode is 'mixed'. But
+# we don't want p_verify_status_increment to affect the logging mode.
+# Hence, we save binlog_format in a user variable (which is not
+# unsafe) and use that inside p_verify_status_increment.
+set @binlog_format=@@global.binlog_format;
+
set sql_mode=no_engine_substitution;
create table t1 (a int unique);
create table t2 (a int) engine=myisam;
@@ -367,7 +375,7 @@ begin
where variable_name='Handler_commit' or variable_name='Handler_prepare'
order by variable_name;
- if @@global.binlog_format = 'ROW' then
+ if @binlog_format = 'ROW' then
set commit_inc= commit_inc_row;
set prepare_inc= prepare_inc_row;
else
diff --git a/mysql-test/include/ctype_german.inc b/mysql-test/include/ctype_german.inc
new file mode 100644
index 00000000000..14d09358bea
--- /dev/null
+++ b/mysql-test/include/ctype_german.inc
@@ -0,0 +1,40 @@
+#
+# Bug #27877 incorrect german order in utf8_general_ci
+#
+# Testing if "SHARP S" is equal to "S",
+# like in latin1_german1_ci, utf8_general_ci, ucs2_general_ci
+# Or if "SHART S" is equal to "SS",
+# like in latin1_german2_ci, utf8_unicode_ci, ucs2_unicode_ci
+#
+# Also testing A-uml, O-uml, U-uml
+#
+
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+
+#
+# Create a table with a varchar(x) column,
+# using current values of
+# @@character_set_connection and @@collation_connection.
+#
+
+create table t1 as select repeat(' ', 64) as s1;
+select collation(s1) from t1;
+delete from t1;
+
+#
+# Populate data
+#
+
+insert into t1 values ('a'),('ae'),(_latin1 0xE4);
+insert into t1 values ('o'),('oe'),(_latin1 0xF6);
+insert into t1 values ('s'),('ss'),(_latin1 0xDF);
+insert into t1 values ('u'),('ue'),(_latin1 0xFC);
+
+#
+# Check order
+#
+select s1, hex(s1) from t1 order by s1, binary s1;
+select group_concat(s1 order by binary s1) from t1 group by s1;
+drop table t1;
diff --git a/mysql-test/include/ctype_like_range_f1f2.inc b/mysql-test/include/ctype_like_range_f1f2.inc
new file mode 100644
index 00000000000..54ea1b4c665
--- /dev/null
+++ b/mysql-test/include/ctype_like_range_f1f2.inc
@@ -0,0 +1,25 @@
+#
+# Bug#32510 LIKE search fails with indexed 'eucjpms' and 'ujis' char column
+#
+# Testing my_ctype_like_range_xxx
+# (used in LIKE optimization for an indexed column)
+#
+
+# Create table using @@character_set_connection and @@collation_connection
+# for the string columns.
+
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+
+# Check pattern (important for ucs2, utf16, utf32)
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+
+--echo 3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+DROP TABLE t1;
diff --git a/mysql-test/include/diff_tables.inc b/mysql-test/include/diff_tables.inc
new file mode 100644
index 00000000000..d15dd56b35d
--- /dev/null
+++ b/mysql-test/include/diff_tables.inc
@@ -0,0 +1,122 @@
+# ==== Purpose ====
+#
+# Check if the two given tables (possibly residing on different
+# master/slave servers) are equal.
+#
+# ==== Usage ====
+#
+# The tables to check are given by the test language variables
+# $diff_table_1 and $diff_table_2. They must be of the
+# following form:
+#
+# [master:|slave:]database.table
+#
+# I.e., both database and table must be speicified. Optionally, you
+# can prefix the name with 'master:' (to read the table on master) or
+# with 'slave:' (to read the table on slave). If no prefix is given,
+# reads the table from the current connection. If one of these
+# variables has a prefix, both should have a prefix.
+#
+# ==== Side effects ====
+#
+# - Prints "Comparing tables $diff_table_1 and $diff_tables_2".
+#
+# - If the tables are different, prints the difference in a
+# system-specific format (unified diff if supported) and generates
+# an error.
+#
+# - If $diff_table_1 or $diff_table_2 begins with 'master:' or
+# 'slave:', it will stay connected to one of those hosts after
+# execution. The host is only guaranteed to remain unchanged if
+# none of $diff_table_1 or $diff_table_2 begins with 'master:' or
+# 'slave:'.
+#
+# ==== Bugs ====
+#
+# - It is currently not possible to use this for tables that are
+# supposed to be different, because if the files are different:
+# - 'diff' produces system-dependent output,
+# - the output includes the absolute path of the compared files,
+# - the output includes a timestamp.
+# To fix that, we'd probably have to use SQL to compute the
+# symmetric difference between the tables. I'm not sure how to do
+# that efficiently. If we implement this, it would be nice to
+# compare the table definitions too.
+#
+# - It actually compares the result of "SELECT * FROM table ORDER BY
+# col1, col2, ..., colN INTO OUTFILE 'file'". Hence, it is assumed
+# that the comparison orders for both tables are equal and that two
+# rows that are equal in the comparison order cannot differ, e.g.,
+# by character case.
+
+
+# ==== Save both tables to file ====
+
+--echo Comparing tables $diff_table_1 and $diff_table_2
+disable_query_log;
+
+--error 0,1
+--remove_file $MYSQLTEST_VARDIR/tmp/diff_table_1
+--error 0,1
+--remove_file $MYSQLTEST_VARDIR/tmp/diff_table_2
+
+let $_diff_table=$diff_table_2;
+let $_diff_i=2;
+while ($_diff_i) {
+
+ # Parse out any leading "master:" or "slave:" from the table
+ # specification and connect the appropriate server.
+ let $_diff_conn_master=`SELECT SUBSTR('$_diff_table', 1, 7) = 'master:'`;
+ if ($_diff_conn_master) {
+ let $_diff_table=`SELECT SUBSTR('$_diff_table', 8)`;
+ connection master;
+ }
+ let $_diff_conn_slave=`SELECT SUBSTR('$_diff_table', 1, 6) = 'slave:'`;
+ if ($_diff_conn_slave) {
+ let $_diff_table=`SELECT SUBSTR('$_diff_table', 7)`;
+ connection slave;
+ }
+
+ # Sanity-check the input.
+ let $_diff_error= `SELECT '$_diff_table' NOT LIKE '_%._%'`;
+ if ($_diff_error) {
+ --echo !!!ERROR IN TEST: \$diff_table_$_diff_i='$_diff_table' is not in the form database.table
+ exit;
+ }
+
+ # We need the output files to be sorted (so that diff_files does not
+ # think the files are different just because they are differently
+ # ordered). To this end, we first generate a query that sorts the
+ # table by all columns. Since ORDER BY accept column indices, we
+ # just generate a comma-separated list of all numbers from 1 to the
+ # number of columns in the table.
+ let $_diff_column_index=`SELECT MAX(ordinal_position)
+ FROM information_schema.columns
+ WHERE CONCAT(table_schema, '.', table_name) =
+ '$_diff_table'`;
+ let $_diff_column_list=$_diff_column_index;
+ dec $_diff_column_index;
+ while ($_diff_column_index) {
+ let $_diff_column_list=$_diff_column_index, $_diff_column_list;
+ dec $_diff_column_index;
+ }
+
+ # Now that we have the comma-separated list of columns, we can write
+ # the table to a file.
+ eval SELECT * FROM $_diff_table ORDER BY $_diff_column_list
+ INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/diff_table_$_diff_i';
+
+ # Do the same for $diff_table_1.
+ dec $_diff_i;
+ let $_diff_table=$diff_table_1;
+}
+
+
+# ==== Compare the generated files ====
+
+diff_files $MYSQLTEST_VARDIR/tmp/diff_table_1 $MYSQLTEST_VARDIR/tmp/diff_table_2;
+
+--remove_file $MYSQLTEST_VARDIR/tmp/diff_table_1
+--remove_file $MYSQLTEST_VARDIR/tmp/diff_table_2
+
+enable_query_log;
diff --git a/mysql-test/include/wait_for_binlog_event.inc b/mysql-test/include/wait_for_binlog_event.inc
new file mode 100644
index 00000000000..2a57c191413
--- /dev/null
+++ b/mysql-test/include/wait_for_binlog_event.inc
@@ -0,0 +1,33 @@
+# include/wait_for_binlog_event.inc
+#
+# SUMMARY
+#
+# Waits until SHOW BINLOG EVENTS has returned in last event a specified substring.
+#
+# USAGE
+#
+# let $wait_binlog_event= DROP;
+# --source include/wait_for_binlog_event.inc
+
+let $_loop_count= 300;
+let $_last_event= ;
+let $_event_pos= 1;
+
+while (`SELECT INSTR("$_last_event","$wait_binlog_event") = 0`)
+{
+ dec $_loop_count;
+ if (!$_loop_count)
+ {
+ SHOW BINLOG EVENTS;
+ --die ERROR: failed while waiting for $wait_binlog_event in binlog
+ }
+ real_sleep 0.1;
+ let $_event= query_get_value(SHOW BINLOG EVENTS, Info, $_event_pos);
+ let $_last_event= $_event;
+ while (`SELECT "$_event" != "No such row"`)
+ {
+ inc $_event_pos;
+ let $_last_event= $_event;
+ let $_event= query_get_value(SHOW BINLOG EVENTS, Info, $_event_pos);
+ }
+}
diff --git a/mysql-test/lib/mtr_report.pl b/mysql-test/lib/mtr_report.pl
index ecfdc00eaf9..debfc0f5726 100644
--- a/mysql-test/lib/mtr_report.pl
+++ b/mysql-test/lib/mtr_report.pl
@@ -279,6 +279,12 @@ sub mtr_report_stats ($) {
/Failed to open log/ or
/Failed to open the existing master info file/ or
/Forcing shutdown of [0-9]* plugins/ or
+
+ # Due to timing issues, it might be that this warning
+ # is printed when the server shuts down and the
+ # computer is loaded.
+ /Forcing close of thread \d+ user: '.*?'/ or
+
/Got error [0-9]* when reading table/ or
/Incorrect definition of table/ or
/Incorrect information in file/ or
@@ -383,6 +389,11 @@ sub mtr_report_stats ($) {
(/Failed to write to mysql\.\w+_log/
)) or
+ # rpl_bug33931 has deliberate failures
+ ($testname eq 'rpl.rpl_bug33931' and
+ (/Failed during slave.*thread initialization/
+ )) or
+
# rpl_temporary has an error on slave that can be ignored
($testname eq 'rpl.rpl_temporary' and
(/Slave: Can\'t find record in \'user\' Error_code: 1032/
diff --git a/mysql-test/r/commit_1innodb.result b/mysql-test/r/commit_1innodb.result
index 8598e231861..76eee3874d6 100644
--- a/mysql-test/r/commit_1innodb.result
+++ b/mysql-test/r/commit_1innodb.result
@@ -331,6 +331,7 @@ drop table if exists t1;
drop table if exists t2;
drop function if exists f1;
drop procedure if exists p_verify_status_increment;
+set @binlog_format=@@global.binlog_format;
set sql_mode=no_engine_substitution;
create table t1 (a int unique);
create table t2 (a int) engine=myisam;
@@ -355,7 +356,7 @@ select variable_value
from information_schema.session_status
where variable_name='Handler_commit' or variable_name='Handler_prepare'
order by variable_name;
-if @@global.binlog_format = 'ROW' then
+if @binlog_format = 'ROW' then
set commit_inc= commit_inc_row;
set prepare_inc= prepare_inc_row;
else
diff --git a/mysql-test/r/ctype_big5.result b/mysql-test/r/ctype_big5.result
index 8103e9b856f..9de10a5452b 100644
--- a/mysql-test/r/ctype_big5.result
+++ b/mysql-test/r/ctype_big5.result
@@ -124,6 +124,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
SET collation_connection='big5_bin';
create table t1 select repeat('a',4000) a;
delete from t1;
@@ -174,6 +191,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
SET NAMES big5;
CREATE TABLE t1 (a text) character set big5;
INSERT INTO t1 VALUES ('ùØ');
diff --git a/mysql-test/r/ctype_eucjpms.result b/mysql-test/r/ctype_eucjpms.result
index ad9666d0c86..21aa38b7fe6 100755
--- a/mysql-test/r/ctype_eucjpms.result
+++ b/mysql-test/r/ctype_eucjpms.result
@@ -9809,6 +9809,23 @@ eucjpms_japanese_ci 6109
eucjpms_japanese_ci 61
eucjpms_japanese_ci 6120
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
SET collation_connection='eucjpms_bin';
create table t1 select repeat('a',4000) a;
delete from t1;
@@ -9819,6 +9836,23 @@ eucjpms_bin 6109
eucjpms_bin 61
eucjpms_bin 6120
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
select hex(convert(_eucjpms 0xA5FE41 using ucs2));
hex(convert(_eucjpms 0xA5FE41 using ucs2))
003F0041
diff --git a/mysql-test/r/ctype_euckr.result b/mysql-test/r/ctype_euckr.result
index bb1b3f5995b..c2a1b70eda9 100644
--- a/mysql-test/r/ctype_euckr.result
+++ b/mysql-test/r/ctype_euckr.result
@@ -124,6 +124,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
SET collation_connection='euckr_bin';
create table t1 select repeat('a',4000) a;
delete from t1;
@@ -174,6 +191,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
SET NAMES euckr;
CREATE TABLE t1 (a text) character set euckr;
INSERT INTO t1 VALUES (0xA2E6),(0xFEF7);
diff --git a/mysql-test/r/ctype_gb2312.result b/mysql-test/r/ctype_gb2312.result
index 95246525368..42f6d6c6e3b 100644
--- a/mysql-test/r/ctype_gb2312.result
+++ b/mysql-test/r/ctype_gb2312.result
@@ -124,6 +124,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
SET collation_connection='gb2312_bin';
create table t1 select repeat('a',4000) a;
delete from t1;
@@ -174,6 +191,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
SET NAMES gb2312;
CREATE TABLE t1 (a text) character set gb2312;
INSERT INTO t1 VALUES (0xA2A1),(0xD7FE);
diff --git a/mysql-test/r/ctype_gbk.result b/mysql-test/r/ctype_gbk.result
index 8437e34be1e..0a326c3bf65 100644
--- a/mysql-test/r/ctype_gbk.result
+++ b/mysql-test/r/ctype_gbk.result
@@ -124,6 +124,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
SET collation_connection='gbk_bin';
create table t1 select repeat('a',4000) a;
delete from t1;
@@ -174,6 +191,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
SET NAMES gbk;
CREATE TABLE t1 (a text) character set gbk;
INSERT INTO t1 VALUES (0xA3A0),(0xA1A1);
diff --git a/mysql-test/r/ctype_latin1_de.result b/mysql-test/r/ctype_latin1_de.result
index 5733877237d..f826199bb1f 100644
--- a/mysql-test/r/ctype_latin1_de.result
+++ b/mysql-test/r/ctype_latin1_de.result
@@ -326,6 +326,41 @@ latin1_german2_ci 6109
latin1_german2_ci 61
latin1_german2_ci 6120
drop table t1;
+drop table if exists t1;
+create table t1 as select repeat(' ', 64) as s1;
+select collation(s1) from t1;
+collation(s1)
+latin1_german2_ci
+delete from t1;
+insert into t1 values ('a'),('ae'),(_latin1 0xE4);
+insert into t1 values ('o'),('oe'),(_latin1 0xF6);
+insert into t1 values ('s'),('ss'),(_latin1 0xDF);
+insert into t1 values ('u'),('ue'),(_latin1 0xFC);
+select s1, hex(s1) from t1 order by s1, binary s1;
+s1 hex(s1)
+a 61
+ae 6165
+ä E4
+o 6F
+oe 6F65
+ö F6
+s 73
+ss 7373
+ß DF
+u 75
+ue 7565
+ü FC
+select group_concat(s1 order by binary s1) from t1 group by s1;
+group_concat(s1 order by binary s1)
+a
+ae,ä
+o
+oe,ö
+s
+ss,ß
+u
+ue,ü
+drop table t1;
SET NAMES latin1;
CREATE TABLE t1 (
col1 varchar(255) NOT NULL default ''
diff --git a/mysql-test/r/ctype_sjis.result b/mysql-test/r/ctype_sjis.result
index 1c9d540d574..91d6ebd9795 100644
--- a/mysql-test/r/ctype_sjis.result
+++ b/mysql-test/r/ctype_sjis.result
@@ -121,6 +121,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
SET collation_connection='sjis_bin';
create table t1 select repeat('a',4000) a;
delete from t1;
@@ -171,6 +188,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
SET NAMES sjis;
SELECT HEX('²“‘@Œ\') FROM DUAL;
HEX('²“‘@Œ\')
diff --git a/mysql-test/r/ctype_uca.result b/mysql-test/r/ctype_uca.result
index 92b76802d0b..706e764b281 100644
--- a/mysql-test/r/ctype_uca.result
+++ b/mysql-test/r/ctype_uca.result
@@ -2647,6 +2647,41 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+drop table if exists t1;
+create table t1 as select repeat(' ', 64) as s1;
+select collation(s1) from t1;
+collation(s1)
+utf8_unicode_ci
+delete from t1;
+insert into t1 values ('a'),('ae'),(_latin1 0xE4);
+insert into t1 values ('o'),('oe'),(_latin1 0xF6);
+insert into t1 values ('s'),('ss'),(_latin1 0xDF);
+insert into t1 values ('u'),('ue'),(_latin1 0xFC);
+select s1, hex(s1) from t1 order by s1, binary s1;
+s1 hex(s1)
+a 61
+ä C3A4
+ae 6165
+o 6F
+ö C3B6
+oe 6F65
+s 73
+ss 7373
+ß C39F
+u 75
+ü C3BC
+ue 7565
+select group_concat(s1 order by binary s1) from t1 group by s1;
+group_concat(s1 order by binary s1)
+a,ä
+ae
+o,ö
+oe
+s
+ss,ß
+u,ü
+ue
+drop table t1;
CREATE TABLE t1 (id int, a varchar(30) character set utf8);
INSERT INTO t1 VALUES (1, _ucs2 0x01310069), (2, _ucs2 0x01310131);
INSERT INTO t1 VALUES (3, _ucs2 0x00690069), (4, _ucs2 0x01300049);
@@ -2815,5 +2850,22 @@ NULL
NULL
NULL
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F20025
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
set names utf8;
End for 5.0 tests
diff --git a/mysql-test/r/ctype_ucs.result b/mysql-test/r/ctype_ucs.result
index bd76f2a859f..dd9ceeb1450 100644
--- a/mysql-test/r/ctype_ucs.result
+++ b/mysql-test/r/ctype_ucs.result
@@ -613,6 +613,58 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+drop table if exists t1;
+create table t1 as select repeat(' ', 64) as s1;
+select collation(s1) from t1;
+collation(s1)
+ucs2_general_ci
+delete from t1;
+insert into t1 values ('a'),('ae'),(_latin1 0xE4);
+insert into t1 values ('o'),('oe'),(_latin1 0xF6);
+insert into t1 values ('s'),('ss'),(_latin1 0xDF);
+insert into t1 values ('u'),('ue'),(_latin1 0xFC);
+select s1, hex(s1) from t1 order by s1, binary s1;
+s1 hex(s1)
+a 0061
+ä 00E4
+ae 00610065
+o 006F
+ö 00F6
+oe 006F0065
+s 0073
+ß 00DF
+ss 00730073
+u 0075
+ü 00FC
+ue 00750065
+select group_concat(s1 order by binary s1) from t1 group by s1;
+group_concat(s1 order by binary s1)
+a,ä
+ae
+o,ö
+oe
+s,ß
+ss
+u,ü
+ue
+drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F20025
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
SET NAMES latin1;
SET collation_connection='ucs2_bin';
create table t1 select repeat('a',4000) a;
@@ -642,6 +694,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F20025
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
select hex(substr(_ucs2 0x00e400e50068,1));
hex(substr(_ucs2 0x00e400e50068,1))
00E400E50068
diff --git a/mysql-test/r/ctype_ujis.result b/mysql-test/r/ctype_ujis.result
index d95b8cf9efb..540ba178756 100644
--- a/mysql-test/r/ctype_ujis.result
+++ b/mysql-test/r/ctype_ujis.result
@@ -2257,6 +2257,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
SET collation_connection='ujis_bin';
create table t1 select repeat('a',4000) a;
delete from t1;
@@ -2307,6 +2324,23 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
select hex(convert(_ujis 0xA5FE41 using ucs2));
hex(convert(_ujis 0xA5FE41 using ucs2))
003F0041
diff --git a/mysql-test/r/ctype_utf8.result b/mysql-test/r/ctype_utf8.result
index 5c90c3b5e0b..12e6c9bb492 100644
--- a/mysql-test/r/ctype_utf8.result
+++ b/mysql-test/r/ctype_utf8.result
@@ -939,6 +939,41 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
+drop table if exists t1;
+create table t1 as select repeat(' ', 64) as s1;
+select collation(s1) from t1;
+collation(s1)
+utf8_general_ci
+delete from t1;
+insert into t1 values ('a'),('ae'),(_latin1 0xE4);
+insert into t1 values ('o'),('oe'),(_latin1 0xF6);
+insert into t1 values ('s'),('ss'),(_latin1 0xDF);
+insert into t1 values ('u'),('ue'),(_latin1 0xFC);
+select s1, hex(s1) from t1 order by s1, binary s1;
+s1 hex(s1)
+a 61
+ä C3A4
+ae 6165
+o 6F
+ö C3B6
+oe 6F65
+s 73
+ß C39F
+ss 7373
+u 75
+ü C3BC
+ue 7565
+select group_concat(s1 order by binary s1) from t1 group by s1;
+group_concat(s1 order by binary s1)
+a,ä
+ae
+o,ö
+oe
+s,ß
+ss
+u,ü
+ue
+drop table t1;
SET collation_connection='utf8_bin';
create table t1 select repeat('a',4000) a;
delete from t1;
diff --git a/mysql-test/r/multi_update.result b/mysql-test/r/multi_update.result
index d96927deed5..421a63cd54c 100644
--- a/mysql-test/r/multi_update.result
+++ b/mysql-test/r/multi_update.result
@@ -627,7 +627,7 @@ a b
4 4
show master status /* there must be the UPDATE query event */;
File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 336
+master-bin.000001 197
delete from t1;
delete from t2;
insert into t1 values (1,2),(3,4),(4,4);
@@ -637,7 +637,7 @@ UPDATE t2,t1 SET t2.a=t2.b where t2.a=t1.a;
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
show master status /* there must be the UPDATE query event */;
File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 351
+master-bin.000001 212
drop table t1, t2;
set @@session.binlog_format= @sav_binlog_format;
drop table if exists t1, t2, t3;
diff --git a/mysql-test/r/mysqlbinlog.result b/mysql-test/r/mysqlbinlog.result
index 4ffcb7cdeeb..7c5fdf5f3d0 100644
--- a/mysql-test/r/mysqlbinlog.result
+++ b/mysql-test/r/mysqlbinlog.result
@@ -19,10 +19,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
drop table if exists t1,t2,t3,t4,t5,t03,t04
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
@@ -61,10 +65,14 @@ ROLLBACK /* added by mysqlbinlog */;
DELIMITER /*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values ("Alas")
/*!*/;
DELIMITER ;
@@ -89,10 +97,14 @@ ROLLBACK /* added by mysqlbinlog */;
DELIMITER /*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values ("Alas")
/*!*/;
DELIMITER ;
@@ -107,10 +119,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
drop table if exists t1,t2,t3,t4,t5,t03,t04
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
@@ -149,10 +165,14 @@ ROLLBACK /* added by mysqlbinlog */;
DELIMITER /*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values ("Alas")
/*!*/;
DELIMITER ;
@@ -177,10 +197,14 @@ ROLLBACK /* added by mysqlbinlog */;
DELIMITER /*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values ("Alas")
/*!*/;
DELIMITER ;
@@ -195,6 +219,10 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1108844556/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1108844555/*!*/;
@@ -209,6 +237,10 @@ ROLLBACK /* added by mysqlbinlog */;
DELIMITER /*!*/;
use test/*!*/;
SET TIMESTAMP=1108844556/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1108844555/*!*/;
@@ -265,10 +297,14 @@ ERROR 42000: PROCEDURE test.p1 does not exist
DELIMITER /*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
CREATE DEFINER=`root`@`localhost` procedure p1()
begin
select 1;
@@ -311,10 +347,14 @@ flush logs;
DELIMITER /*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a varchar(64) character set utf8)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
diff --git a/mysql-test/r/mysqlbinlog2.result b/mysql-test/r/mysqlbinlog2.result
index 0c9ba34fc61..89fc4b87d29 100644
--- a/mysql-test/r/mysqlbinlog2.result
+++ b/mysql-test/r/mysqlbinlog2.result
@@ -18,61 +18,39 @@ insert into t1 values(null, "f");
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
-# at {pos}
-#{yymmdd} {HH:MM:SS} server id 1 end_log_pos {pos} Start: binlog v #, server v ## created {yymmdd} {HH:MM:SS} at startup
ROLLBACK/*!*/;
-# at {pos}
-#{yymmdd} {HH:MM:SS} server id 1 end_log_pos {pos} Query thread_id={integer} exec_time={integer} error_code=0
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
-# at {pos}
-#{yymmdd} {HH:MM:SS} server id 1 end_log_pos {pos} Intvar
SET INSERT_ID=1/*!*/;
-# at {pos}
-#{yymmdd} {HH:MM:SS} server id 1 end_log_pos {pos} Query thread_id={integer} exec_time={integer} error_code=0
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "a")
/*!*/;
-# at {pos}
-#{yymmdd} {HH:MM:SS} server id 1 end_log_pos {pos} Intvar
SET INSERT_ID=2/*!*/;
-# at {pos}
-#{yymmdd} {HH:MM:SS} server id 1 end_log_pos {pos} Query thread_id={integer} exec_time={integer} error_code=0
SET TIMESTAMP=1579609942/*!*/;
insert into t1 values(null, "b")
/*!*/;
-# at {pos}
-#{yymmdd} {HH:MM:SS} server id 1 end_log_pos {pos} Intvar
SET INSERT_ID=3/*!*/;
-# at {pos}
-#{yymmdd} {HH:MM:SS} server id 1 end_log_pos {pos} Query thread_id={integer} exec_time={integer} error_code=0
SET TIMESTAMP=1579609944/*!*/;
insert into t1 values(null, "c")
/*!*/;
-# at {pos}
-#{yymmdd} {HH:MM:SS} server id 1 end_log_pos {pos} Intvar
SET INSERT_ID=4/*!*/;
-# at {pos}
-#{yymmdd} {HH:MM:SS} server id 1 end_log_pos {pos} Query thread_id={integer} exec_time={integer} error_code=0
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "d")
/*!*/;
-# at {pos}
-#{yymmdd} {HH:MM:SS} server id 1 end_log_pos {pos} Intvar
SET INSERT_ID=5/*!*/;
-# at {pos}
-#{yymmdd} {HH:MM:SS} server id 1 end_log_pos {pos} Query thread_id={integer} exec_time={integer} error_code=0
SET TIMESTAMP=1579609946/*!*/;
insert into t1 values(null, "e")
/*!*/;
-# at {pos}
-#{yymmdd} {HH:MM:SS} server id 1 end_log_pos {pos} Rotate to master-bin.000002 pos: {pos}
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@@ -86,10 +64,14 @@ ROLLBACK/*!*/;
SET INSERT_ID=1/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "a")
/*!*/;
SET INSERT_ID=2/*!*/;
@@ -121,10 +103,14 @@ ROLLBACK/*!*/;
SET INSERT_ID=4/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609946/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "d")
/*!*/;
SET INSERT_ID=5/*!*/;
@@ -143,10 +129,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
SET INSERT_ID=1/*!*/;
@@ -174,10 +164,14 @@ ROLLBACK/*!*/;
SET INSERT_ID=4/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609946/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "d")
/*!*/;
DELIMITER ;
@@ -193,10 +187,14 @@ ROLLBACK/*!*/;
SET INSERT_ID=3/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609944/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "c")
/*!*/;
SET INSERT_ID=4/*!*/;
@@ -219,10 +217,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
SET INSERT_ID=1/*!*/;
@@ -246,10 +248,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
SET INSERT_ID=1/*!*/;
@@ -277,10 +283,14 @@ DELIMITER /*!*/;
SET INSERT_ID=6/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "f")
/*!*/;
DELIMITER ;
@@ -296,10 +306,14 @@ ROLLBACK/*!*/;
SET INSERT_ID=1/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "a")
/*!*/;
SET INSERT_ID=2/*!*/;
@@ -323,10 +337,14 @@ DELIMITER /*!*/;
SET INSERT_ID=6/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "f")
/*!*/;
DELIMITER ;
@@ -342,10 +360,14 @@ ROLLBACK/*!*/;
SET INSERT_ID=4/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609946/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "d")
/*!*/;
SET INSERT_ID=5/*!*/;
@@ -357,10 +379,14 @@ DELIMITER /*!*/;
SET INSERT_ID=6/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "f")
/*!*/;
DELIMITER ;
@@ -375,10 +401,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
SET INSERT_ID=1/*!*/;
@@ -417,10 +447,14 @@ ROLLBACK/*!*/;
SET INSERT_ID=3/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609944/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "c")
/*!*/;
SET INSERT_ID=4/*!*/;
@@ -436,10 +470,14 @@ DELIMITER /*!*/;
SET INSERT_ID=6/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "f")
/*!*/;
DELIMITER ;
@@ -454,10 +492,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
SET INSERT_ID=1/*!*/;
@@ -480,10 +522,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
SET INSERT_ID=1/*!*/;
@@ -519,10 +565,14 @@ ROLLBACK/*!*/;
SET INSERT_ID=1/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "a")
/*!*/;
SET INSERT_ID=2/*!*/;
@@ -553,10 +603,14 @@ DELIMITER /*!*/;
SET INSERT_ID=4/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609946/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "d")
/*!*/;
SET INSERT_ID=5/*!*/;
@@ -575,10 +629,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
SET INSERT_ID=1/*!*/;
@@ -605,10 +663,14 @@ DELIMITER /*!*/;
SET INSERT_ID=4/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609946/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "d")
/*!*/;
DELIMITER ;
@@ -624,10 +686,14 @@ ROLLBACK/*!*/;
SET INSERT_ID=3/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609944/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "c")
/*!*/;
SET INSERT_ID=4/*!*/;
@@ -650,10 +716,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
SET INSERT_ID=1/*!*/;
@@ -676,10 +746,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
SET INSERT_ID=1/*!*/;
@@ -707,10 +781,14 @@ DELIMITER /*!*/;
SET INSERT_ID=6/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "f")
/*!*/;
DELIMITER ;
@@ -726,10 +804,14 @@ ROLLBACK/*!*/;
SET INSERT_ID=1/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "a")
/*!*/;
SET INSERT_ID=2/*!*/;
@@ -753,10 +835,14 @@ DELIMITER /*!*/;
SET INSERT_ID=6/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "f")
/*!*/;
DELIMITER ;
@@ -771,10 +857,14 @@ DELIMITER /*!*/;
SET INSERT_ID=4/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609946/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "d")
/*!*/;
SET INSERT_ID=5/*!*/;
@@ -786,10 +876,14 @@ DELIMITER /*!*/;
SET INSERT_ID=6/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "f")
/*!*/;
DELIMITER ;
@@ -804,10 +898,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
SET INSERT_ID=1/*!*/;
@@ -846,10 +944,14 @@ ROLLBACK/*!*/;
SET INSERT_ID=3/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609944/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "c")
/*!*/;
SET INSERT_ID=4/*!*/;
@@ -865,10 +967,14 @@ DELIMITER /*!*/;
SET INSERT_ID=6/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609943/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values(null, "f")
/*!*/;
DELIMITER ;
@@ -883,10 +989,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
SET INSERT_ID=1/*!*/;
@@ -909,10 +1019,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1579609942/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int auto_increment not null primary key, b char(3))
/*!*/;
SET INSERT_ID=1/*!*/;
diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result
index a1b8eaa52f8..ffacd1cdee6 100644
--- a/mysql-test/r/mysqldump.result
+++ b/mysql-test/r/mysqldump.result
@@ -3870,181 +3870,6 @@ UNLOCK TABLES;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
DROP TABLE t1;
-create table t1 (a text , b text);
-create table t2 (a text , b text);
-insert t1 values ("Duck, Duck", "goose");
-insert t1 values ("Duck, Duck", "pidgeon");
-insert t2 values ("We the people", "in order to perform");
-insert t2 values ("a more perfect", "union");
-select * from t1;
-a b
-Duck, Duck goose
-Duck, Duck pidgeon
-select * from t2;
-a b
-We the people in order to perform
-a more perfect union
-test.t1: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
-test.t2: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
-select * from t1;
-a b
-Duck, Duck goose
-Duck, Duck pidgeon
-Duck, Duck goose
-Duck, Duck pidgeon
-select * from t2;
-a b
-We the people in order to perform
-a more perfect union
-We the people in order to perform
-a more perfect union
-create table words(a varchar(255));
-create table words2(b varchar(255));
-select * from t1;
-a b
-Duck, Duck goose
-Duck, Duck pidgeon
-Duck, Duck goose
-Duck, Duck pidgeon
-Duck, Duck goose
-Duck, Duck pidgeon
-select * from t2;
-a b
-We the people in order to perform
-a more perfect union
-We the people in order to perform
-a more perfect union
-We the people in order to perform
-a more perfect union
-select * from words;
-a
-Aarhus
-Aaron
-Ababa
-aback
-abaft
-abandon
-abandoned
-abandoning
-abandonment
-abandons
-Aarhus
-Aaron
-Ababa
-aback
-abaft
-abandon
-abandoned
-abandoning
-abandonment
-abandons
-abase
-abased
-abasement
-abasements
-abases
-abash
-abashed
-abashes
-abashing
-abasing
-abate
-abated
-abatement
-abatements
-abater
-abates
-abating
-Abba
-abbe
-abbey
-abbeys
-abbot
-abbots
-Abbott
-abbreviate
-abbreviated
-abbreviates
-abbreviating
-abbreviation
-abbreviations
-Abby
-abdomen
-abdomens
-abdominal
-abduct
-abducted
-abduction
-abductions
-abductor
-abductors
-abducts
-Abe
-abed
-Abel
-Abelian
-Abelson
-Aberdeen
-Abernathy
-aberrant
-aberration
-select * from words2;
-b
-abase
-abased
-abasement
-abasements
-abases
-abash
-abashed
-abashes
-abashing
-abasing
-abate
-abated
-abatement
-abatements
-abater
-abates
-abating
-Abba
-abbe
-abbey
-abbeys
-abbot
-abbots
-Abbott
-abbreviate
-abbreviated
-abbreviates
-abbreviating
-abbreviation
-abbreviations
-Abby
-abdomen
-abdomens
-abdominal
-abduct
-abducted
-abduction
-abductions
-abductor
-abductors
-abducts
-Abe
-abed
-Abel
-Abelian
-Abelson
-Aberdeen
-Abernathy
-aberrant
-aberration
-drop table words;
-mysql-import: Error: 1146, Table 'test.words' doesn't exist, when using table: words
-drop table t1;
-drop table t2;
-drop table words2;
#
# BUG# 16853: mysqldump doesn't show events
#
diff --git a/mysql-test/r/mysqltest.result b/mysql-test/r/mysqltest.result
index a7df1a523cf..48eb0bf5cc0 100644
--- a/mysql-test/r/mysqltest.result
+++ b/mysql-test/r/mysqltest.result
@@ -293,7 +293,7 @@ var5 from query that returns no row
failing query in let
mysqltest: At line 1: Error running query 'failing query': 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'failing query' at line 1
mysqltest: At line 1: Missing required argument 'filename' to command 'source'
-mysqltest: At line 1: Could not open file './non_existingFile'
+mysqltest: At line 1: Could not open './non_existingFile' for reading
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/recursive.sql": At line 1: Source directives are nesting too deep
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/error.sql": At line 1: query 'garbage ' failed: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'garbage' at line 1
@@ -443,7 +443,7 @@ ERROR 3D000: No database selected
Output from mysqltest-x.inc
Output from mysqltest-x.inc
Output from mysqltest-x.inc
-mysqltest: Could not open ./non_existing_file.inc: errno = 2
+mysqltest: Could not open './non_existing_file.inc' for reading: errno = 2
failing_statement;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'failing_statement' at line 1
failing_statement;
diff --git a/mysql-test/r/user_var-binlog.result b/mysql-test/r/user_var-binlog.result
index 44fcfc0c478..3a7d59798ae 100644
--- a/mysql-test/r/user_var-binlog.result
+++ b/mysql-test/r/user_var-binlog.result
@@ -21,10 +21,14 @@ ROLLBACK/*!*/;
SET @`a b`:=_latin1 0x68656C6C6F COLLATE `latin1_swedish_ci`/*!*/;
use test/*!*/;
SET TIMESTAMP=10000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
INSERT INTO t1 VALUES(@`a b`)
/*!*/;
SET @`var1`:=_latin1 0x273B616161 COLLATE `latin1_swedish_ci`/*!*/;
diff --git a/mysql-test/r/variables-notembedded.result b/mysql-test/r/variables-notembedded.result
new file mode 100644
index 00000000000..48a1719e2c7
--- /dev/null
+++ b/mysql-test/r/variables-notembedded.result
@@ -0,0 +1,17 @@
+---- Init ----
+set @my_slave_net_timeout =@@global.slave_net_timeout;
+---- Test ----
+set global slave_net_timeout=100;
+set global sql_slave_skip_counter=100;
+show variables like 'slave_compressed_protocol';
+Variable_name Value
+slave_compressed_protocol OFF
+show variables like 'slave_load_tmpdir';
+Variable_name Value
+slave_load_tmpdir SLAVE_LOAD_TMPDIR
+show variables like 'slave_skip_errors';
+Variable_name Value
+slave_skip_errors 3,100,137,643,1752
+---- Clean Up ----
+set global slave_net_timeout=default;
+set global sql_slave_skip_counter= 0;
diff --git a/mysql-test/suite/binlog/r/binlog_base64_flag.result b/mysql-test/suite/binlog/r/binlog_base64_flag.result
index 8e5d7def823..557f584fcc1 100644
--- a/mysql-test/suite/binlog/r/binlog_base64_flag.result
+++ b/mysql-test/suite/binlog/r/binlog_base64_flag.result
@@ -32,14 +32,17 @@ a
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
-#ROLLBACK/*!*/;
+<#>ROLLBACK/*!*/;
# at 102
-#use test/*!*/;
+<#>use test/*!*/;
SET TIMESTAMP=1196959712/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
+<#>SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a int) engine= myisam
/*!*/;
# at 203
diff --git a/mysql-test/suite/binlog/r/binlog_multi_engine.result b/mysql-test/suite/binlog/r/binlog_multi_engine.result
index 13227c5ecb1..8574a2351a1 100644
--- a/mysql-test/suite/binlog/r/binlog_multi_engine.result
+++ b/mysql-test/suite/binlog/r/binlog_multi_engine.result
@@ -3,8 +3,8 @@ CREATE TABLE t1b (b INT, c INT) ENGINE=BLACKHOLE;
CREATE TABLE t1n (e INT, f INT) ENGINE=NDB;
RESET MASTER;
SET SESSION BINLOG_FORMAT=STATEMENT;
-INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2);
+INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c;
*** Please look in binlog_multi_engine.test if you have a diff here ****
START TRANSACTION;
@@ -17,30 +17,28 @@ TRUNCATE t1b;
TRUNCATE t1n;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2)
master-bin.000001 # Query # # use `test`; BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2)
master-bin.000001 # Query # # use `test`; COMMIT
-master-bin.000001 # Query # # use `test`; BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2)
master-bin.000001 # Query # # use `test`; UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c
-master-bin.000001 # Query # # use `test`; COMMIT
master-bin.000001 # Query # # use `test`; BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2)
master-bin.000001 # Query # # use `test`; UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f
master-bin.000001 # Query # # use `test`; UPDATE t1n, t1b SET e = 2, b = 3 WHERE f = c
master-bin.000001 # Query # # use `test`; COMMIT
-master-bin.000001 # Query # # use `test`; TRUNCATE t1m
-master-bin.000001 # Query # # use `test`; TRUNCATE t1b
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1n)
master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; TRUNCATE t1m
+master-bin.000001 # Query # # use `test`; TRUNCATE t1b
master-bin.000001 # Query # # use `test`; TRUNCATE t1n
RESET MASTER;
SET SESSION BINLOG_FORMAT=MIXED;
-INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2);
+INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2);
UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c;
UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
@@ -52,21 +50,19 @@ TRUNCATE t1b;
TRUNCATE t1n;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2)
master-bin.000001 # Query # # use `test`; BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2)
master-bin.000001 # Query # # use `test`; COMMIT
-master-bin.000001 # Query # # use `test`; BEGIN
-master-bin.000001 # Query # # use `test`; UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c
-master-bin.000001 # Query # # use `test`; COMMIT
-master-bin.000001 # Query # # use `test`; TRUNCATE t1m
-master-bin.000001 # Query # # use `test`; TRUNCATE t1b
+master-bin.000001 # Query # # use `test`; INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1n)
master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c
+master-bin.000001 # Query # # use `test`; TRUNCATE t1m
+master-bin.000001 # Query # # use `test`; TRUNCATE t1b
master-bin.000001 # Query # # use `test`; TRUNCATE t1n
RESET MASTER;
SET SESSION BINLOG_FORMAT=ROW;
diff --git a/mysql-test/suite/binlog/r/binlog_row_ctype_cp932.result b/mysql-test/suite/binlog/r/binlog_row_ctype_cp932.result
index 655100203b5..a288923b03c 100644
--- a/mysql-test/suite/binlog/r/binlog_row_ctype_cp932.result
+++ b/mysql-test/suite/binlog/r/binlog_row_ctype_cp932.result
@@ -11399,6 +11399,23 @@ cp932_japanese_ci 6109
cp932_japanese_ci 61
cp932_japanese_ci 6120
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
SET collation_connection='cp932_bin';
create table t1 select repeat('a',4000) a;
delete from t1;
@@ -11409,6 +11426,23 @@ cp932_bin 6109
cp932_bin 61
cp932_bin 6120
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
create table t2 (a char(1));
insert into t2 values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
insert into t2 values ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
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 fa979dd7ac1..d26913da2b2 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
@@ -822,10 +822,8 @@ 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 # # use `test`; BEGIN
master-bin.000001 # Intvar # # INSERT_ID=6
master-bin.000001 # Query # # use `test`; UPDATE t4,t3 SET t4.a=t3.a + bug27417(1) /* top level non-ta table */
-master-bin.000001 # Query # # use `test`; ROLLBACK
select count(*) from t1 /* must be 4 */;
count(*)
4
diff --git a/mysql-test/suite/binlog/r/binlog_stm_ctype_cp932.result b/mysql-test/suite/binlog/r/binlog_stm_ctype_cp932.result
index 655100203b5..a288923b03c 100755
--- a/mysql-test/suite/binlog/r/binlog_stm_ctype_cp932.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_ctype_cp932.result
@@ -11399,6 +11399,23 @@ cp932_japanese_ci 6109
cp932_japanese_ci 61
cp932_japanese_ci 6120
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
SET collation_connection='cp932_bin';
create table t1 select repeat('a',4000) a;
delete from t1;
@@ -11409,6 +11426,23 @@ cp932_bin 6109
cp932_bin 61
cp932_bin 6120
drop table t1;
+CREATE TABLE t1 AS
+SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d;
+ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b);
+INSERT INTO t1 (a, b) VALUES (1, repeat(0xF1F2,5));
+INSERT INTO t1 (a, b) VALUES (2, repeat(0xF1F2,10));
+INSERT INTO t1 (a, b) VALUES (3, repeat(0xF1F2,11));
+INSERT INTO t1 (a, b) VALUES (4, repeat(0xF1F2,12));
+SELECT hex(concat(repeat(0xF1F2, 10), '%'));
+hex(concat(repeat(0xF1F2, 10), '%'))
+F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F225
+3 rows expected
+SELECT a, hex(b), c FROM t1 WHERE b LIKE concat(repeat(0xF1F2,10), '%');
+a hex(b) c
+2 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+3 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+4 F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2F1F2
+DROP TABLE t1;
create table t2 (a char(1));
insert into t2 values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
insert into t2 values ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
diff --git a/mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result b/mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result
index 3030af7bd68..1b14686a97d 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result
@@ -15,10 +15,14 @@ ROLLBACK/*!*/;
SET @`v`:=_ucs2 0x006100620063 COLLATE `ucs2_general_ci`/*!*/;
use test/*!*/;
SET TIMESTAMP=10000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
insert into t2 values (@v)
/*!*/;
DELIMITER ;
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 50849e0887b..60104a64d94 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
@@ -549,10 +549,8 @@ 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 # # use `test`; BEGIN
master-bin.000001 # Intvar # # INSERT_ID=6
master-bin.000001 # Query # # use `test`; UPDATE t4,t3 SET t4.a=t3.a + bug27417(1) /* top level non-ta table */
-master-bin.000001 # Query # # use `test`; ROLLBACK
/* the output must denote there is the query */;
select count(*) from t1 /* must be 4 */;
count(*)
@@ -788,10 +786,8 @@ 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 # # use `test`; BEGIN
master-bin.000001 # Intvar # # INSERT_ID=6
master-bin.000001 # Query # # use `test`; UPDATE t4,t3 SET t4.a=t3.a + bug27417(1) /* top level non-ta table */
-master-bin.000001 # Query # # use `test`; ROLLBACK
select count(*) from t1 /* must be 4 */;
count(*)
4
diff --git a/mysql-test/suite/binlog/r/binlog_unsafe.result b/mysql-test/suite/binlog/r/binlog_unsafe.result
index 47284ed8bc3..e7c0702af46 100644
--- a/mysql-test/suite/binlog/r/binlog_unsafe.result
+++ b/mysql-test/suite/binlog/r/binlog_unsafe.result
@@ -1,13 +1,194 @@
-SET BINLOG_FORMAT=STATEMENT;
-CREATE TABLE t1 (a CHAR(40));
-CREATE TABLE t2 (a INT AUTO_INCREMENT PRIMARY KEY);
-CREATE TABLE t3 (b INT AUTO_INCREMENT PRIMARY KEY);
-CREATE VIEW v1(a,b) AS SELECT a,b FROM t2,t3;
-INSERT INTO t1 SELECT UUID();
-Warnings:
-Warning 1592 Statement is not safe to log in statement format.
-SHOW WARNINGS;
-Level Warning
-Code 1592
-Message Statement is not safe to log in statement format.
-DROP TABLE t1,t2,t3;
+==== Setup tables ====
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (a CHAR(40));
+CREATE TABLE t3 (a INT AUTO_INCREMENT PRIMARY KEY);
+CREATE TABLE trigger_table (a CHAR(7));
+CREATE TABLE trigger_table2 (a INT);
+==== Non-deterministic statements ====
+INSERT DELAYED INTO t1 VALUES (5);
+==== Some variables that *should* be unsafe ====
+---- Insert directly ----
+INSERT INTO t1 VALUES (@@global.sync_binlog);
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+INSERT INTO t1 VALUES (@@session.insert_id);
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+INSERT INTO t1 VALUES (@@global.auto_increment_increment);
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+INSERT INTO t2 SELECT UUID();
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+INSERT INTO t2 VALUES (@@session.sql_mode);
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+INSERT INTO t2 VALUES (@@global.init_slave);
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+INSERT INTO t2 VALUES (@@hostname);
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+---- Insert from stored procedure ----
+CREATE PROCEDURE proc()
+BEGIN
+INSERT INTO t1 VALUES (@@global.sync_binlog);
+INSERT INTO t1 VALUES (@@session.insert_id);
+INSERT INTO t1 VALUES (@@global.auto_increment_increment);
+INSERT INTO t2 SELECT UUID();
+INSERT INTO t2 VALUES (@@session.sql_mode);
+INSERT INTO t2 VALUES (@@global.init_slave);
+INSERT INTO t2 VALUES (@@hostname);
+END|
+CALL proc();
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+---- Insert from stored function ----
+CREATE FUNCTION func()
+RETURNS INT
+BEGIN
+INSERT INTO t1 VALUES (@@global.sync_binlog);
+INSERT INTO t1 VALUES (@@session.insert_id);
+INSERT INTO t1 VALUES (@@global.auto_increment_increment);
+INSERT INTO t2 SELECT UUID();
+INSERT INTO t2 VALUES (@@session.sql_mode);
+INSERT INTO t2 VALUES (@@global.init_slave);
+INSERT INTO t2 VALUES (@@hostname);
+RETURN 0;
+END|
+SELECT func();
+func()
+0
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+---- Insert from trigger ----
+CREATE TRIGGER trig
+BEFORE INSERT ON trigger_table
+FOR EACH ROW
+BEGIN
+INSERT INTO t1 VALUES (@@global.sync_binlog);
+INSERT INTO t1 VALUES (@@session.insert_id);
+INSERT INTO t1 VALUES (@@global.auto_increment_increment);
+INSERT INTO t2 SELECT UUID();
+INSERT INTO t2 VALUES (@@session.sql_mode);
+INSERT INTO t2 VALUES (@@global.init_slave);
+INSERT INTO t2 VALUES (@@hostname);
+END|
+INSERT INTO trigger_table VALUES ('bye.');
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+---- Insert from prepared statement ----
+PREPARE p1 FROM 'INSERT INTO t1 VALUES (@@global.sync_binlog)';
+PREPARE p2 FROM 'INSERT INTO t1 VALUES (@@session.insert_id)';
+PREPARE p3 FROM 'INSERT INTO t1 VALUES (@@global.auto_increment_increment)';
+PREPARE p4 FROM 'INSERT INTO t2 SELECT UUID()';
+PREPARE p5 FROM 'INSERT INTO t2 VALUES (@@session.sql_mode)';
+PREPARE p6 FROM 'INSERT INTO t2 VALUES (@@global.init_slave)';
+PREPARE p7 FROM 'INSERT INTO t2 VALUES (@@hostname)';
+EXECUTE p1;
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+EXECUTE p2;
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+EXECUTE p3;
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+EXECUTE p4;
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+EXECUTE p5;
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+EXECUTE p6;
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+EXECUTE p7;
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+---- Insert from nested call of triggers / functions / procedures ----
+CREATE PROCEDURE proc1()
+INSERT INTO trigger_table VALUES ('ha!')|
+CREATE FUNCTION func2()
+RETURNS INT
+BEGIN
+CALL proc1();
+RETURN 0;
+END|
+CREATE TRIGGER trig3
+BEFORE INSERT ON trigger_table2
+FOR EACH ROW
+BEGIN
+DECLARE tmp INT;
+SELECT func2() INTO tmp;
+END|
+CREATE PROCEDURE proc4()
+INSERT INTO trigger_table2 VALUES (1)|
+CREATE FUNCTION func5()
+RETURNS INT
+BEGIN
+CALL proc4;
+RETURN 0;
+END|
+PREPARE prep6 FROM 'SELECT func5()'|
+EXECUTE prep6;
+func5()
+0
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+Warning 1592 Statement is not safe to log in statement format.
+==== Variables that should *not* be unsafe ====
+INSERT INTO t1 VALUES (@@session.pseudo_thread_id);
+INSERT INTO t1 VALUES (@@session.pseudo_thread_id);
+INSERT INTO t1 VALUES (@@session.foreign_key_checks);
+INSERT INTO t1 VALUES (@@session.sql_auto_is_null);
+INSERT INTO t1 VALUES (@@session.unique_checks);
+INSERT INTO t1 VALUES (@@session.auto_increment_increment);
+INSERT INTO t1 VALUES (@@session.auto_increment_offset);
+INSERT INTO t2 VALUES (@@session.character_set_client);
+INSERT INTO t2 VALUES (@@session.collation_connection);
+INSERT INTO t2 VALUES (@@session.collation_server);
+INSERT INTO t2 VALUES (@@session.time_zone);
+INSERT INTO t2 VALUES (@@session.lc_time_names);
+INSERT INTO t2 VALUES (@@session.collation_database);
+INSERT INTO t2 VALUES (@@session.timestamp);
+INSERT INTO t2 VALUES (@@session.last_insert_id);
+SET @my_var= 4711;
+INSERT INTO t1 VALUES (@my_var);
+SET insert_id=12;
+INSERT INTO t3 VALUES (NULL);
+==== Clean up ====
+DROP PROCEDURE proc;
+DROP FUNCTION func;
+DROP TRIGGER trig;
+DROP PROCEDURE proc1;
+DROP FUNCTION func2;
+DROP TRIGGER trig3;
+DROP PROCEDURE proc4;
+DROP FUNCTION func5;
+DROP PREPARE prep6;
+DROP TABLE t1, t2, t3, trigger_table, trigger_table2;
diff --git a/mysql-test/suite/binlog/t/binlog_base64_flag.test b/mysql-test/suite/binlog/t/binlog_base64_flag.test
index 01f98b8a134..a25c6b68420 100644
--- a/mysql-test/suite/binlog/t/binlog_base64_flag.test
+++ b/mysql-test/suite/binlog/t/binlog_base64_flag.test
@@ -70,7 +70,7 @@ select * from t1;
--echo ==== Test --base64-output=never on a binlog with row events ====
# mysqlbinlog should fail
---replace_regex /#[0-9][0-9][0-9][0-9][0-9][0-9] .*/#/
+--replace_regex /#[0-9][0-9][0-9][0-9][0-9][0-9] .*/<#>/ /SET \@\@session.pseudo_thread_id.*/<#>/
error 1;
exec $MYSQL_BINLOG --base64-output=never suite/binlog/std_data/bug32407.001;
# the above line should output the query log event and then stop
diff --git a/mysql-test/suite/binlog/t/binlog_multi_engine.test b/mysql-test/suite/binlog/t/binlog_multi_engine.test
index 058aca0f715..bf84eed6ec1 100644
--- a/mysql-test/suite/binlog/t/binlog_multi_engine.test
+++ b/mysql-test/suite/binlog/t/binlog_multi_engine.test
@@ -15,11 +15,16 @@ RESET MASTER;
SET SESSION BINLOG_FORMAT=STATEMENT;
-INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2);
+INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c;
+# Here and below we need to wait when some event appears in binlog
+# to avoid unsrted mixing local events and from NDB
+let $wait_binlog_event= t1m, t1b;
+source include/wait_for_binlog_event.inc;
+
echo *** Please look in binlog_multi_engine.test if you have a diff here ****;
START TRANSACTION;
INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2);
@@ -27,20 +32,33 @@ UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
UPDATE t1n, t1b SET e = 2, b = 3 WHERE f = c;
COMMIT;
+let $wait_binlog_event= COMMIT;
+source include/wait_for_binlog_event.inc;
+
TRUNCATE t1m;
TRUNCATE t1b;
TRUNCATE t1n;
+let $wait_binlog_event= t1n;
+source include/wait_for_binlog_event.inc;
+
source include/show_binlog_events.inc;
RESET MASTER;
SET SESSION BINLOG_FORMAT=MIXED;
-INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2);
+INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
+
+let $wait_binlog_event= t1m;
+source include/wait_for_binlog_event.inc;
+
INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2);
+let $wait_binlog_event= COMMIT;
+source include/wait_for_binlog_event.inc;
+
UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c;
error ER_BINLOG_LOGGING_IMPOSSIBLE;
UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
diff --git a/mysql-test/suite/binlog/t/binlog_unsafe.test b/mysql-test/suite/binlog/t/binlog_unsafe.test
index f34c22dc5f7..f57ab668c58 100644
--- a/mysql-test/suite/binlog/t/binlog_unsafe.test
+++ b/mysql-test/suite/binlog/t/binlog_unsafe.test
@@ -1,18 +1,238 @@
-# Test to check that a warning is generated for unsafe statements
-# executed under statement mode logging.
+# ==== Purpose ====
+#
+# Some statements can not be written to the binlog in a safe manner
+# with statement-based replication, either because they rely on
+# features that are local to the server they are replicated from
+# (e.g., @@variables), or because they include nondeterministic
+# queries (e.g., LIMIT), or because the time at which the query is
+# executed cannot be determined (e.g., INSERT DELAYED). Such
+# statements should be marked unsafe. All unsafe statements should
+# give a warning.
+#
+# This test verifies that a warning is generated for statements that
+# should be unsafe, when they are executed under statement mode
+# logging.
+#
+# All variables should be unsafe, with some exceptions. Therefore,
+# this test also verifies that the exceptions do *not* generare a
+# warning.
+#
+#
+# ==== Method ====
+#
+# We try an INSERT DELAYED statement and verify that a warning is
+# issued.
+#
+# We try to insert unsafe variables into a table in several ways:
+# directly with an INSERT statement, from a stored procedure, from a
+# stored function, from a trigger, from a prepared statement, and from
+# a complicated nesting of triggers, functions, procedures, and
+# prepared statements. In all cases, a warning should be issued.
+#
+# We try to insert the variables that should not be unsafe into a
+# table, and verify that *no* warning is issued.
+#
+#
+# ==== Related bugs and worklogs ====
+#
+# WL#3339: Issue warnings when statement-based replication may fail
+# BUG#31168: @@hostname does not replicate
+# BUG#34732: mysqlbinlog does not print default values for auto_increment variables
+# BUG#34768: nondeterministic INSERT using LIMIT logged in stmt mode if binlog_format=mixed
+#
+#
+# ==== Related test cases ====
+#
+# rpl.rpl_variables verifies that variables which cannot be replicated
+# safely in statement mode are replicated correctly in mixed or row
+# mode.
+#
+# rpl.rpl_variables_stm tests the small subset of variables that
+# actually can be replicated safely in statement mode.
+#
+#
+# ==== Todo ====
+#
+# There are several other ways to create unsafe statements: see, e.g.,
+# WL#3339, BUG#34768.
source include/have_log_bin.inc;
+source include/have_binlog_format_statement.inc;
-SET BINLOG_FORMAT=STATEMENT;
+--echo ==== Setup tables ====
-CREATE TABLE t1 (a CHAR(40));
-CREATE TABLE t2 (a INT AUTO_INCREMENT PRIMARY KEY);
-CREATE TABLE t3 (b INT AUTO_INCREMENT PRIMARY KEY);
-CREATE VIEW v1(a,b) AS SELECT a,b FROM t2,t3;
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (a CHAR(40));
+CREATE TABLE t3 (a INT AUTO_INCREMENT PRIMARY KEY);
+CREATE TABLE trigger_table (a CHAR(7));
+CREATE TABLE trigger_table2 (a INT);
-INSERT INTO t1 SELECT UUID();
-query_vertical SHOW WARNINGS;
-DROP TABLE t1,t2,t3;
+--echo ==== Non-deterministic statements ====
+INSERT DELAYED INTO t1 VALUES (5);
+
+--echo ==== Some variables that *should* be unsafe ====
+
+--echo ---- Insert directly ----
+
+INSERT INTO t1 VALUES (@@global.sync_binlog);
+INSERT INTO t1 VALUES (@@session.insert_id);
+INSERT INTO t1 VALUES (@@global.auto_increment_increment);
+INSERT INTO t2 SELECT UUID();
+INSERT INTO t2 VALUES (@@session.sql_mode);
+INSERT INTO t2 VALUES (@@global.init_slave);
+INSERT INTO t2 VALUES (@@hostname);
+
+--echo ---- Insert from stored procedure ----
+
+DELIMITER |;
+CREATE PROCEDURE proc()
+BEGIN
+ INSERT INTO t1 VALUES (@@global.sync_binlog);
+ INSERT INTO t1 VALUES (@@session.insert_id);
+ INSERT INTO t1 VALUES (@@global.auto_increment_increment);
+ INSERT INTO t2 SELECT UUID();
+ INSERT INTO t2 VALUES (@@session.sql_mode);
+ INSERT INTO t2 VALUES (@@global.init_slave);
+ INSERT INTO t2 VALUES (@@hostname);
+END|
+DELIMITER ;|
+
+CALL proc();
+
+--echo ---- Insert from stored function ----
+
+DELIMITER |;
+CREATE FUNCTION func()
+RETURNS INT
+BEGIN
+ INSERT INTO t1 VALUES (@@global.sync_binlog);
+ INSERT INTO t1 VALUES (@@session.insert_id);
+ INSERT INTO t1 VALUES (@@global.auto_increment_increment);
+ INSERT INTO t2 SELECT UUID();
+ INSERT INTO t2 VALUES (@@session.sql_mode);
+ INSERT INTO t2 VALUES (@@global.init_slave);
+ INSERT INTO t2 VALUES (@@hostname);
+ RETURN 0;
+END|
+DELIMITER ;|
+
+SELECT func();
+
+--echo ---- Insert from trigger ----
+
+DELIMITER |;
+CREATE TRIGGER trig
+BEFORE INSERT ON trigger_table
+FOR EACH ROW
+BEGIN
+ INSERT INTO t1 VALUES (@@global.sync_binlog);
+ INSERT INTO t1 VALUES (@@session.insert_id);
+ INSERT INTO t1 VALUES (@@global.auto_increment_increment);
+ INSERT INTO t2 SELECT UUID();
+ INSERT INTO t2 VALUES (@@session.sql_mode);
+ INSERT INTO t2 VALUES (@@global.init_slave);
+ INSERT INTO t2 VALUES (@@hostname);
+END|
+DELIMITER ;|
+
+INSERT INTO trigger_table VALUES ('bye.');
+
+--echo ---- Insert from prepared statement ----
+
+PREPARE p1 FROM 'INSERT INTO t1 VALUES (@@global.sync_binlog)';
+PREPARE p2 FROM 'INSERT INTO t1 VALUES (@@session.insert_id)';
+PREPARE p3 FROM 'INSERT INTO t1 VALUES (@@global.auto_increment_increment)';
+PREPARE p4 FROM 'INSERT INTO t2 SELECT UUID()';
+PREPARE p5 FROM 'INSERT INTO t2 VALUES (@@session.sql_mode)';
+PREPARE p6 FROM 'INSERT INTO t2 VALUES (@@global.init_slave)';
+PREPARE p7 FROM 'INSERT INTO t2 VALUES (@@hostname)';
+
+EXECUTE p1; EXECUTE p2; EXECUTE p3; EXECUTE p4; EXECUTE p5;
+EXECUTE p6; EXECUTE p7;
+
+--echo ---- Insert from nested call of triggers / functions / procedures ----
+
+DELIMITER |;
+
+# proc1: cause trigger 'trig' above to be triggered.
+CREATE PROCEDURE proc1()
+ INSERT INTO trigger_table VALUES ('ha!')|
+
+# func2: call proc1 above.
+CREATE FUNCTION func2()
+RETURNS INT
+BEGIN
+ CALL proc1();
+ RETURN 0;
+END|
+
+# trig3: call func2 above
+CREATE TRIGGER trig3
+BEFORE INSERT ON trigger_table2
+FOR EACH ROW
+BEGIN
+ DECLARE tmp INT;
+ SELECT func2() INTO tmp;
+END|
+
+# proc4: cause trig3 above to be triggered.
+CREATE PROCEDURE proc4()
+ INSERT INTO trigger_table2 VALUES (1)|
+
+# func5: call proc4 above.
+CREATE FUNCTION func5()
+RETURNS INT
+BEGIN
+ CALL proc4;
+ RETURN 0;
+END|
+
+# prep6: call func5() above.
+PREPARE prep6 FROM 'SELECT func5()'|
+
+DELIMITER ;|
+
+# try a complicated call path to trigger 'trig'.
+EXECUTE prep6;
+
+
+--echo ==== Variables that should *not* be unsafe ====
+
+INSERT INTO t1 VALUES (@@session.pseudo_thread_id);
+INSERT INTO t1 VALUES (@@session.pseudo_thread_id);
+INSERT INTO t1 VALUES (@@session.foreign_key_checks);
+INSERT INTO t1 VALUES (@@session.sql_auto_is_null);
+INSERT INTO t1 VALUES (@@session.unique_checks);
+INSERT INTO t1 VALUES (@@session.auto_increment_increment);
+INSERT INTO t1 VALUES (@@session.auto_increment_offset);
+INSERT INTO t2 VALUES (@@session.character_set_client);
+INSERT INTO t2 VALUES (@@session.collation_connection);
+INSERT INTO t2 VALUES (@@session.collation_server);
+INSERT INTO t2 VALUES (@@session.time_zone);
+INSERT INTO t2 VALUES (@@session.lc_time_names);
+INSERT INTO t2 VALUES (@@session.collation_database);
+INSERT INTO t2 VALUES (@@session.timestamp);
+INSERT INTO t2 VALUES (@@session.last_insert_id);
+SET @my_var= 4711;
+INSERT INTO t1 VALUES (@my_var);
+
+# using insert_id implicitly should be ok.
+SET insert_id=12;
+INSERT INTO t3 VALUES (NULL);
+
+
+--echo ==== Clean up ====
+
+DROP PROCEDURE proc;
+DROP FUNCTION func;
+DROP TRIGGER trig;
+DROP PROCEDURE proc1;
+DROP FUNCTION func2;
+DROP TRIGGER trig3;
+DROP PROCEDURE proc4;
+DROP FUNCTION func5;
+DROP PREPARE prep6;
+DROP TABLE t1, t2, t3, trigger_table, trigger_table2;
diff --git a/mysql-test/suite/binlog/t/disabled.def b/mysql-test/suite/binlog/t/disabled.def
index a6e73fa31d8..888298bbb09 100644
--- a/mysql-test/suite/binlog/t/disabled.def
+++ b/mysql-test/suite/binlog/t/disabled.def
@@ -9,4 +9,3 @@
# Do not use any TAB characters for whitespace.
#
##############################################################################
-binlog_multi_engine : Bug#32663 binlog_multi_engine.test fails randomly
diff --git a/mysql-test/suite/bugs/r/rpl_bug23533.result b/mysql-test/suite/bugs/r/rpl_bug23533.result
new file mode 100644
index 00000000000..1dda75a69b0
--- /dev/null
+++ b/mysql-test/suite/bugs/r/rpl_bug23533.result
@@ -0,0 +1,23 @@
+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;
+DROP TABLE IF EXISTS t1,t2;
+SET AUTOCOMMIT=0;
+SET GLOBAL max_binlog_cache_size=4096;
+SHOW VARIABLES LIKE 'max_binlog_cache_size';
+Variable_name Value
+max_binlog_cache_size 4096
+CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT, b TEXT, PRIMARY KEY(a)) ENGINE=InnoDB;
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+1000
+START TRANSACTION;
+CREATE TABLE t2 SELECT * FROM t1;
+ERROR HY000: Writing one row to the row-based binary log failed
+COMMIT;
+SHOW TABLES LIKE 't%';
+Tables_in_test (t%)
+t1
diff --git a/mysql-test/suite/bugs/r/rpl_bug31583.result b/mysql-test/suite/bugs/r/rpl_bug31583.result
index a5e38e9b2d8..74846607313 100644
--- a/mysql-test/suite/bugs/r/rpl_bug31583.result
+++ b/mysql-test/suite/bugs/r/rpl_bug31583.result
@@ -13,3 +13,4 @@ a b
SELECT * FROM t1 ORDER BY a;
a b
3 -3
+DROP TABLE t1;
diff --git a/mysql-test/suite/bugs/t/rpl_bug23533.test b/mysql-test/suite/bugs/t/rpl_bug23533.test
new file mode 100644
index 00000000000..397f1102f0e
--- /dev/null
+++ b/mysql-test/suite/bugs/t/rpl_bug23533.test
@@ -0,0 +1,43 @@
+#############################################################
+# Author: Serge Kozlov <skozlov@mysql.com>
+# Date: 02/26/2008
+# Purpose: testing bug report
+# Bug#23533: CREATE SELECT max_binlog_cache_size test
+# case needed
+#############################################################
+
+--source include/have_innodb.inc
+--source include/have_binlog_format_row.inc
+--source include/master-slave.inc
+
+
+--disable_warnings
+DROP TABLE IF EXISTS t1,t2;
+--enable_warnings
+
+SET AUTOCOMMIT=0;
+SET GLOBAL max_binlog_cache_size=4096;
+SHOW VARIABLES LIKE 'max_binlog_cache_size';
+
+CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT, b TEXT, PRIMARY KEY(a)) ENGINE=InnoDB;
+
+--disable_query_log
+let $i= 1000;
+while ($i)
+{
+ eval INSERT INTO t1 VALUES($i, REPEAT('x', 4096));
+ dec $i;
+}
+--enable_query_log
+
+SELECT COUNT(*) FROM t1;
+
+# Copied data from t1 into t2 large than max_binlog_cache_size
+START TRANSACTION;
+--error 1534
+CREATE TABLE t2 SELECT * FROM t1;
+COMMIT;
+SHOW TABLES LIKE 't%';
+
+
+# 5.1 End of Test
diff --git a/mysql-test/suite/ndb/r/ndb_binlog_format.result b/mysql-test/suite/ndb/r/ndb_binlog_format.result
index b42a528a460..30c2ca872ed 100644
--- a/mysql-test/suite/ndb/r/ndb_binlog_format.result
+++ b/mysql-test/suite/ndb/r/ndb_binlog_format.result
@@ -18,9 +18,7 @@ master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1,1), (1,2), (2
master-bin.000001 # Query # # use `test`; BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES (1,1), (1,2), (2,1), (2,2)
master-bin.000001 # Query # # use `test`; COMMIT
-master-bin.000001 # Query # # use `test`; BEGIN
master-bin.000001 # Query # # use `test`; UPDATE t1, t2 SET m = 2, b = 3 WHERE n = c
-master-bin.000001 # Query # # use `test`; COMMIT
master-bin.000001 # Query # # use `test`; BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES (1,1), (1,2), (2,1), (2,2)
master-bin.000001 # Query # # use `test`; UPDATE t1, t3 SET m = 2, e = 3 WHERE n = f
diff --git a/mysql-test/suite/rpl/r/rpl_bug33931.result b/mysql-test/suite/rpl/r/rpl_bug33931.result
new file mode 100644
index 00000000000..4043f04215b
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_bug33931.result
@@ -0,0 +1,43 @@
+reset master;
+stop slave;
+reset slave;
+start slave;
+show slave status;
+Slave_IO_State #
+Master_Host 127.0.0.1
+Master_User root
+Master_Port MASTER_PORT
+Connect_Retry 1
+Master_Log_File
+Read_Master_Log_Pos 4
+Relay_Log_File #
+Relay_Log_Pos #
+Relay_Master_Log_File
+Slave_IO_Running No
+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 0
+Last_Error
+Skip_Counter 0
+Exec_Master_Log_Pos 0
+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 0
+Last_IO_Error
+Last_SQL_Errno 0
+Last_SQL_Error
diff --git a/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result b/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result
index e268e4c2e51..f0f41c02a84 100644
--- a/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result
@@ -399,6 +399,62 @@ set @b1 = concat(@b1,@b1);
INSERT INTO t8 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
*** Drop t8 ***
DROP TABLE t8;
+STOP SLAVE;
+RESET SLAVE;
+CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
+d TIMESTAMP,
+e INT NOT NULL) ENGINE='InnoDB';
+*** Create t9 on Master ***
+CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
+) ENGINE='InnoDB';
+RESET MASTER;
+*** Start Slave ***
+START SLAVE;
+*** Master Data Insert ***
+set @b1 = 'b1b1b1b1';
+set @b1 = concat(@b1,@b1);
+INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
+SHOW SLAVE STATUS;
+Slave_IO_State #
+Master_Host 127.0.0.1
+Master_User root
+Master_Port #
+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 1364
+Last_Error Could not execute Write_rows event on table test.t9; Field 'e' doesn't have a default value, Error_code: 1364; handler error HA_ERR_ROWS_EVENT_APPLY; the event's master log master-bin.000001, end_log_pos 330
+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 1364
+Last_SQL_Error Could not execute Write_rows event on table test.t9; Field 'e' doesn't have a default value, Error_code: 1364; handler error HA_ERR_ROWS_EVENT_APPLY; the event's master log master-bin.000001, end_log_pos 330
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
+START SLAVE;
*** Create t10 on slave ***
STOP SLAVE;
RESET SLAVE;
diff --git a/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result b/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result
index 364354d3a17..ad67e3ecf80 100644
--- a/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result
+++ b/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result
@@ -399,6 +399,62 @@ set @b1 = concat(@b1,@b1);
INSERT INTO t8 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
*** Drop t8 ***
DROP TABLE t8;
+STOP SLAVE;
+RESET SLAVE;
+CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
+d TIMESTAMP,
+e INT NOT NULL) ENGINE='MyISAM';
+*** Create t9 on Master ***
+CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
+) ENGINE='MyISAM';
+RESET MASTER;
+*** Start Slave ***
+START SLAVE;
+*** Master Data Insert ***
+set @b1 = 'b1b1b1b1';
+set @b1 = concat(@b1,@b1);
+INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
+SHOW SLAVE STATUS;
+Slave_IO_State #
+Master_Host 127.0.0.1
+Master_User root
+Master_Port #
+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 1364
+Last_Error Could not execute Write_rows event on table test.t9; Field 'e' doesn't have a default value, Error_code: 1364; handler error HA_ERR_ROWS_EVENT_APPLY; the event's master log master-bin.000001, end_log_pos 262
+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 1364
+Last_SQL_Error Could not execute Write_rows event on table test.t9; Field 'e' doesn't have a default value, Error_code: 1364; handler error HA_ERR_ROWS_EVENT_APPLY; the event's master log master-bin.000001, end_log_pos 262
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
+START SLAVE;
*** Create t10 on slave ***
STOP SLAVE;
RESET SLAVE;
diff --git a/mysql-test/suite/rpl/r/rpl_flushlog_loop.result b/mysql-test/suite/rpl/r/rpl_flushlog_loop.result
index ca06a5a328c..baa740bf250 100644
--- a/mysql-test/suite/rpl/r/rpl_flushlog_loop.result
+++ b/mysql-test/suite/rpl/r/rpl_flushlog_loop.result
@@ -23,7 +23,7 @@ start slave;
let $result_pattern= '%127.0.0.1%root%slave-bin.000001%slave-bin.000001%Yes%Yes%0%0%None%' ;
--source include/wait_slave_status.inc
-flush logs;
+FLUSH LOGS;
SHOW SLAVE STATUS;
Slave_IO_State #
Master_Host 127.0.0.1
@@ -31,7 +31,7 @@ Master_User root
Master_Port SLAVE_PORT
Connect_Retry 60
Master_Log_File slave-bin.000001
-Read_Master_Log_Pos 216
+Read_Master_Log_Pos POSITION
Relay_Log_File #
Relay_Log_Pos #
Relay_Master_Log_File slave-bin.000001
@@ -46,7 +46,7 @@ Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
-Exec_Master_Log_Pos 216
+Exec_Master_Log_Pos POSITION
Relay_Log_Space #
Until_Condition None
Until_Log_File
diff --git a/mysql-test/suite/rpl/r/rpl_invoked_features.result b/mysql-test/suite/rpl/r/rpl_invoked_features.result
index aed1dcdbb47..be9169c785b 100644
--- a/mysql-test/suite/rpl/r/rpl_invoked_features.result
+++ b/mysql-test/suite/rpl/r/rpl_invoked_features.result
@@ -116,23 +116,23 @@ t12
t13
t2
t3
-SELECT table_name FROM information_schema.views WHERE table_schema='test' ORDER BY table_name;
+SELECT table_name FROM information_schema.views WHERE table_schema='test';
table_name
v1
v11
-SELECT trigger_name, event_manipulation, event_object_table FROM information_schema.triggers WHERE trigger_schema='test' ORDER BY trigger_name;
+SELECT trigger_name, event_manipulation, event_object_table FROM information_schema.triggers WHERE trigger_schema='test';
trigger_name event_manipulation event_object_table
t11_tr1 INSERT t11
t11_tr2 UPDATE t11
t1_tr1 INSERT t1
t1_tr2 UPDATE t1
-SELECT routine_type, routine_name FROM information_schema.routines WHERE routine_schema='test' ORDER BY routine_name;
+SELECT routine_type, routine_name FROM information_schema.routines WHERE routine_schema='test';
routine_type routine_name
FUNCTION f1
FUNCTION f2
PROCEDURE p1
PROCEDURE p11
-SELECT event_name, status FROM information_schema.events WHERE event_schema='test' ORDER BY event_name;
+SELECT event_name, status FROM information_schema.events WHERE event_schema='test';
event_name status
e1 DISABLED
e11 DISABLED
@@ -276,23 +276,23 @@ t12
t13
t2
t3
-SELECT table_name FROM information_schema.views WHERE table_schema='test' ORDER BY table_name;
+SELECT table_name FROM information_schema.views WHERE table_schema='test';
table_name
v1
v11
-SELECT trigger_name, event_manipulation, event_object_table FROM information_schema.triggers WHERE trigger_schema='test' ORDER BY trigger_name;
+SELECT trigger_name, event_manipulation, event_object_table FROM information_schema.triggers WHERE trigger_schema='test';
trigger_name event_manipulation event_object_table
t11_tr1 INSERT t11
t11_tr2 UPDATE t11
t1_tr1 INSERT t1
t1_tr2 UPDATE t1
-SELECT routine_type, routine_name FROM information_schema.routines WHERE routine_schema='test' ORDER BY routine_name;
+SELECT routine_type, routine_name FROM information_schema.routines WHERE routine_schema='test';
routine_type routine_name
FUNCTION f1
FUNCTION f2
PROCEDURE p1
PROCEDURE p11
-SELECT event_name, status FROM information_schema.events WHERE event_schema='test' ORDER BY event_name;
+SELECT event_name, status FROM information_schema.events WHERE event_schema='test';
event_name status
e1 SLAVESIDE_DISABLED
e11 SLAVESIDE_DISABLED
diff --git a/mysql-test/suite/rpl/r/rpl_loaddata.result b/mysql-test/suite/rpl/r/rpl_loaddata.result
index b9bd2a22fd0..070c50db3d5 100644
--- a/mysql-test/suite/rpl/r/rpl_loaddata.result
+++ b/mysql-test/suite/rpl/r/rpl_loaddata.result
@@ -26,9 +26,6 @@ day id category name
2003-02-22 2461 b a a a @ %  ' " a
2003-03-22 2161 c asdf
2003-03-22 2416 a bbbbb
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-slave-bin.000001 1280
drop table t1;
drop table t2;
drop table t3;
diff --git a/mysql-test/suite/rpl/r/rpl_master_pos_wait.result b/mysql-test/suite/rpl/r/rpl_master_pos_wait.result
index ab9b8cdad9d..edcae6e7506 100644
--- a/mysql-test/suite/rpl/r/rpl_master_pos_wait.result
+++ b/mysql-test/suite/rpl/r/rpl_master_pos_wait.result
@@ -16,3 +16,9 @@ select master_pos_wait('master-bin.999999',0);
stop slave sql_thread;
master_pos_wait('master-bin.999999',0)
NULL
+"*** must be empty ***"
+show slave status;
+"*** must be NULL ***"
+select master_pos_wait('foo', 98);
+master_pos_wait('foo', 98)
+NULL
diff --git a/mysql-test/suite/rpl/r/rpl_report.result b/mysql-test/suite/rpl/r/rpl_report.result
new file mode 100644
index 00000000000..e129d7c8f22
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_report.result
@@ -0,0 +1,33 @@
+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;
+select * from Information_schema.GLOBAL_VARIABLES where variable_name like 'report_host';
+VARIABLE_NAME VARIABLE_VALUE
+REPORT_HOST 127.0.0.1
+select * from Information_schema.GLOBAL_VARIABLES where variable_name like 'report_port';
+VARIABLE_NAME VARIABLE_VALUE
+REPORT_PORT 9308
+select * from Information_schema.GLOBAL_VARIABLES where variable_name like 'report_user';
+VARIABLE_NAME VARIABLE_VALUE
+REPORT_USER my_user
+select * from Information_schema.GLOBAL_VARIABLES where variable_name like 'report_password';
+VARIABLE_NAME VARIABLE_VALUE
+REPORT_PASSWORD my_password
+show global variables like 'report_host';
+Variable_name report_host
+Value 127.0.0.1
+show global variables like 'report_port';
+Variable_name report_port
+Value 9308
+show global variables like 'report_user';
+Variable_name report_user
+Value my_user
+show global variables like 'report_password';
+Variable_name report_password
+Value my_password
+set @@global.report_host='my.new.address.net';
+ERROR HY000: Variable 'report_host' is a read only variable
+end of tests
diff --git a/mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result b/mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result
index 1d5b118d822..2d9d801047b 100644
--- a/mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result
+++ b/mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result
@@ -158,10 +158,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
CREATE TABLE t3(c1 INT NOT NULL PRIMARY KEY, c2 LONGBLOB, c3 TIMESTAMP, c4 TEXT, c5 FLOAT)
/*!*/;
DELIMITER ;
@@ -176,10 +180,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
DROP TABLE IF EXISTS t1,t2,t3
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
@@ -281,10 +289,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
DROP TABLE IF EXISTS t1,t2,t3
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
@@ -308,10 +320,14 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
+SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
CREATE TABLE t3(c1 INT NOT NULL PRIMARY KEY, c2 LONGBLOB, c3 TIMESTAMP, c4 TEXT, c5 FLOAT)
/*!*/;
DELIMITER ;
diff --git a/mysql-test/suite/rpl/r/rpl_row_view01.result b/mysql-test/suite/rpl/r/rpl_row_view01.result
index a4b8d0a05e3..4dfe5826f32 100644
--- a/mysql-test/suite/rpl/r/rpl_row_view01.result
+++ b/mysql-test/suite/rpl/r/rpl_row_view01.result
@@ -13,6 +13,7 @@ DROP TABLE IF EXISTS mysqltest1.t3;
DROP TABLE IF EXISTS mysqltest1.t1;
DROP TABLE IF EXISTS mysqltest1.t2;
DROP TABLE IF EXISTS mysqltest1.t4;
+DROP TABLE IF EXISTS mysqltest1.t10;
CREATE TABLE mysqltest1.t1 (a INT, c CHAR(6),PRIMARY KEY(a));
CREATE TABLE mysqltest1.t2 (a INT, c CHAR(6),PRIMARY KEY(a));
CREATE TABLE mysqltest1.t3 (a INT, c CHAR(6), c2 CHAR(6), PRIMARY KEY(a));
@@ -35,6 +36,7 @@ a c c2
1 Thank GOD
2 it is
3 Friday TGIF
+CREATE TABLE mysqltest1.t10 (a INT, PRIMARY KEY(a));
SELECT * FROM mysqltest1.v2;
qty price value
3 50 150
@@ -98,4 +100,5 @@ DROP TABLE IF EXISTS mysqltest1.t3;
DROP TABLE IF EXISTS mysqltest1.t1;
DROP TABLE IF EXISTS mysqltest1.t2;
DROP TABLE IF EXISTS mysqltest1.t4;
+DROP TABLE IF EXISTS mysqltest1.t10;
DROP DATABASE mysqltest1;
diff --git a/mysql-test/suite/rpl/r/rpl_server_id1.result b/mysql-test/suite/rpl/r/rpl_server_id1.result
index 9894910aaf6..6a5c86d84bd 100644
--- a/mysql-test/suite/rpl/r/rpl_server_id1.result
+++ b/mysql-test/suite/rpl/r/rpl_server_id1.result
@@ -4,10 +4,11 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-create table t1 (n int);
reset master;
stop slave;
change master to master_port=SLAVE_PORT;
+start slave;
+*** must be having the replicate-same-server-id IO thread error ***
show slave status;
Slave_IO_State
Master_Host 127.0.0.1
@@ -20,15 +21,15 @@ Relay_Log_File slave-relay-bin.000001
Relay_Log_Pos 4
Relay_Master_Log_File
Slave_IO_Running No
-Slave_SQL_Running No
+Slave_SQL_Running #
Replicate_Do_DB
Replicate_Ignore_DB
Replicate_Do_Table
Replicate_Ignore_Table #
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table #
-Last_Errno 0
-Last_Error
+Last_Errno #
+Last_Error #
Skip_Counter 0
Exec_Master_Log_Pos 0
Relay_Log_Space 106
@@ -43,13 +44,7 @@ Master_SSL_Cipher
Master_SSL_Key
Seconds_Behind_Master NULL
Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-start slave;
-insert into t1 values (1);
-show status like "slave_running";
-Variable_name Value
-Slave_running OFF
-drop table t1;
+Last_IO_Errno 1593
+Last_IO_Error Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).
+Last_SQL_Errno #
+Last_SQL_Error #
diff --git a/mysql-test/suite/rpl/r/rpl_skip_error.result b/mysql-test/suite/rpl/r/rpl_skip_error.result
index aacc89f7a47..b90d8113e8e 100644
--- a/mysql-test/suite/rpl/r/rpl_skip_error.result
+++ b/mysql-test/suite/rpl/r/rpl_skip_error.result
@@ -4,31 +4,89 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
+==== Test Without sql_mode=strict_trans_tables ====
+[on master]
create table t1 (n int not null primary key);
+[on slave]
insert into t1 values (1);
+[on master]
insert into t1 values (1);
insert into t1 values (2),(3);
-select * from t1 ORDER BY n;
+[on slave]
+select * from t1 order by n;
n
1
2
3
+==== Test With sql_mode=strict_trans_tables ====
+insert into t1 values (7),(8);
+[on master]
+set sql_mode=strict_trans_tables;
+insert into t1 values (7), (8), (9);
+[on slave]
+select * from t1 order by n;
+n
+1
+2
+3
+7
+8
+SHOW SLAVE STATUS;
+Slave_IO_State #
+Master_Host 127.0.0.1
+Master_User root
+Master_Port MASTER_PORT
+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 Yes
+Replicate_Do_DB
+Replicate_Ignore_DB
+Replicate_Do_Table
+Replicate_Ignore_Table #
+Replicate_Wild_Do_Table
+Replicate_Wild_Ignore_Table
+Last_Errno 0
+Last_Error
+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 0
+Last_SQL_Error
+==== Clean Up ====
drop table t1;
create table t1(a int primary key);
insert into t1 values (1),(2);
delete from t1 where @@server_id=1;
+Warnings:
+Warning 1592 Statement is not safe to log in statement format.
set sql_mode=strict_trans_tables;
-select @@server_id;
-@@server_id
-1
-insert into t1 values (1),(2),(3);
-select @@server_id;
-@@server_id
-2
+insert into t1 values (7), (8), (9);
+[on slave]
select * from t1;
a
1
2
+7
+8
+9
SHOW SLAVE STATUS;
Slave_IO_State #
Master_Host 127.0.0.1
@@ -68,4 +126,5 @@ Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
+==== Clean Up ====
drop table t1;
diff --git a/mysql-test/suite/rpl/r/rpl_variables.result b/mysql-test/suite/rpl/r/rpl_variables.result
index 605a48859a0..73354666b7a 100644
--- a/mysql-test/suite/rpl/r/rpl_variables.result
+++ b/mysql-test/suite/rpl/r/rpl_variables.result
@@ -4,16 +4,581 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-set @my_slave_net_timeout =@@global.slave_net_timeout;
-set global slave_net_timeout=100;
-set global sql_slave_skip_counter=100;
-show variables like 'slave_compressed_protocol';
-Variable_name Value
-slave_compressed_protocol OFF
-show variables like 'slave_load_tmpdir';
-Variable_name Value
-slave_load_tmpdir SLAVE_LOAD_TMPDIR
-show variables like 'slave_skip_errors';
-Variable_name Value
-slave_skip_errors 3,100,137,643,1752
-set global slave_net_timeout=default;
+==== Initialization ====
+[on master]
+SET @m_default_week_format= @@global.default_week_format;
+SET @m_init_slave= @@global.init_slave;
+SET @m_lc_time_names= @@global.lc_time_names;
+SET @m_low_priority_updates= @@global.low_priority_updates;
+SET @m_relay_log_purge= @@global.relay_log_purge;
+SET @m_slave_exec_mode= @@global.slave_exec_mode;
+SET @m_sql_mode= @@global.sql_mode;
+SET @m_sync_binlog= @@global.sync_binlog;
+[on slave]
+SET @s_default_week_format= @@global.default_week_format;
+SET @s_init_slave= @@global.init_slave;
+SET @s_lc_time_names= @@global.lc_time_names;
+SET @s_low_priority_updates= @@global.low_priority_updates;
+SET @s_relay_log_purge= @@global.relay_log_purge;
+SET @s_slave_exec_mode= @@global.slave_exec_mode;
+SET @s_sql_mode= @@global.sql_mode;
+SET @s_sync_binlog= @@global.sync_binlog;
+SET @@global.relay_log_purge = OFF;
+SET @@global.sync_binlog = 1000000;
+SET @@global.slave_exec_mode = 'STRICT';
+SET @@sql_big_selects = OFF;
+SET @@last_insert_id = 10;
+SET @@global.low_priority_updates = OFF;
+SET @@local.low_priority_updates = OFF;
+SET @@global.default_week_format = 1;
+SET @@local.default_week_format = 2;
+SET @@global.lc_time_names = 'zh_HK';
+SET @@local.lc_time_names = 'zh_TW';
+SET @@global.sql_mode = 'ALLOW_INVALID_DATES';
+SET @@local.sql_mode = 'ANSI_QUOTES,ERROR_FOR_DIVISION_BY_ZERO,HIGH_NOT_PRECEDENCE';
+SET @user_num = 10;
+SET @user_text = 'Alunda';
+[on master]
+**** Resetting master and slave ****
+STOP SLAVE;
+RESET SLAVE;
+RESET MASTER;
+START SLAVE;
+[on slave]
+SET @@global.init_slave = 'ant';
+[on master]
+CREATE TABLE tstmt (id INT AUTO_INCREMENT PRIMARY KEY,
+truth BOOLEAN,
+num INT,
+text VARCHAR(100));
+CREATE TABLE tproc LIKE tstmt;
+CREATE TABLE tfunc LIKE tstmt;
+CREATE TABLE ttrig LIKE tstmt;
+CREATE TABLE tprep LIKE tstmt;
+CREATE TABLE trigger_table (text CHAR(4));
+==== Insert variables directly ====
+---- global variables ----
+SET @@global.relay_log_purge = ON;
+INSERT INTO tstmt(truth) VALUES (@@global.relay_log_purge);
+SET @@global.relay_log_purge = OFF;
+INSERT INTO tstmt(truth) VALUES (@@global.relay_log_purge);
+SET @@global.sync_binlog = 2000000;
+INSERT INTO tstmt(num) VALUES (@@global.sync_binlog);
+SET @@global.sync_binlog = 3000000;
+INSERT INTO tstmt(num) VALUES (@@global.sync_binlog);
+SET @@global.init_slave = 'bison';
+INSERT INTO tstmt(text) VALUES (@@global.init_slave);
+SET @@global.init_slave = 'cat';
+INSERT INTO tstmt(text) VALUES (@@global.init_slave);
+SET @@global.slave_exec_mode = 'IDEMPOTENT';
+INSERT INTO tstmt(text) VALUES (@@global.slave_exec_mode);
+SET @@global.slave_exec_mode = 'STRICT';
+INSERT INTO tstmt(text) VALUES (@@global.slave_exec_mode);
+---- session variables ----
+SET @@sql_big_selects = ON;
+INSERT INTO tstmt(truth) VALUES (@@sql_big_selects);
+SET @@sql_big_selects = OFF;
+INSERT INTO tstmt(truth) VALUES (@@sql_big_selects);
+SET @@last_insert_id = 20;
+INSERT INTO tstmt(num) VALUES (@@last_insert_id);
+SET @@last_insert_id = 30;
+INSERT INTO tstmt(num) VALUES (@@last_insert_id);
+---- global and session variables ----
+SET @@global.low_priority_updates = ON;
+SET @@local.low_priority_updates = OFF;
+INSERT INTO tstmt(truth) VALUES (@@global.low_priority_updates);
+INSERT INTO tstmt(truth) VALUES (@@local.low_priority_updates);
+SET @@global.low_priority_updates = OFF;
+SET @@local.low_priority_updates = ON;
+INSERT INTO tstmt(truth) VALUES (@@global.low_priority_updates);
+INSERT INTO tstmt(truth) VALUES (@@local.low_priority_updates);
+SET @@global.default_week_format = 3;
+SET @@local.default_week_format = 4;
+INSERT INTO tstmt(num) VALUES (@@global.default_week_format);
+INSERT INTO tstmt(num) VALUES (@@local.default_week_format);
+SET @@global.default_week_format = 5;
+SET @@local.default_week_format = 6;
+INSERT INTO tstmt(num) VALUES (@@global.default_week_format);
+INSERT INTO tstmt(num) VALUES (@@local.default_week_format);
+SET @@global.lc_time_names = 'sv_SE';
+SET @@local.lc_time_names = 'sv_FI';
+INSERT INTO tstmt(text) VALUES (@@global.lc_time_names);
+INSERT INTO tstmt(text) VALUES (@@local.lc_time_names);
+SET @@global.lc_time_names = 'ar_TN';
+SET @@local.lc_time_names = 'ar_IQ';
+INSERT INTO tstmt(text) VALUES (@@global.lc_time_names);
+INSERT INTO tstmt(text) VALUES (@@local.lc_time_names);
+SET @@global.sql_mode = '';
+SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
+INSERT INTO tstmt(text) VALUES (@@global.sql_mode);
+INSERT INTO tstmt(text) VALUES (@@local.sql_mode);
+SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
+SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
+INSERT INTO tstmt(text) VALUES (@@global.sql_mode);
+INSERT INTO tstmt(text) VALUES (@@local.sql_mode);
+---- user variables ----
+SET @user_num = 20;
+INSERT INTO tstmt(num) VALUES (@user_num);
+SET @user_num = 30;
+INSERT INTO tstmt(num) VALUES (@user_num);
+SET @user_text = 'Bergsbrunna';
+INSERT INTO tstmt(text) VALUES (@user_text);
+SET @user_text = 'Centrum';
+INSERT INTO tstmt(text) VALUES (@user_text);
+==== Insert variables from a stored procedure ====
+CREATE PROCEDURE proc()
+BEGIN
+# GLOBAL
+# boolean
+SET @@global.relay_log_purge = ON;
+INSERT INTO tproc(truth) VALUES (@@global.relay_log_purge);
+SET @@global.relay_log_purge = OFF;
+INSERT INTO tproc(truth) VALUES (@@global.relay_log_purge);
+# numeric
+SET @@global.sync_binlog = 2000000;
+INSERT INTO tproc(num) VALUES (@@global.sync_binlog);
+SET @@global.sync_binlog = 3000000;
+INSERT INTO tproc(num) VALUES (@@global.sync_binlog);
+# string
+SET @@global.init_slave = 'bison';
+INSERT INTO tproc(text) VALUES (@@global.init_slave);
+SET @@global.init_slave = 'cat';
+INSERT INTO tproc(text) VALUES (@@global.init_slave);
+# enumeration
+SET @@global.slave_exec_mode = 'IDEMPOTENT';
+INSERT INTO tproc(text) VALUES (@@global.slave_exec_mode);
+SET @@global.slave_exec_mode = 'STRICT';
+INSERT INTO tproc(text) VALUES (@@global.slave_exec_mode);
+# SESSION
+# boolean
+SET @@sql_big_selects = ON;
+INSERT INTO tproc(truth) VALUES (@@sql_big_selects);
+SET @@sql_big_selects = OFF;
+INSERT INTO tproc(truth) VALUES (@@sql_big_selects);
+# numeric
+SET @@last_insert_id = 20;
+INSERT INTO tproc(num) VALUES (@@last_insert_id);
+SET @@last_insert_id = 30;
+INSERT INTO tproc(num) VALUES (@@last_insert_id);
+# BOTH
+# boolean
+SET @@global.low_priority_updates = ON;
+SET @@local.low_priority_updates = OFF;
+INSERT INTO tproc(truth) VALUES (@@global.low_priority_updates);
+INSERT INTO tproc(truth) VALUES (@@local.low_priority_updates);
+SET @@global.low_priority_updates = OFF;
+SET @@local.low_priority_updates = ON;
+INSERT INTO tproc(truth) VALUES (@@global.low_priority_updates);
+INSERT INTO tproc(truth) VALUES (@@local.low_priority_updates);
+# numeric
+SET @@global.default_week_format = 3;
+SET @@local.default_week_format = 4;
+INSERT INTO tproc(num) VALUES (@@global.default_week_format);
+INSERT INTO tproc(num) VALUES (@@local.default_week_format);
+SET @@global.default_week_format = 5;
+SET @@local.default_week_format = 6;
+INSERT INTO tproc(num) VALUES (@@global.default_week_format);
+INSERT INTO tproc(num) VALUES (@@local.default_week_format);
+# text
+SET @@global.lc_time_names = 'sv_SE';
+SET @@local.lc_time_names = 'sv_FI';
+INSERT INTO tproc(text) VALUES (@@global.lc_time_names);
+INSERT INTO tproc(text) VALUES (@@local.lc_time_names);
+SET @@global.lc_time_names = 'ar_TN';
+SET @@local.lc_time_names = 'ar_IQ';
+INSERT INTO tproc(text) VALUES (@@global.lc_time_names);
+INSERT INTO tproc(text) VALUES (@@local.lc_time_names);
+# enum
+SET @@global.sql_mode = '';
+SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
+INSERT INTO tproc(text) VALUES (@@global.sql_mode);
+INSERT INTO tproc(text) VALUES (@@local.sql_mode);
+SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
+SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
+INSERT INTO tproc(text) VALUES (@@global.sql_mode);
+INSERT INTO tproc(text) VALUES (@@local.sql_mode);
+# USER
+# numeric
+SET @user_num = 20;
+INSERT INTO tproc(num) VALUES (@user_num);
+SET @user_num = 30;
+INSERT INTO tproc(num) VALUES (@user_num);
+# string
+SET @user_text = 'Bergsbrunna';
+INSERT INTO tproc(text) VALUES (@user_text);
+SET @user_text = 'Centrum';
+INSERT INTO tproc(text) VALUES (@user_text);
+END|
+CALL proc();
+==== Insert variables from a stored function ====
+CREATE FUNCTION func()
+RETURNS INT
+BEGIN
+# GLOBAL
+# boolean
+SET @@global.relay_log_purge = ON;
+INSERT INTO tfunc(truth) VALUES (@@global.relay_log_purge);
+SET @@global.relay_log_purge = OFF;
+INSERT INTO tfunc(truth) VALUES (@@global.relay_log_purge);
+# numeric
+SET @@global.sync_binlog = 2000000;
+INSERT INTO tfunc(num) VALUES (@@global.sync_binlog);
+SET @@global.sync_binlog = 3000000;
+INSERT INTO tfunc(num) VALUES (@@global.sync_binlog);
+# string
+SET @@global.init_slave = 'bison';
+INSERT INTO tfunc(text) VALUES (@@global.init_slave);
+SET @@global.init_slave = 'cat';
+INSERT INTO tfunc(text) VALUES (@@global.init_slave);
+# enumeration
+SET @@global.slave_exec_mode = 'IDEMPOTENT';
+INSERT INTO tfunc(text) VALUES (@@global.slave_exec_mode);
+SET @@global.slave_exec_mode = 'STRICT';
+INSERT INTO tfunc(text) VALUES (@@global.slave_exec_mode);
+# SESSION
+# boolean
+SET @@sql_big_selects = ON;
+INSERT INTO tfunc(truth) VALUES (@@sql_big_selects);
+SET @@sql_big_selects = OFF;
+INSERT INTO tfunc(truth) VALUES (@@sql_big_selects);
+# numeric
+SET @@last_insert_id = 20;
+INSERT INTO tfunc(num) VALUES (@@last_insert_id);
+SET @@last_insert_id = 30;
+INSERT INTO tfunc(num) VALUES (@@last_insert_id);
+# BOTH
+# boolean
+SET @@global.low_priority_updates = ON;
+SET @@local.low_priority_updates = OFF;
+INSERT INTO tfunc(truth) VALUES (@@global.low_priority_updates);
+INSERT INTO tfunc(truth) VALUES (@@local.low_priority_updates);
+SET @@global.low_priority_updates = OFF;
+SET @@local.low_priority_updates = ON;
+INSERT INTO tfunc(truth) VALUES (@@global.low_priority_updates);
+INSERT INTO tfunc(truth) VALUES (@@local.low_priority_updates);
+# numeric
+SET @@global.default_week_format = 3;
+SET @@local.default_week_format = 4;
+INSERT INTO tfunc(num) VALUES (@@global.default_week_format);
+INSERT INTO tfunc(num) VALUES (@@local.default_week_format);
+SET @@global.default_week_format = 5;
+SET @@local.default_week_format = 6;
+INSERT INTO tfunc(num) VALUES (@@global.default_week_format);
+INSERT INTO tfunc(num) VALUES (@@local.default_week_format);
+# text
+SET @@global.lc_time_names = 'sv_SE';
+SET @@local.lc_time_names = 'sv_FI';
+INSERT INTO tfunc(text) VALUES (@@global.lc_time_names);
+INSERT INTO tfunc(text) VALUES (@@local.lc_time_names);
+SET @@global.lc_time_names = 'ar_TN';
+SET @@local.lc_time_names = 'ar_IQ';
+INSERT INTO tfunc(text) VALUES (@@global.lc_time_names);
+INSERT INTO tfunc(text) VALUES (@@local.lc_time_names);
+# enum
+SET @@global.sql_mode = '';
+SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
+INSERT INTO tfunc(text) VALUES (@@global.sql_mode);
+INSERT INTO tfunc(text) VALUES (@@local.sql_mode);
+SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
+SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
+INSERT INTO tfunc(text) VALUES (@@global.sql_mode);
+INSERT INTO tfunc(text) VALUES (@@local.sql_mode);
+# USER
+# numeric
+SET @user_num = 20;
+INSERT INTO tfunc(num) VALUES (@user_num);
+SET @user_num = 30;
+INSERT INTO tfunc(num) VALUES (@user_num);
+# string
+SET @user_text = 'Bergsbrunna';
+INSERT INTO tfunc(text) VALUES (@user_text);
+SET @user_text = 'Centrum';
+INSERT INTO tfunc(text) VALUES (@user_text);
+RETURN 0;
+END|
+SELECT func();
+func()
+0
+==== Insert variables from a trigger ====
+CREATE TRIGGER trig
+BEFORE INSERT ON trigger_table
+FOR EACH ROW
+BEGIN
+# GLOBAL
+# boolean
+SET @@global.relay_log_purge = ON;
+INSERT INTO ttrig(truth) VALUES (@@global.relay_log_purge);
+SET @@global.relay_log_purge = OFF;
+INSERT INTO ttrig(truth) VALUES (@@global.relay_log_purge);
+# numeric
+SET @@global.sync_binlog = 2000000;
+INSERT INTO ttrig(num) VALUES (@@global.sync_binlog);
+SET @@global.sync_binlog = 3000000;
+INSERT INTO ttrig(num) VALUES (@@global.sync_binlog);
+# string
+SET @@global.init_slave = 'bison';
+INSERT INTO ttrig(text) VALUES (@@global.init_slave);
+SET @@global.init_slave = 'cat';
+INSERT INTO ttrig(text) VALUES (@@global.init_slave);
+# enumeration
+SET @@global.slave_exec_mode = 'IDEMPOTENT';
+INSERT INTO ttrig(text) VALUES (@@global.slave_exec_mode);
+SET @@global.slave_exec_mode = 'STRICT';
+INSERT INTO ttrig(text) VALUES (@@global.slave_exec_mode);
+# SESSION
+# boolean
+SET @@sql_big_selects = ON;
+INSERT INTO ttrig(truth) VALUES (@@sql_big_selects);
+SET @@sql_big_selects = OFF;
+INSERT INTO ttrig(truth) VALUES (@@sql_big_selects);
+# numeric
+SET @@last_insert_id = 20;
+INSERT INTO ttrig(num) VALUES (@@last_insert_id);
+SET @@last_insert_id = 30;
+INSERT INTO ttrig(num) VALUES (@@last_insert_id);
+# BOTH
+# boolean
+SET @@global.low_priority_updates = ON;
+SET @@local.low_priority_updates = OFF;
+INSERT INTO ttrig(truth) VALUES (@@global.low_priority_updates);
+INSERT INTO ttrig(truth) VALUES (@@local.low_priority_updates);
+SET @@global.low_priority_updates = OFF;
+SET @@local.low_priority_updates = ON;
+INSERT INTO ttrig(truth) VALUES (@@global.low_priority_updates);
+INSERT INTO ttrig(truth) VALUES (@@local.low_priority_updates);
+# numeric
+SET @@global.default_week_format = 3;
+SET @@local.default_week_format = 4;
+INSERT INTO ttrig(num) VALUES (@@global.default_week_format);
+INSERT INTO ttrig(num) VALUES (@@local.default_week_format);
+SET @@global.default_week_format = 5;
+SET @@local.default_week_format = 6;
+INSERT INTO ttrig(num) VALUES (@@global.default_week_format);
+INSERT INTO ttrig(num) VALUES (@@local.default_week_format);
+# text
+SET @@global.lc_time_names = 'sv_SE';
+SET @@local.lc_time_names = 'sv_FI';
+INSERT INTO ttrig(text) VALUES (@@global.lc_time_names);
+INSERT INTO ttrig(text) VALUES (@@local.lc_time_names);
+SET @@global.lc_time_names = 'ar_TN';
+SET @@local.lc_time_names = 'ar_IQ';
+INSERT INTO ttrig(text) VALUES (@@global.lc_time_names);
+INSERT INTO ttrig(text) VALUES (@@local.lc_time_names);
+# enum
+SET @@global.sql_mode = '';
+SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
+INSERT INTO ttrig(text) VALUES (@@global.sql_mode);
+INSERT INTO ttrig(text) VALUES (@@local.sql_mode);
+SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
+SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
+INSERT INTO ttrig(text) VALUES (@@global.sql_mode);
+INSERT INTO ttrig(text) VALUES (@@local.sql_mode);
+# USER
+# numeric
+SET @user_num = 20;
+INSERT INTO ttrig(num) VALUES (@user_num);
+SET @user_num = 30;
+INSERT INTO ttrig(num) VALUES (@user_num);
+# string
+SET @user_text = 'Bergsbrunna';
+INSERT INTO ttrig(text) VALUES (@user_text);
+SET @user_text = 'Centrum';
+INSERT INTO ttrig(text) VALUES (@user_text);
+END|
+INSERT INTO trigger_table VALUES ('bye.');
+==== Insert variables from a prepared statement ====
+PREPARE p1 FROM 'SET @@global.relay_log_purge = ON';
+PREPARE p2 FROM 'INSERT INTO tprep(truth) VALUES (@@global.relay_log_purge)';
+PREPARE p3 FROM 'SET @@global.relay_log_purge = OFF';
+PREPARE p4 FROM 'INSERT INTO tprep(truth) VALUES (@@global.relay_log_purge)';
+PREPARE p5 FROM 'SET @@global.sync_binlog = 2000000';
+PREPARE p6 FROM 'INSERT INTO tprep(num) VALUES (@@global.sync_binlog)';
+PREPARE p7 FROM 'SET @@global.sync_binlog = 3000000';
+PREPARE p8 FROM 'INSERT INTO tprep(num) VALUES (@@global.sync_binlog)';
+PREPARE p9 FROM 'SET @@global.init_slave = \'bison\'';
+PREPARE p10 FROM 'INSERT INTO tprep(text) VALUES (@@global.init_slave)';
+PREPARE p11 FROM 'SET @@global.init_slave = \'cat\'';
+PREPARE p12 FROM 'INSERT INTO tprep(text) VALUES (@@global.init_slave)';
+PREPARE p13 FROM 'SET @@global.slave_exec_mode = \'IDEMPOTENT\'';
+PREPARE p14 FROM 'INSERT INTO tprep(text) VALUES (@@global.slave_exec_mode)';
+PREPARE p15 FROM 'SET @@global.slave_exec_mode = \'STRICT\'';
+PREPARE p16 FROM 'INSERT INTO tprep(text) VALUES (@@global.slave_exec_mode)';
+PREPARE p17 FROM 'SET @@sql_big_selects = ON';
+PREPARE p18 FROM 'INSERT INTO tprep(truth) VALUES (@@sql_big_selects)';
+PREPARE p19 FROM 'SET @@sql_big_selects = OFF';
+PREPARE p20 FROM 'INSERT INTO tprep(truth) VALUES (@@sql_big_selects)';
+PREPARE p21 FROM 'SET @@last_insert_id = 20';
+PREPARE p22 FROM 'INSERT INTO tprep(num) VALUES (@@last_insert_id)';
+PREPARE p23 FROM 'SET @@last_insert_id = 30';
+PREPARE p24 FROM 'INSERT INTO tprep(num) VALUES (@@last_insert_id)';
+PREPARE p25 FROM 'SET @@global.low_priority_updates = ON';
+PREPARE p26 FROM 'SET @@local.low_priority_updates = OFF';
+PREPARE p27 FROM 'INSERT INTO tprep(truth) VALUES (@@global.low_priority_updates)';
+PREPARE p28 FROM 'INSERT INTO tprep(truth) VALUES (@@local.low_priority_updates)';
+PREPARE p29 FROM 'SET @@global.low_priority_updates = OFF';
+PREPARE p30 FROM 'SET @@local.low_priority_updates = ON';
+PREPARE p31 FROM 'INSERT INTO tprep(truth) VALUES (@@global.low_priority_updates)';
+PREPARE p32 FROM 'INSERT INTO tprep(truth) VALUES (@@local.low_priority_updates)';
+PREPARE p33 FROM 'SET @@global.default_week_format = 3';
+PREPARE p34 FROM 'SET @@local.default_week_format = 4';
+PREPARE p35 FROM 'INSERT INTO tprep(num) VALUES (@@global.default_week_format)';
+PREPARE p36 FROM 'INSERT INTO tprep(num) VALUES (@@local.default_week_format)';
+PREPARE p37 FROM 'SET @@global.default_week_format = 5';
+PREPARE p38 FROM 'SET @@local.default_week_format = 6';
+PREPARE p39 FROM 'INSERT INTO tprep(num) VALUES (@@global.default_week_format)';
+PREPARE p40 FROM 'INSERT INTO tprep(num) VALUES (@@local.default_week_format)';
+PREPARE p41 FROM 'SET @@global.lc_time_names = \'sv_SE\'';
+PREPARE p42 FROM 'SET @@local.lc_time_names = \'sv_FI\'';
+PREPARE p43 FROM 'INSERT INTO tprep(text) VALUES (@@global.lc_time_names)';
+PREPARE p44 FROM 'INSERT INTO tprep(text) VALUES (@@local.lc_time_names)';
+PREPARE p45 FROM 'SET @@global.lc_time_names = \'ar_TN\'';
+PREPARE p46 FROM 'SET @@local.lc_time_names = \'ar_IQ\'';
+PREPARE p47 FROM 'INSERT INTO tprep(text) VALUES (@@global.lc_time_names)';
+PREPARE p48 FROM 'INSERT INTO tprep(text) VALUES (@@local.lc_time_names)';
+PREPARE p49 FROM 'SET @@global.sql_mode = \'\'';
+PREPARE p50 FROM 'SET @@local.sql_mode = \'IGNORE_SPACE,NO_AUTO_CREATE_USER\'';
+PREPARE p51 FROM 'INSERT INTO tprep(text) VALUES (@@global.sql_mode)';
+PREPARE p52 FROM 'INSERT INTO tprep(text) VALUES (@@local.sql_mode)';
+PREPARE p53 FROM 'SET @@global.sql_mode = \'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION\'';
+PREPARE p54 FROM 'SET @@local.sql_mode = \'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS\'';
+PREPARE p55 FROM 'INSERT INTO tprep(text) VALUES (@@global.sql_mode)';
+PREPARE p56 FROM 'INSERT INTO tprep(text) VALUES (@@local.sql_mode)';
+PREPARE p57 FROM 'SET @user_num = 20';
+PREPARE p58 FROM 'INSERT INTO tprep(num) VALUES (@user_num)';
+PREPARE p59 FROM 'SET @user_num = 30';
+PREPARE p60 FROM 'INSERT INTO tprep(num) VALUES (@user_num)';
+PREPARE p61 FROM 'SET @user_text = \'Bergsbrunna\'';
+PREPARE p62 FROM 'INSERT INTO tprep(text) VALUES (@user_text)';
+PREPARE p63 FROM 'SET @user_text = \'Centrum\'';
+PREPARE p64 FROM 'INSERT INTO tprep(text) VALUES (@user_text)';
+EXECUTE p1;
+EXECUTE p2;
+EXECUTE p3;
+EXECUTE p4;
+EXECUTE p5;
+EXECUTE p6;
+EXECUTE p7;
+EXECUTE p8;
+EXECUTE p9;
+EXECUTE p10;
+EXECUTE p11;
+EXECUTE p12;
+EXECUTE p13;
+EXECUTE p14;
+EXECUTE p15;
+EXECUTE p16;
+EXECUTE p17;
+EXECUTE p18;
+EXECUTE p19;
+EXECUTE p20;
+EXECUTE p21;
+EXECUTE p22;
+EXECUTE p23;
+EXECUTE p24;
+EXECUTE p25;
+EXECUTE p26;
+EXECUTE p27;
+EXECUTE p28;
+EXECUTE p29;
+EXECUTE p30;
+EXECUTE p31;
+EXECUTE p32;
+EXECUTE p33;
+EXECUTE p34;
+EXECUTE p35;
+EXECUTE p36;
+EXECUTE p37;
+EXECUTE p38;
+EXECUTE p39;
+EXECUTE p40;
+EXECUTE p41;
+EXECUTE p42;
+EXECUTE p43;
+EXECUTE p44;
+EXECUTE p45;
+EXECUTE p46;
+EXECUTE p47;
+EXECUTE p48;
+EXECUTE p49;
+EXECUTE p50;
+EXECUTE p51;
+EXECUTE p52;
+EXECUTE p53;
+EXECUTE p54;
+EXECUTE p55;
+EXECUTE p56;
+EXECUTE p57;
+EXECUTE p58;
+EXECUTE p59;
+EXECUTE p60;
+EXECUTE p61;
+EXECUTE p62;
+EXECUTE p63;
+EXECUTE p64;
+==== Results ====
+SELECT * FROM tstmt ORDER BY id;
+id truth num text
+1 1 NULL NULL
+2 0 NULL NULL
+3 NULL 2000000 NULL
+4 NULL 3000000 NULL
+5 NULL NULL bison
+6 NULL NULL cat
+7 NULL NULL IDEMPOTENT
+8 NULL NULL STRICT
+9 1 NULL NULL
+10 0 NULL NULL
+11 NULL 20 NULL
+12 NULL 30 NULL
+13 1 NULL NULL
+14 0 NULL NULL
+15 0 NULL NULL
+16 1 NULL NULL
+17 NULL 3 NULL
+18 NULL 4 NULL
+19 NULL 5 NULL
+20 NULL 6 NULL
+21 NULL NULL sv_SE
+22 NULL NULL sv_FI
+23 NULL NULL ar_TN
+24 NULL NULL ar_IQ
+25 NULL NULL
+26 NULL NULL IGNORE_SPACE,NO_AUTO_CREATE_USER
+27 NULL NULL NO_DIR_IN_CREATE,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_ENGINE_SUBSTITUTION
+28 NULL NULL NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS
+29 NULL 20 NULL
+30 NULL 30 NULL
+31 NULL NULL Bergsbrunna
+32 NULL NULL Centrum
+Comparing tables master:test.tstmt and master:test.tproc
+Comparing tables master:test.tstmt and master:test.tfunc
+Comparing tables master:test.tstmt and master:test.ttrig
+Comparing tables master:test.tstmt and master:test.tprep
+Comparing tables master:test.tstmt and slave:test.tstmt
+Comparing tables master:test.tstmt and slave:test.tproc
+Comparing tables master:test.tstmt and slave:test.tfunc
+Comparing tables master:test.tstmt and slave:test.ttrig
+Comparing tables master:test.tstmt and slave:test.tprep
+==== Clean up ====
+[on master]
+DROP PROCEDURE proc;
+DROP FUNCTION func;
+DROP TRIGGER trig;
+DROP TABLE tstmt, tproc, tfunc, ttrig, tprep, trigger_table;
+SET @@global.default_week_format= @m_default_week_format;
+SET @@global.init_slave= @m_init_slave;
+SET @@global.lc_time_names= @m_lc_time_names;
+SET @@global.low_priority_updates= @m_low_priority_updates;
+SET @@global.relay_log_purge= @m_relay_log_purge;
+SET @@global.slave_exec_mode= @m_slave_exec_mode;
+SET @@global.sql_mode= @m_sql_mode;
+SET @@global.sync_binlog= @m_sync_binlog;
+[on slave]
+SET @@global.default_week_format= @s_default_week_format;
+SET @@global.init_slave= @s_init_slave;
+SET @@global.lc_time_names= @s_lc_time_names;
+SET @@global.low_priority_updates= @s_low_priority_updates;
+SET @@global.relay_log_purge= @s_relay_log_purge;
+SET @@global.slave_exec_mode= @s_slave_exec_mode;
+SET @@global.sql_mode= @s_sql_mode;
+SET @@global.sync_binlog= @s_sync_binlog;
diff --git a/mysql-test/suite/rpl/r/rpl_variables_stm.result b/mysql-test/suite/rpl/r/rpl_variables_stm.result
new file mode 100644
index 00000000000..51484187215
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_variables_stm.result
@@ -0,0 +1,526 @@
+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;
+==== Initialization ====
+[on master]
+SET @m_pseudo_thread_id= @@global.pseudo_thread_id;
+SET @m_auto_increment_increment= @@global.auto_increment_increment;
+SET @m_auto_increment_offset= @@global.auto_increment_offset;
+SET @m_character_set_client= @@global.character_set_client;
+SET @m_collation_connection= @@global.collation_connection;
+SET @m_collation_server= @@global.collation_server;
+SET @m_time_zone= @@global.time_zone;
+SET @m_lc_time_names= @@global.lc_time_names;
+SET @m_collation_database= @@global.collation_database;
+[on slave]
+SET @s_pseudo_thread_id= @@global.pseudo_thread_id;
+SET @s_auto_increment_increment= @@global.auto_increment_increment;
+SET @s_auto_increment_offset= @@global.auto_increment_offset;
+SET @s_character_set_client= @@global.character_set_client;
+SET @s_collation_connection= @@global.collation_connection;
+SET @s_collation_server= @@global.collation_server;
+SET @s_time_zone= @@global.time_zone;
+SET @s_lc_time_names= @@global.lc_time_names;
+SET @s_collation_database= @@global.collation_database;
+SET @@global.pseudo_thread_id= 4711;
+SET @@global.auto_increment_increment=19;
+SET @@global.auto_increment_offset=4;
+SET @@global.character_set_client='latin2';
+SET @@global.collation_connection='latin2_bin';
+SET @@global.collation_server='geostd8_general_ci';
+SET @@global.time_zone='Japan';
+SET @@global.lc_time_names='sv_SE';
+SET @@global.collation_database='geostd8_bin';
+[on master]
+CREATE TABLE tstmt (id INT AUTO_INCREMENT PRIMARY KEY,
+num INT,
+text VARCHAR(100));
+CREATE TABLE tproc LIKE tstmt;
+CREATE TABLE tfunc LIKE tstmt;
+CREATE TABLE ttrig LIKE tstmt;
+CREATE TABLE tprep LIKE tstmt;
+CREATE TABLE trigger_table (text CHAR(4));
+==== Insert variables directly ====
+SET @@pseudo_thread_id= 4712;
+INSERT INTO tstmt(num) VALUES (@@session.pseudo_thread_id);
+SET @@pseudo_thread_id= 4713;
+INSERT INTO tstmt(num) VALUES (@@session.pseudo_thread_id);
+SET @@foreign_key_checks= 0;
+INSERT INTO tstmt(num) VALUES (@@session.foreign_key_checks);
+SET @@foreign_key_checks= 1;
+INSERT INTO tstmt(num) VALUES (@@session.foreign_key_checks);
+SET @@sql_auto_is_null= 0;
+INSERT INTO tstmt(num) VALUES (@@session.sql_auto_is_null);
+SET @@sql_auto_is_null= 1;
+INSERT INTO tstmt(num) VALUES (@@session.sql_auto_is_null);
+SET @@unique_checks= 0;
+INSERT INTO tstmt(num) VALUES (@@session.unique_checks);
+SET @@unique_checks= 1;
+INSERT INTO tstmt(num) VALUES (@@session.unique_checks);
+SET @@auto_increment_increment= 11;
+INSERT INTO tstmt(num) VALUES (@@session.auto_increment_increment);
+SET @@auto_increment_increment= 19;
+INSERT INTO tstmt(num) VALUES (@@session.auto_increment_increment);
+SET @@auto_increment_offset= 13;
+INSERT INTO tstmt(num) VALUES (@@session.auto_increment_offset);
+SET @@auto_increment_offset= 17;
+INSERT INTO tstmt(num) VALUES (@@session.auto_increment_offset);
+SET @@auto_increment_increment= 1;
+SET @@auto_increment_offset= 1;
+SET @@character_set_client= 'cp1257';
+INSERT INTO tstmt(text) VALUES (@@session.character_set_client);
+SET @@character_set_client= 'cp1256';
+INSERT INTO tstmt(text) VALUES (@@session.character_set_client);
+SET @@collation_connection= 'cp1251_ukrainian_ci';
+INSERT INTO tstmt(text) VALUES (@@session.collation_connection);
+INSERT INTO tstmt(text) VALUES (@@session.character_set_connection);
+SET @@collation_connection= 'cp1251_bulgarian_ci';
+INSERT INTO tstmt(text) VALUES (@@session.collation_connection);
+INSERT INTO tstmt(text) VALUES (@@session.character_set_connection);
+SET @@collation_server= 'latin7_bin';
+INSERT INTO tstmt(text) VALUES (@@session.collation_server);
+INSERT INTO tstmt(text) VALUES (@@session.character_set_server);
+SET @@collation_server= 'latin7_general_cs';
+INSERT INTO tstmt(text) VALUES (@@session.collation_server);
+INSERT INTO tstmt(text) VALUES (@@session.character_set_server);
+SET @@time_zone= 'Europe/Moscow';
+INSERT INTO tstmt(text) VALUES (@@session.time_zone);
+SET @@time_zone= 'Universal';
+INSERT INTO tstmt(text) VALUES (@@session.time_zone);
+SET @@lc_time_names= 'sv_FI';
+INSERT INTO tstmt(text) VALUES (@@session.lc_time_names);
+SET @@lc_time_names= 'no_NO';
+INSERT INTO tstmt(text) VALUES (@@session.lc_time_names);
+SET @@collation_database= 'latin7_general_ci';
+INSERT INTO tstmt(text) VALUES (@@session.collation_database);
+INSERT INTO tstmt(text) VALUES (@@session.character_set_database);
+SET @@collation_database= 'latin7_estonian_cs';
+INSERT INTO tstmt(text) VALUES (@@session.collation_database);
+INSERT INTO tstmt(text) VALUES (@@session.character_set_database);
+SET @@timestamp= 47114711;
+INSERT INTO tstmt(text) VALUES (@@session.timestamp);
+SET @@timestamp= 47124712;
+INSERT INTO tstmt(text) VALUES (@@session.timestamp);
+SET @@last_insert_id= 1616;
+INSERT INTO tstmt(text) VALUES (@@session.last_insert_id);
+SET @@last_insert_id= 1717;
+INSERT INTO tstmt(text) VALUES (@@session.last_insert_id);
+==== Insert variables from a stored procedure ====
+CREATE PROCEDURE proc()
+BEGIN
+SET @@pseudo_thread_id= 4712;
+INSERT INTO tproc(num) VALUES (@@session.pseudo_thread_id);
+SET @@pseudo_thread_id= 4713;
+INSERT INTO tproc(num) VALUES (@@session.pseudo_thread_id);
+SET @@foreign_key_checks= 0;
+INSERT INTO tproc(num) VALUES (@@session.foreign_key_checks);
+SET @@foreign_key_checks= 1;
+INSERT INTO tproc(num) VALUES (@@session.foreign_key_checks);
+SET @@sql_auto_is_null= 0;
+INSERT INTO tproc(num) VALUES (@@session.sql_auto_is_null);
+SET @@sql_auto_is_null= 1;
+INSERT INTO tproc(num) VALUES (@@session.sql_auto_is_null);
+SET @@unique_checks= 0;
+INSERT INTO tproc(num) VALUES (@@session.unique_checks);
+SET @@unique_checks= 1;
+INSERT INTO tproc(num) VALUES (@@session.unique_checks);
+SET @@auto_increment_increment= 11;
+INSERT INTO tproc(num) VALUES (@@session.auto_increment_increment);
+SET @@auto_increment_increment= 19;
+INSERT INTO tproc(num) VALUES (@@session.auto_increment_increment);
+SET @@auto_increment_offset= 13;
+INSERT INTO tproc(num) VALUES (@@session.auto_increment_offset);
+SET @@auto_increment_offset= 17;
+INSERT INTO tproc(num) VALUES (@@session.auto_increment_offset);
+# reset these as they affect the index column
+SET @@auto_increment_increment= 1;
+SET @@auto_increment_offset= 1;
+SET @@character_set_client= 'cp1257';
+INSERT INTO tproc(text) VALUES (@@session.character_set_client);
+SET @@character_set_client= 'cp1256';
+INSERT INTO tproc(text) VALUES (@@session.character_set_client);
+SET @@collation_connection= 'cp1251_ukrainian_ci';
+INSERT INTO tproc(text) VALUES (@@session.collation_connection);
+INSERT INTO tproc(text) VALUES (@@session.character_set_connection);
+SET @@collation_connection= 'cp1251_bulgarian_ci';
+INSERT INTO tproc(text) VALUES (@@session.collation_connection);
+INSERT INTO tproc(text) VALUES (@@session.character_set_connection);
+SET @@collation_server= 'latin7_bin';
+INSERT INTO tproc(text) VALUES (@@session.collation_server);
+INSERT INTO tproc(text) VALUES (@@session.character_set_server);
+SET @@collation_server= 'latin7_general_cs';
+INSERT INTO tproc(text) VALUES (@@session.collation_server);
+INSERT INTO tproc(text) VALUES (@@session.character_set_server);
+SET @@time_zone= 'Europe/Moscow';
+INSERT INTO tproc(text) VALUES (@@session.time_zone);
+SET @@time_zone= 'Universal';
+INSERT INTO tproc(text) VALUES (@@session.time_zone);
+SET @@lc_time_names= 'sv_FI';
+INSERT INTO tproc(text) VALUES (@@session.lc_time_names);
+SET @@lc_time_names= 'no_NO';
+INSERT INTO tproc(text) VALUES (@@session.lc_time_names);
+SET @@collation_database= 'latin7_general_ci';
+INSERT INTO tproc(text) VALUES (@@session.collation_database);
+INSERT INTO tproc(text) VALUES (@@session.character_set_database);
+SET @@collation_database= 'latin7_estonian_cs';
+INSERT INTO tproc(text) VALUES (@@session.collation_database);
+INSERT INTO tproc(text) VALUES (@@session.character_set_database);
+SET @@timestamp= 47114711;
+INSERT INTO tproc(text) VALUES (@@session.timestamp);
+SET @@timestamp= 47124712;
+INSERT INTO tproc(text) VALUES (@@session.timestamp);
+SET @@last_insert_id= 1616;
+INSERT INTO tproc(text) VALUES (@@session.last_insert_id);
+SET @@last_insert_id= 1717;
+INSERT INTO tproc(text) VALUES (@@session.last_insert_id);
+END|
+CALL proc();
+==== Insert variables from a stored function ====
+CREATE FUNCTION func()
+RETURNS INT
+BEGIN
+SET @@pseudo_thread_id= 4712;
+INSERT INTO tfunc(num) VALUES (@@session.pseudo_thread_id);
+SET @@pseudo_thread_id= 4713;
+INSERT INTO tfunc(num) VALUES (@@session.pseudo_thread_id);
+SET @@foreign_key_checks= 0;
+INSERT INTO tfunc(num) VALUES (@@session.foreign_key_checks);
+SET @@foreign_key_checks= 1;
+INSERT INTO tfunc(num) VALUES (@@session.foreign_key_checks);
+SET @@sql_auto_is_null= 0;
+INSERT INTO tfunc(num) VALUES (@@session.sql_auto_is_null);
+SET @@sql_auto_is_null= 1;
+INSERT INTO tfunc(num) VALUES (@@session.sql_auto_is_null);
+SET @@unique_checks= 0;
+INSERT INTO tfunc(num) VALUES (@@session.unique_checks);
+SET @@unique_checks= 1;
+INSERT INTO tfunc(num) VALUES (@@session.unique_checks);
+SET @@auto_increment_increment= 11;
+INSERT INTO tfunc(num) VALUES (@@session.auto_increment_increment);
+SET @@auto_increment_increment= 19;
+INSERT INTO tfunc(num) VALUES (@@session.auto_increment_increment);
+SET @@auto_increment_offset= 13;
+INSERT INTO tfunc(num) VALUES (@@session.auto_increment_offset);
+SET @@auto_increment_offset= 17;
+INSERT INTO tfunc(num) VALUES (@@session.auto_increment_offset);
+# reset these as they affect the index column
+SET @@auto_increment_increment= 1;
+SET @@auto_increment_offset= 1;
+SET @@character_set_client= 'cp1257';
+INSERT INTO tfunc(text) VALUES (@@session.character_set_client);
+SET @@character_set_client= 'cp1256';
+INSERT INTO tfunc(text) VALUES (@@session.character_set_client);
+SET @@collation_connection= 'cp1251_ukrainian_ci';
+INSERT INTO tfunc(text) VALUES (@@session.collation_connection);
+INSERT INTO tfunc(text) VALUES (@@session.character_set_connection);
+SET @@collation_connection= 'cp1251_bulgarian_ci';
+INSERT INTO tfunc(text) VALUES (@@session.collation_connection);
+INSERT INTO tfunc(text) VALUES (@@session.character_set_connection);
+SET @@collation_server= 'latin7_bin';
+INSERT INTO tfunc(text) VALUES (@@session.collation_server);
+INSERT INTO tfunc(text) VALUES (@@session.character_set_server);
+SET @@collation_server= 'latin7_general_cs';
+INSERT INTO tfunc(text) VALUES (@@session.collation_server);
+INSERT INTO tfunc(text) VALUES (@@session.character_set_server);
+SET @@time_zone= 'Europe/Moscow';
+INSERT INTO tfunc(text) VALUES (@@session.time_zone);
+SET @@time_zone= 'Universal';
+INSERT INTO tfunc(text) VALUES (@@session.time_zone);
+SET @@lc_time_names= 'sv_FI';
+INSERT INTO tfunc(text) VALUES (@@session.lc_time_names);
+SET @@lc_time_names= 'no_NO';
+INSERT INTO tfunc(text) VALUES (@@session.lc_time_names);
+SET @@collation_database= 'latin7_general_ci';
+INSERT INTO tfunc(text) VALUES (@@session.collation_database);
+INSERT INTO tfunc(text) VALUES (@@session.character_set_database);
+SET @@collation_database= 'latin7_estonian_cs';
+INSERT INTO tfunc(text) VALUES (@@session.collation_database);
+INSERT INTO tfunc(text) VALUES (@@session.character_set_database);
+SET @@timestamp= 47114711;
+INSERT INTO tfunc(text) VALUES (@@session.timestamp);
+SET @@timestamp= 47124712;
+INSERT INTO tfunc(text) VALUES (@@session.timestamp);
+SET @@last_insert_id= 1616;
+INSERT INTO tfunc(text) VALUES (@@session.last_insert_id);
+SET @@last_insert_id= 1717;
+INSERT INTO tfunc(text) VALUES (@@session.last_insert_id);
+RETURN 0;
+END|
+SELECT func();
+func()
+0
+==== Insert variables from a trigger ====
+CREATE TRIGGER trig
+BEFORE INSERT ON trigger_table
+FOR EACH ROW
+BEGIN
+SET @@pseudo_thread_id= 4712;
+INSERT INTO ttrig(num) VALUES (@@session.pseudo_thread_id);
+SET @@pseudo_thread_id= 4713;
+INSERT INTO ttrig(num) VALUES (@@session.pseudo_thread_id);
+SET @@foreign_key_checks= 0;
+INSERT INTO ttrig(num) VALUES (@@session.foreign_key_checks);
+SET @@foreign_key_checks= 1;
+INSERT INTO ttrig(num) VALUES (@@session.foreign_key_checks);
+SET @@sql_auto_is_null= 0;
+INSERT INTO ttrig(num) VALUES (@@session.sql_auto_is_null);
+SET @@sql_auto_is_null= 1;
+INSERT INTO ttrig(num) VALUES (@@session.sql_auto_is_null);
+SET @@unique_checks= 0;
+INSERT INTO ttrig(num) VALUES (@@session.unique_checks);
+SET @@unique_checks= 1;
+INSERT INTO ttrig(num) VALUES (@@session.unique_checks);
+SET @@auto_increment_increment= 11;
+INSERT INTO ttrig(num) VALUES (@@session.auto_increment_increment);
+SET @@auto_increment_increment= 19;
+INSERT INTO ttrig(num) VALUES (@@session.auto_increment_increment);
+SET @@auto_increment_offset= 13;
+INSERT INTO ttrig(num) VALUES (@@session.auto_increment_offset);
+SET @@auto_increment_offset= 17;
+INSERT INTO ttrig(num) VALUES (@@session.auto_increment_offset);
+# reset these as they affect the index column
+SET @@auto_increment_increment= 1;
+SET @@auto_increment_offset= 1;
+SET @@character_set_client= 'cp1257';
+INSERT INTO ttrig(text) VALUES (@@session.character_set_client);
+SET @@character_set_client= 'cp1256';
+INSERT INTO ttrig(text) VALUES (@@session.character_set_client);
+SET @@collation_connection= 'cp1251_ukrainian_ci';
+INSERT INTO ttrig(text) VALUES (@@session.collation_connection);
+INSERT INTO ttrig(text) VALUES (@@session.character_set_connection);
+SET @@collation_connection= 'cp1251_bulgarian_ci';
+INSERT INTO ttrig(text) VALUES (@@session.collation_connection);
+INSERT INTO ttrig(text) VALUES (@@session.character_set_connection);
+SET @@collation_server= 'latin7_bin';
+INSERT INTO ttrig(text) VALUES (@@session.collation_server);
+INSERT INTO ttrig(text) VALUES (@@session.character_set_server);
+SET @@collation_server= 'latin7_general_cs';
+INSERT INTO ttrig(text) VALUES (@@session.collation_server);
+INSERT INTO ttrig(text) VALUES (@@session.character_set_server);
+SET @@time_zone= 'Europe/Moscow';
+INSERT INTO ttrig(text) VALUES (@@session.time_zone);
+SET @@time_zone= 'Universal';
+INSERT INTO ttrig(text) VALUES (@@session.time_zone);
+SET @@lc_time_names= 'sv_FI';
+INSERT INTO ttrig(text) VALUES (@@session.lc_time_names);
+SET @@lc_time_names= 'no_NO';
+INSERT INTO ttrig(text) VALUES (@@session.lc_time_names);
+SET @@collation_database= 'latin7_general_ci';
+INSERT INTO ttrig(text) VALUES (@@session.collation_database);
+INSERT INTO ttrig(text) VALUES (@@session.character_set_database);
+SET @@collation_database= 'latin7_estonian_cs';
+INSERT INTO ttrig(text) VALUES (@@session.collation_database);
+INSERT INTO ttrig(text) VALUES (@@session.character_set_database);
+SET @@timestamp= 47114711;
+INSERT INTO ttrig(text) VALUES (@@session.timestamp);
+SET @@timestamp= 47124712;
+INSERT INTO ttrig(text) VALUES (@@session.timestamp);
+SET @@last_insert_id= 1616;
+INSERT INTO ttrig(text) VALUES (@@session.last_insert_id);
+SET @@last_insert_id= 1717;
+INSERT INTO ttrig(text) VALUES (@@session.last_insert_id);
+END|
+INSERT INTO trigger_table VALUES ('bye.');
+==== Insert variables from a prepared statement ====
+PREPARE p1 FROM 'SET @@pseudo_thread_id= 4712';
+PREPARE p2 FROM 'INSERT INTO tprep(num) VALUES (@@session.pseudo_thread_id)';
+PREPARE p3 FROM 'SET @@pseudo_thread_id= 4713';
+PREPARE p4 FROM 'INSERT INTO tprep(num) VALUES (@@session.pseudo_thread_id)';
+PREPARE p5 FROM 'SET @@foreign_key_checks= 0';
+PREPARE p6 FROM 'INSERT INTO tprep(num) VALUES (@@session.foreign_key_checks)';
+PREPARE p7 FROM 'SET @@foreign_key_checks= 1';
+PREPARE p8 FROM 'INSERT INTO tprep(num) VALUES (@@session.foreign_key_checks)';
+PREPARE p9 FROM 'SET @@sql_auto_is_null= 0';
+PREPARE p10 FROM 'INSERT INTO tprep(num) VALUES (@@session.sql_auto_is_null)';
+PREPARE p11 FROM 'SET @@sql_auto_is_null= 1';
+PREPARE p12 FROM 'INSERT INTO tprep(num) VALUES (@@session.sql_auto_is_null)';
+PREPARE p13 FROM 'SET @@unique_checks= 0';
+PREPARE p14 FROM 'INSERT INTO tprep(num) VALUES (@@session.unique_checks)';
+PREPARE p15 FROM 'SET @@unique_checks= 1';
+PREPARE p16 FROM 'INSERT INTO tprep(num) VALUES (@@session.unique_checks)';
+PREPARE p17 FROM 'SET @@auto_increment_increment= 11';
+PREPARE p18 FROM 'INSERT INTO tprep(num) VALUES (@@session.auto_increment_increment)';
+PREPARE p19 FROM 'SET @@auto_increment_increment= 19';
+PREPARE p20 FROM 'INSERT INTO tprep(num) VALUES (@@session.auto_increment_increment)';
+PREPARE p21 FROM 'SET @@auto_increment_offset= 13';
+PREPARE p22 FROM 'INSERT INTO tprep(num) VALUES (@@session.auto_increment_offset)';
+PREPARE p23 FROM 'SET @@auto_increment_offset= 17';
+PREPARE p24 FROM 'INSERT INTO tprep(num) VALUES (@@session.auto_increment_offset)';
+PREPARE p25 FROM 'SET @@auto_increment_increment= 1';
+PREPARE p26 FROM 'SET @@auto_increment_offset= 1';
+PREPARE p27 FROM 'SET @@character_set_client= \'cp1257\'';
+PREPARE p28 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_client)';
+PREPARE p29 FROM 'SET @@character_set_client= \'cp1256\'';
+PREPARE p30 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_client)';
+PREPARE p31 FROM 'SET @@collation_connection= \'cp1251_ukrainian_ci\'';
+PREPARE p32 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_connection)';
+PREPARE p33 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_connection)';
+PREPARE p34 FROM 'SET @@collation_connection= \'cp1251_bulgarian_ci\'';
+PREPARE p35 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_connection)';
+PREPARE p36 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_connection)';
+PREPARE p37 FROM 'SET @@collation_server= \'latin7_bin\'';
+PREPARE p38 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_server)';
+PREPARE p39 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_server)';
+PREPARE p40 FROM 'SET @@collation_server= \'latin7_general_cs\'';
+PREPARE p41 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_server)';
+PREPARE p42 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_server)';
+PREPARE p43 FROM 'SET @@time_zone= \'Europe/Moscow\'';
+PREPARE p44 FROM 'INSERT INTO tprep(text) VALUES (@@session.time_zone)';
+PREPARE p45 FROM 'SET @@time_zone= \'Universal\'';
+PREPARE p46 FROM 'INSERT INTO tprep(text) VALUES (@@session.time_zone)';
+PREPARE p47 FROM 'SET @@lc_time_names= \'sv_FI\'';
+PREPARE p48 FROM 'INSERT INTO tprep(text) VALUES (@@session.lc_time_names)';
+PREPARE p49 FROM 'SET @@lc_time_names= \'no_NO\'';
+PREPARE p50 FROM 'INSERT INTO tprep(text) VALUES (@@session.lc_time_names)';
+PREPARE p51 FROM 'SET @@collation_database= \'latin7_general_ci\'';
+PREPARE p52 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_database)';
+PREPARE p53 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_database)';
+PREPARE p54 FROM 'SET @@collation_database= \'latin7_estonian_cs\'';
+PREPARE p55 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_database)';
+PREPARE p56 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_database)';
+PREPARE p57 FROM 'SET @@timestamp= 47114711';
+PREPARE p58 FROM 'INSERT INTO tprep(text) VALUES (@@session.timestamp)';
+PREPARE p59 FROM 'SET @@timestamp= 47124712';
+PREPARE p60 FROM 'INSERT INTO tprep(text) VALUES (@@session.timestamp)';
+PREPARE p61 FROM 'SET @@last_insert_id= 1616';
+PREPARE p62 FROM 'INSERT INTO tprep(text) VALUES (@@session.last_insert_id)';
+PREPARE p63 FROM 'SET @@last_insert_id= 1717';
+PREPARE p64 FROM 'INSERT INTO tprep(text) VALUES (@@session.last_insert_id)';
+EXECUTE p1;
+EXECUTE p2;
+EXECUTE p3;
+EXECUTE p4;
+EXECUTE p5;
+EXECUTE p6;
+EXECUTE p7;
+EXECUTE p8;
+EXECUTE p9;
+EXECUTE p10;
+EXECUTE p11;
+EXECUTE p12;
+EXECUTE p13;
+EXECUTE p14;
+EXECUTE p15;
+EXECUTE p16;
+EXECUTE p17;
+EXECUTE p18;
+EXECUTE p19;
+EXECUTE p20;
+EXECUTE p21;
+EXECUTE p22;
+EXECUTE p23;
+EXECUTE p24;
+EXECUTE p25;
+EXECUTE p26;
+EXECUTE p27;
+EXECUTE p28;
+EXECUTE p29;
+EXECUTE p30;
+EXECUTE p31;
+EXECUTE p32;
+EXECUTE p33;
+EXECUTE p34;
+EXECUTE p35;
+EXECUTE p36;
+EXECUTE p37;
+EXECUTE p38;
+EXECUTE p39;
+EXECUTE p40;
+EXECUTE p41;
+EXECUTE p42;
+EXECUTE p43;
+EXECUTE p44;
+EXECUTE p45;
+EXECUTE p46;
+EXECUTE p47;
+EXECUTE p48;
+EXECUTE p49;
+EXECUTE p50;
+EXECUTE p51;
+EXECUTE p52;
+EXECUTE p53;
+EXECUTE p54;
+EXECUTE p55;
+EXECUTE p56;
+EXECUTE p57;
+EXECUTE p58;
+EXECUTE p59;
+EXECUTE p60;
+EXECUTE p61;
+EXECUTE p62;
+EXECUTE p63;
+EXECUTE p64;
+==== Results ====
+SELECT * FROM tstmt ORDER BY id;
+id num text
+1 4712 NULL
+2 4713 NULL
+3 0 NULL
+4 1 NULL
+5 0 NULL
+6 1 NULL
+7 0 NULL
+8 1 NULL
+12 11 NULL
+20 19 NULL
+32 13 NULL
+36 17 NULL
+37 NULL cp1257
+38 NULL cp1256
+39 NULL cp1251_ukrainian_ci
+40 NULL cp1251
+41 NULL cp1251_bulgarian_ci
+42 NULL cp1251
+43 NULL latin7_bin
+44 NULL latin7
+45 NULL latin7_general_cs
+46 NULL latin7
+47 NULL Europe/Moscow
+48 NULL Universal
+49 NULL sv_FI
+50 NULL no_NO
+51 NULL latin7_general_ci
+52 NULL latin7
+53 NULL latin7_estonian_cs
+54 NULL latin7
+55 NULL 47114711
+56 NULL 47124712
+57 NULL 1616
+58 NULL 1717
+Comparing tables master:test.tstmt and master:test.tproc
+Comparing tables master:test.tstmt and master:test.tfunc
+Comparing tables master:test.tstmt and master:test.ttrig
+Comparing tables master:test.tstmt and master:test.tprep
+Comparing tables master:test.tstmt and slave:test.tstmt
+Comparing tables master:test.tstmt and slave:test.tproc
+Comparing tables master:test.tstmt and slave:test.tfunc
+Comparing tables master:test.tstmt and slave:test.ttrig
+Comparing tables master:test.tstmt and slave:test.tprep
+==== Clean up ====
+[on master]
+DROP PROCEDURE proc;
+DROP FUNCTION func;
+DROP TRIGGER trig;
+DROP TABLE tstmt, tproc, tfunc, ttrig, tprep, trigger_table;
+SET @@global.pseudo_thread_id= @m_pseudo_thread_id;
+SET @@global.auto_increment_increment= @m_auto_increment_increment;
+SET @@global.auto_increment_offset= @m_auto_increment_offset;
+SET @@global.character_set_client= @m_character_set_client;
+SET @@global.collation_connection= @m_collation_connection;
+SET @@global.collation_server= @m_collation_server;
+SET @@global.time_zone= @m_time_zone;
+SET @@global.lc_time_names= @m_lc_time_names;
+SET @@global.collation_database= @m_collation_database;
+[on slave]
+SET @@global.pseudo_thread_id= @s_pseudo_thread_id;
+SET @@global.auto_increment_increment= @s_auto_increment_increment;
+SET @@global.auto_increment_offset= @s_auto_increment_offset;
+SET @@global.character_set_client= @s_character_set_client;
+SET @@global.collation_connection= @s_collation_connection;
+SET @@global.collation_server= @s_collation_server;
+SET @@global.time_zone= @s_time_zone;
+SET @@global.lc_time_names= @s_lc_time_names;
+SET @@global.collation_database= @s_collation_database;
diff --git a/mysql-test/suite/rpl/t/rpl_bug33931-slave.opt b/mysql-test/suite/rpl/t/rpl_bug33931-slave.opt
new file mode 100644
index 00000000000..55fe328a41d
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_bug33931-slave.opt
@@ -0,0 +1 @@
+--loose-debug=d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init
diff --git a/mysql-test/suite/rpl/t/rpl_bug33931.test b/mysql-test/suite/rpl/t/rpl_bug33931.test
new file mode 100644
index 00000000000..788f79d4c1c
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_bug33931.test
@@ -0,0 +1,37 @@
+# Test for
+# Bug #33931 assertion at write_ignored_events_info_to_relay_log if init_slave_thread() fails
+# Bug #33932 assertion at handle_slave_sql if init_slave_thread() fails
+
+source include/have_debug.inc;
+source include/have_log_bin.inc;
+
+connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
+connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT,);
+
+
+connection master;
+reset master;
+
+connection slave;
+--disable_warnings
+stop slave;
+--enable_warnings
+reset slave;
+start slave;
+
+connection master;
+save_master_pos;
+connection slave;
+
+#
+# slave is going to stop because of emulated failures
+# but there won't be any crashes nor asserts hit.
+#
+source include/wait_for_slave_to_stop.inc;
+
+--replace_result $MASTER_MYPORT MASTER_PORT
+--replace_column 1 # 8 # 9 # 23 # 33 #
+query_vertical show slave status;
+
+# no clean-up is needed
+
diff --git a/mysql-test/suite/rpl/t/rpl_change_master.test b/mysql-test/suite/rpl/t/rpl_change_master.test
index 7e4800c5c77..d0cd40e2e11 100644
--- a/mysql-test/suite/rpl/t/rpl_change_master.test
+++ b/mysql-test/suite/rpl/t/rpl_change_master.test
@@ -15,8 +15,10 @@ connection master;
insert into t1 values(1);
insert into t1 values(2);
save_master_pos;
+let $slave_param= Read_Master_Log_Pos;
+let $slave_param_value= query_get_value(SHOW MASTER STATUS, Position, 1);
connection slave;
---real_sleep 3 # wait for I/O thread to have read updates
+source include/wait_for_slave_param.inc;
stop slave;
source include/show_slave_status2.inc;
change master to master_user='root';
diff --git a/mysql-test/suite/rpl/t/rpl_drop_temp.test b/mysql-test/suite/rpl/t/rpl_drop_temp.test
index 305c78d3f06..f06b0951469 100644
--- a/mysql-test/suite/rpl/t/rpl_drop_temp.test
+++ b/mysql-test/suite/rpl/t/rpl_drop_temp.test
@@ -6,19 +6,25 @@
# to work around NDB's issue with temp tables
##############################################
source include/master-slave.inc;
+source include/have_binlog_format_mixed_or_statement.inc;
+
--disable_warnings
create database if not exists mysqltest;
--enable_warnings
create temporary table mysqltest.t1 (n int)ENGINE=MyISAM;
create temporary table mysqltest.t2 (n int)ENGINE=MyISAM;
-sync_slave_with_master;
+
connection master;
disconnect master;
-connection slave;
---real_sleep 3 # time for DROP to be written
-show status like 'Slave_open_temp_tables';
+connection master1;
+# Wait until drop of temp tables appears in binlog
+let $wait_binlog_event= DROP;
+source include/wait_for_binlog_event.inc;
+
+sync_slave_with_master;
+show status like 'Slave_open_temp_tables';
# Cleanup
connection default;
drop database mysqltest;
diff --git a/mysql-test/suite/rpl/t/rpl_flushlog_loop.test b/mysql-test/suite/rpl/t/rpl_flushlog_loop.test
index 750b49f19a9..f9f01855aa9 100644
--- a/mysql-test/suite/rpl/t/rpl_flushlog_loop.test
+++ b/mysql-test/suite/rpl/t/rpl_flushlog_loop.test
@@ -35,12 +35,35 @@ let $result_pattern= '%127.0.0.1%root%slave-bin.000001%slave-bin.000001%Yes%Yes%
#
# Flush logs of slave
#
-flush logs;
-sleep 5;
+# Create full loop by following way:
+# 1. Insert into t1 on master (1st).
+# 2. Insert into t1 on slave (2nd) when the event (1st) for t1 replicated.
+# 3. Master waits until the event (2nd) for t1 will be replicated.
+
+--disable_query_log
+CREATE TABLE t1 (a INT KEY) ENGINE= MyISAM;
+let $wait_binlog_event= CREATE TABLE t1;
+--source include/wait_for_binlog_event.inc
+sync_slave_with_master;
+connection master;
+INSERT INTO t1 VALUE(1);
+--enable_query_log
+FLUSH LOGS;
+connection slave;
+let $wait_condition= SELECT COUNT(*) = 1 FROM t1;
+-- source include/wait_condition.inc
+--disable_query_log
+INSERT INTO t1 VALUE(2);
+--enable_query_log
+connection master;
+let $wait_condition= SELECT COUNT(*) = 2 FROM t1;
+-- source include/wait_condition.inc
+--enable_query_log
#
# Show status of slave
#
---replace_result $SLAVE_MYPORT SLAVE_PORT
+let $pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1);
+--replace_result $SLAVE_MYPORT SLAVE_PORT $pos POSITION
--replace_column 1 # 8 # 9 # 16 # 23 # 33 # 34 # 35 #
--query_vertical SHOW SLAVE STATUS
diff --git a/mysql-test/suite/rpl/t/rpl_invoked_features.test b/mysql-test/suite/rpl/t/rpl_invoked_features.test
index 17cdc1e61cf..e73964a6e14 100644
--- a/mysql-test/suite/rpl/t/rpl_invoked_features.test
+++ b/mysql-test/suite/rpl/t/rpl_invoked_features.test
@@ -201,11 +201,16 @@ SET GLOBAL EVENT_SCHEDULER = off;
# Check original objects
--echo
+--sorted_result
SHOW TABLES LIKE 't%';
-SELECT table_name FROM information_schema.views WHERE table_schema='test' ORDER BY table_name;
-SELECT trigger_name, event_manipulation, event_object_table FROM information_schema.triggers WHERE trigger_schema='test' ORDER BY trigger_name;
-SELECT routine_type, routine_name FROM information_schema.routines WHERE routine_schema='test' ORDER BY routine_name;
-SELECT event_name, status FROM information_schema.events WHERE event_schema='test' ORDER BY event_name;
+--sorted_result
+SELECT table_name FROM information_schema.views WHERE table_schema='test';
+--sorted_result
+SELECT trigger_name, event_manipulation, event_object_table FROM information_schema.triggers WHERE trigger_schema='test';
+--sorted_result
+SELECT routine_type, routine_name FROM information_schema.routines WHERE routine_schema='test';
+--sorted_result
+SELECT event_name, status FROM information_schema.events WHERE event_schema='test';
# Check original data
--echo
@@ -228,11 +233,16 @@ SELECT a,b FROM v11 ORDER BY a;
# Check replicated objects
--echo
+--sorted_result
SHOW TABLES LIKE 't%';
-SELECT table_name FROM information_schema.views WHERE table_schema='test' ORDER BY table_name;
-SELECT trigger_name, event_manipulation, event_object_table FROM information_schema.triggers WHERE trigger_schema='test' ORDER BY trigger_name;
-SELECT routine_type, routine_name FROM information_schema.routines WHERE routine_schema='test' ORDER BY routine_name;
-SELECT event_name, status FROM information_schema.events WHERE event_schema='test' ORDER BY event_name;
+--sorted_result
+SELECT table_name FROM information_schema.views WHERE table_schema='test';
+--sorted_result
+SELECT trigger_name, event_manipulation, event_object_table FROM information_schema.triggers WHERE trigger_schema='test';
+--sorted_result
+SELECT routine_type, routine_name FROM information_schema.routines WHERE routine_schema='test';
+--sorted_result
+SELECT event_name, status FROM information_schema.events WHERE event_schema='test';
# Check replicated data
--echo
diff --git a/mysql-test/suite/rpl/t/rpl_master_pos_wait.test b/mysql-test/suite/rpl/t/rpl_master_pos_wait.test
index 893c8746efc..2f7b18ae04b 100644
--- a/mysql-test/suite/rpl/t/rpl_master_pos_wait.test
+++ b/mysql-test/suite/rpl/t/rpl_master_pos_wait.test
@@ -15,4 +15,15 @@ stop slave sql_thread;
connection slave;
reap;
+#
+# bug#26622 MASTER_POS_WAIT does not work as documented
+#
+
+connection master;
+echo "*** must be empty ***";
+query_vertical show slave status;
+
+echo "*** must be NULL ***";
+select master_pos_wait('foo', 98);
+
# End of 4.1 tests
diff --git a/mysql-test/suite/rpl/t/rpl_relayspace.test b/mysql-test/suite/rpl/t/rpl_relayspace.test
index d4ef2fe59bd..0fc564cdb46 100644
--- a/mysql-test/suite/rpl/t/rpl_relayspace.test
+++ b/mysql-test/suite/rpl/t/rpl_relayspace.test
@@ -14,23 +14,10 @@ connection slave;
reset slave;
start slave io_thread;
# Give the I/O thread time to block.
-let $run= 1;
-let $counter= 300;
-while ($run)
-{
- let $io_state= query_get_value("SHOW SLAVE STATUS", Slave_IO_State, 1);
- if (`SELECT '$io_state' = 'Waiting for the slave SQL thread to free enough relay log space'`){
- let $run= 0;
- }
- sleep 0.1;
- if (!$counter){
- --echo "Failed while waiting for slave IO thread block"
- SHOW SLAVE STATUS;
- exit;
- }
- dec $counter;
-}
-sleep 2;
+let $slave_param= Slave_IO_State;
+let $slave_param_value= Waiting for the slave SQL thread to free enough relay log space;
+source include/wait_for_slave_param.inc;
+
# A bug caused the I/O thread to refuse stopping.
stop slave io_thread;
reset slave;
diff --git a/mysql-test/suite/rpl/t/rpl_report-slave.opt b/mysql-test/suite/rpl/t/rpl_report-slave.opt
new file mode 100644
index 00000000000..123e5c272b9
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_report-slave.opt
@@ -0,0 +1,2 @@
+--report-host=127.0.0.1 --report-user='my_user' --report-password='my_password' --report-port=9308
+
diff --git a/mysql-test/suite/rpl/t/rpl_report.test b/mysql-test/suite/rpl/t/rpl_report.test
new file mode 100644
index 00000000000..8798905d372
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_report.test
@@ -0,0 +1,21 @@
+# Verify that mysqld init time --report-{host,port,user,password} parameters
+# are SHOW-able and SELECT-able FROM INFORMATION_SCHEMA.global_variables
+
+source include/master-slave.inc;
+
+connection slave;
+select * from Information_schema.GLOBAL_VARIABLES where variable_name like 'report_host';
+select * from Information_schema.GLOBAL_VARIABLES where variable_name like 'report_port';
+select * from Information_schema.GLOBAL_VARIABLES where variable_name like 'report_user';
+select * from Information_schema.GLOBAL_VARIABLES where variable_name like 'report_password';
+query_vertical show global variables like 'report_host';
+query_vertical show global variables like 'report_port';
+query_vertical show global variables like 'report_user';
+query_vertical show global variables like 'report_password';
+
+# to demonstrate that report global variables are read-only
+error ER_INCORRECT_GLOBAL_LOCAL_VAR;
+set @@global.report_host='my.new.address.net';
+
+
+--echo end of tests
diff --git a/mysql-test/suite/rpl/t/rpl_row_view01.test b/mysql-test/suite/rpl/t/rpl_row_view01.test
index 634e3c30cc6..77e4b98f780 100644
--- a/mysql-test/suite/rpl/t/rpl_row_view01.test
+++ b/mysql-test/suite/rpl/t/rpl_row_view01.test
@@ -23,6 +23,7 @@ DROP TABLE IF EXISTS mysqltest1.t3;
DROP TABLE IF EXISTS mysqltest1.t1;
DROP TABLE IF EXISTS mysqltest1.t2;
DROP TABLE IF EXISTS mysqltest1.t4;
+DROP TABLE IF EXISTS mysqltest1.t10;
# Begin test section 1
CREATE TABLE mysqltest1.t1 (a INT, c CHAR(6),PRIMARY KEY(a));
@@ -43,12 +44,18 @@ CREATE VIEW mysqltest1.v4 AS SELECT * FROM mysqltest1.v3 WHERE a > 1 WITH LOCAL
SELECT * FROM mysqltest1.v2;
SELECT * FROM mysqltest1.v1;
-# Had to add a sleep for use with NDB
+
+
+# Had to add a waiting for use with NDB
# engine. Injector thread would have not
-# populated biblog and data would not be on
+# populated binlog and data would not be on
# the slave.
-sleep 10;
-sync_slave_with_master;
+
+CREATE TABLE mysqltest1.t10 (a INT, PRIMARY KEY(a));
+let $wait_binlog_event= CREATE TABLE mysqltest1.t10;
+-- source include/wait_for_binlog_event.inc
+--sync_slave_with_master
+
SELECT * FROM mysqltest1.v2;
SELECT * FROM mysqltest1.v1;
connection master;
@@ -82,6 +89,7 @@ DROP TABLE IF EXISTS mysqltest1.t3;
DROP TABLE IF EXISTS mysqltest1.t1;
DROP TABLE IF EXISTS mysqltest1.t2;
DROP TABLE IF EXISTS mysqltest1.t4;
+DROP TABLE IF EXISTS mysqltest1.t10;
DROP DATABASE mysqltest1;
sync_slave_with_master;
diff --git a/mysql-test/suite/rpl/t/rpl_server_id1.test b/mysql-test/suite/rpl/t/rpl_server_id1.test
index 2db1f6e364d..b412f303b7e 100644
--- a/mysql-test/suite/rpl/t/rpl_server_id1.test
+++ b/mysql-test/suite/rpl/t/rpl_server_id1.test
@@ -6,21 +6,20 @@
source include/master-slave.inc;
connection slave;
-create table t1 (n int);
reset master;
+
# replicate ourselves
stop slave;
--replace_result $SLAVE_MYPORT SLAVE_PORT
eval change master to master_port=$SLAVE_MYPORT;
+start slave;
+
+--echo *** must be having the replicate-same-server-id IO thread error ***
+
+source include/wait_for_slave_io_to_stop.inc;
+
--replace_result $SLAVE_MYPORT SLAVE_PORT
---replace_column 16 # 18 # 35 # 36 #
+--replace_column 12 # 16 # 19 # 20 # 18 # 37 # 38 #
query_vertical show slave status;
-start slave;
-insert into t1 values (1);
-# can't MASTER_POS_WAIT(), it does not work in this weird setup
-# (when slave is its own master without --replicate-same-server-id)
-sleep 2; # enough time for the event to be replicated (it should not)
-show status like "slave_running";
-drop table t1;
# End of 4.1 tests
diff --git a/mysql-test/suite/rpl/t/rpl_skip_error.test b/mysql-test/suite/rpl/t/rpl_skip_error.test
index efd46f4fa09..cac797d3797 100644
--- a/mysql-test/suite/rpl/t/rpl_skip_error.test
+++ b/mysql-test/suite/rpl/t/rpl_skip_error.test
@@ -1,39 +1,61 @@
-##########################################
-# 2006-02-07 By JBM: Added order by
-#########################################
-# Note that errors are ignored by opt file.
-source include/master-slave.inc;
-source include/have_binlog_format_mixed_or_statement.inc;
-
+# ==== Purpose ====
+#
+# Verify that --slave-skip-errors works correctly. The error messages
+# specified by --slave-skip-errors on slave should be ignored. If
+# such errors occur, they should not be reported and not cause the
+# slave to stop.
+#
+# ==== Method ====
#
-# Bug #30594
-# Skipping error due to applying Row-based repliation events
-# should be checked with another test file
-# consider names like rpl_row_skip_error
+# We run the slave with --slave-skip-errors=1062 (the code for
+# duplicate key). On slave, we insert value 1 in a table, and then,
+# on master, we insert value 1 in the table. The error should be
+# ignored on slave.
#
+# ==== Related bugs ====
+#
+# BUG#28839: Errors in strict mode silently stop SQL thread if --slave-skip-errors exists
+# bug in this test: BUG#30594: rpl.rpl_skip_error is nondeterministic
+
+source include/master-slave.inc;
+source include/have_binlog_format_statement.inc;
+
+--echo ==== Test Without sql_mode=strict_trans_tables ====
+
+--echo [on master]
create table t1 (n int not null primary key);
-save_master_pos;
-connection slave;
-sync_with_master;
+
+--echo [on slave]
+sync_slave_with_master;
insert into t1 values (1);
+
+--echo [on master]
connection master;
# Here we expect (ignored) error, since 1 is already in slave table
insert into t1 values (1);
-
# These should work fine
insert into t1 values (2),(3);
-save_master_pos;
-connection slave;
-sync_with_master;
-select * from t1 ORDER BY n;
+sync_slave_with_master;
+--echo [on slave]
+select * from t1 order by n;
-# Cleanup
+--echo ==== Test With sql_mode=strict_trans_tables ====
+insert into t1 values (7),(8);
+--echo [on master]
connection master;
-drop table t1;
+set sql_mode=strict_trans_tables;
+insert into t1 values (7), (8), (9);
+--echo [on slave]
sync_slave_with_master;
+select * from t1 order by n;
+source include/show_slave_status2.inc;
+--echo ==== Clean Up ====
+connection master;
+drop table t1;
+sync_slave_with_master;
# End of 4.1 tests
#
@@ -44,14 +66,17 @@ create table t1(a int primary key);
insert into t1 values (1),(2);
delete from t1 where @@server_id=1;
set sql_mode=strict_trans_tables;
-select @@server_id;
-insert into t1 values (1),(2),(3);
+insert into t1 values (7), (8), (9);
+
+--echo [on slave]
sync_slave_with_master;
-connection slave;
-select @@server_id;
select * from t1;
source include/show_slave_status2.inc;
+
+
+--echo ==== Clean Up ====
+
connection master;
drop table t1;
-sync_with_master;
+sync_slave_with_master;
# End of 5.0 tests
diff --git a/mysql-test/suite/rpl/t/rpl_slave_status.test b/mysql-test/suite/rpl/t/rpl_slave_status.test
index d07cf13dcf4..0b1644ab8a0 100644
--- a/mysql-test/suite/rpl/t/rpl_slave_status.test
+++ b/mysql-test/suite/rpl/t/rpl_slave_status.test
@@ -50,9 +50,10 @@ show slave status;
connection slave;
drop table t1;
delete from mysql.user where user='rpl';
+# cleanup: slave io thread has been stopped "irrecoverably"
+# so we clean up mess manually
+
connection master;
drop table t1;
-# end of test case for BUG#10780
-
# end of 4.1 tests
diff --git a/mysql-test/suite/rpl/t/rpl_temporary.test b/mysql-test/suite/rpl/t/rpl_temporary.test
index 6619f4518b9..44f901bdae7 100644
--- a/mysql-test/suite/rpl/t/rpl_temporary.test
+++ b/mysql-test/suite/rpl/t/rpl_temporary.test
@@ -132,7 +132,7 @@ drop table t1,t2;
# don't get any memory leaks for this
create temporary table t3 (f int);
-sync_with_master;
+sync_slave_with_master;
# The server will now close done
@@ -143,7 +143,8 @@ sync_with_master;
connection master;
create temporary table t4 (f int);
create table t5 (f int);
-sync_with_master;
+sync_slave_with_master;
+connection master;
# find dumper's $id
select id from information_schema.processlist where command='Binlog Dump' into @id;
kill @id; # to stimulate reconnection by slave w/o timeout
diff --git a/mysql-test/suite/rpl/t/rpl_trunc_temp.test b/mysql-test/suite/rpl/t/rpl_trunc_temp.test
index 28bcb0c06c3..93308e3eb3f 100644
--- a/mysql-test/suite/rpl/t/rpl_trunc_temp.test
+++ b/mysql-test/suite/rpl/t/rpl_trunc_temp.test
@@ -27,7 +27,12 @@ show status like 'Slave_open_temp_tables';
# Disconnect the master, temp table on slave should dissapear
disconnect master;
---real_sleep 3 # time for DROP to be read by slave
+
+connection master1;
+# Wait until drop of temp tables appers in binlog
+let $wait_binlog_event= DROP;
+source include/wait_for_binlog_event.inc;
+
connection slave;
show status like 'Slave_open_temp_tables';
diff --git a/mysql-test/suite/rpl/t/rpl_variables-master.opt b/mysql-test/suite/rpl/t/rpl_variables-master.opt
deleted file mode 100644
index a668c6bfbe8..00000000000
--- a/mysql-test/suite/rpl/t/rpl_variables-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---slave-skip-errors=3,100,137,643,1752
diff --git a/mysql-test/suite/rpl/t/rpl_variables.test b/mysql-test/suite/rpl/t/rpl_variables.test
index 84dc3acfe6e..3669e14c5df 100644
--- a/mysql-test/suite/rpl/t/rpl_variables.test
+++ b/mysql-test/suite/rpl/t/rpl_variables.test
@@ -1,20 +1,739 @@
+# ==== Purpose ====
+#
+# Test that queries referencing variables are replicated correctly in
+# mixed and row-based logging mode.
+#
+#
+# ==== Method ====
+#
+# The test simply does a lot of "INSERT INTO t1 VALUES (@@variable)"
+# and checks the result on the slave.
+#
+# Statements referencing a variable only replicate correctly in mixed
+# and row mode: in row mode, the values inserted are replicated. In
+# mixed mode, statements referencing a variable are marked as unsafe,
+# meaning they will be replicated by row. In statement mode, the
+# slave's value will be used and replication will break. (Except in a
+# small number of special cases: random seeds, insert_id, and
+# auto_increment are replicated).
+#
+# We test the following variable scopes:
+# - server system variables
+# - server session variables
+# - server "both" variables
+# - user variables
+#
+# For each scope, we use variables of the following types if they
+# exist:
+# - boolean
+# - numeric
+# - string
+# - enumeration variables
+#
+# We use these types of variables in the following contexts:
+# - directly
+# - from a stored procedure
+# - from a stored function
+# - from a trigger
+# - from a prepared statement
+#
+# For all variables where it is possible, we set the variable to one
+# value on slave, and insert it on the master with two distinct
+# values.
+#
+# The same insertions are made in four different tables using direct
+# insert, stored procedure, stored function, or trigger. Then all
+# eight resulting tables on master and slave are compared.
+#
+#
+# ==== Related bugs ====
+#
+# BUG#31168: @@hostname does not replicate
+#
+#
+# ==== Related test cases ====
+#
+# binlog.binlog_unsafe tests that a warning is issued if system
+# variables are replicated in statement mode.
+#
+# rpl.rpl_variables_stm tests the small subset of variables that
+# actually can be replicated safely in statement mode.
+
+
source include/master-slave.inc;
+source include/have_binlog_format_mixed_or_row.inc;
+
+
+--echo ==== Initialization ====
+
+# Backup the values of global variables so that they can be restored
+# later.
+--echo [on master]
+connection master;
+SET @m_default_week_format= @@global.default_week_format;
+SET @m_init_slave= @@global.init_slave;
+SET @m_lc_time_names= @@global.lc_time_names;
+SET @m_low_priority_updates= @@global.low_priority_updates;
+SET @m_relay_log_purge= @@global.relay_log_purge;
+SET @m_slave_exec_mode= @@global.slave_exec_mode;
+SET @m_sql_mode= @@global.sql_mode;
+SET @m_sync_binlog= @@global.sync_binlog;
+
+--echo [on slave]
+connection slave;
+SET @s_default_week_format= @@global.default_week_format;
+SET @s_init_slave= @@global.init_slave;
+SET @s_lc_time_names= @@global.lc_time_names;
+SET @s_low_priority_updates= @@global.low_priority_updates;
+SET @s_relay_log_purge= @@global.relay_log_purge;
+SET @s_slave_exec_mode= @@global.slave_exec_mode;
+SET @s_sql_mode= @@global.sql_mode;
+SET @s_sync_binlog= @@global.sync_binlog;
+
+# Set global variables on slave to something different than on master.
+SET @@global.relay_log_purge = OFF;
+SET @@global.sync_binlog = 1000000;
+SET @@global.slave_exec_mode = 'STRICT';
+SET @@sql_big_selects = OFF;
+SET @@last_insert_id = 10;
+SET @@global.low_priority_updates = OFF;
+SET @@local.low_priority_updates = OFF;
+SET @@global.default_week_format = 1;
+SET @@local.default_week_format = 2;
+SET @@global.lc_time_names = 'zh_HK';
+SET @@local.lc_time_names = 'zh_TW';
+SET @@global.sql_mode = 'ALLOW_INVALID_DATES';
+SET @@local.sql_mode = 'ANSI_QUOTES,ERROR_FOR_DIVISION_BY_ZERO,HIGH_NOT_PRECEDENCE';
+SET @user_num = 10;
+SET @user_text = 'Alunda';
+
+# Stop slave so that we get a fresh sql thread, reading the slave's
+# global values of variables into its local copies.
+--echo [on master]
+connection master;
+source include/reset_master_and_slave.inc;
+
+# We would have wanted to set this together with the other variables
+# above, but can't because it affects how the slave works.
+--echo [on slave]
+connection slave;
+SET @@global.init_slave = 'ant';
+
+
+--echo [on master]
+connection master;
+
+# Tables where everything happens.
+CREATE TABLE tstmt (id INT AUTO_INCREMENT PRIMARY KEY,
+ truth BOOLEAN,
+ num INT,
+ text VARCHAR(100));
+CREATE TABLE tproc LIKE tstmt;
+CREATE TABLE tfunc LIKE tstmt;
+CREATE TABLE ttrig LIKE tstmt;
+CREATE TABLE tprep LIKE tstmt;
+
+# Table on which we put a trigger.
+CREATE TABLE trigger_table (text CHAR(4));
+
+
+--echo ==== Insert variables directly ====
+
+--echo ---- global variables ----
+
+# boolean
+SET @@global.relay_log_purge = ON;
+INSERT INTO tstmt(truth) VALUES (@@global.relay_log_purge);
+SET @@global.relay_log_purge = OFF;
+INSERT INTO tstmt(truth) VALUES (@@global.relay_log_purge);
+
+# numeric
+SET @@global.sync_binlog = 2000000;
+INSERT INTO tstmt(num) VALUES (@@global.sync_binlog);
+SET @@global.sync_binlog = 3000000;
+INSERT INTO tstmt(num) VALUES (@@global.sync_binlog);
+
+# string
+SET @@global.init_slave = 'bison';
+INSERT INTO tstmt(text) VALUES (@@global.init_slave);
+SET @@global.init_slave = 'cat';
+INSERT INTO tstmt(text) VALUES (@@global.init_slave);
+
+# enumeration
+SET @@global.slave_exec_mode = 'IDEMPOTENT';
+INSERT INTO tstmt(text) VALUES (@@global.slave_exec_mode);
+SET @@global.slave_exec_mode = 'STRICT';
+INSERT INTO tstmt(text) VALUES (@@global.slave_exec_mode);
+
+
+--echo ---- session variables ----
+
+# boolean
+SET @@sql_big_selects = ON;
+INSERT INTO tstmt(truth) VALUES (@@sql_big_selects);
+SET @@sql_big_selects = OFF;
+INSERT INTO tstmt(truth) VALUES (@@sql_big_selects);
+
+# numeric
+SET @@last_insert_id = 20;
+INSERT INTO tstmt(num) VALUES (@@last_insert_id);
+SET @@last_insert_id = 30;
+INSERT INTO tstmt(num) VALUES (@@last_insert_id);
+
+--echo ---- global and session variables ----
+
+# boolean
+SET @@global.low_priority_updates = ON;
+SET @@local.low_priority_updates = OFF;
+INSERT INTO tstmt(truth) VALUES (@@global.low_priority_updates);
+INSERT INTO tstmt(truth) VALUES (@@local.low_priority_updates);
+SET @@global.low_priority_updates = OFF;
+SET @@local.low_priority_updates = ON;
+INSERT INTO tstmt(truth) VALUES (@@global.low_priority_updates);
+INSERT INTO tstmt(truth) VALUES (@@local.low_priority_updates);
+
+# numeric
+SET @@global.default_week_format = 3;
+SET @@local.default_week_format = 4;
+INSERT INTO tstmt(num) VALUES (@@global.default_week_format);
+INSERT INTO tstmt(num) VALUES (@@local.default_week_format);
+SET @@global.default_week_format = 5;
+SET @@local.default_week_format = 6;
+INSERT INTO tstmt(num) VALUES (@@global.default_week_format);
+INSERT INTO tstmt(num) VALUES (@@local.default_week_format);
+
+# string
+SET @@global.lc_time_names = 'sv_SE';
+SET @@local.lc_time_names = 'sv_FI';
+INSERT INTO tstmt(text) VALUES (@@global.lc_time_names);
+INSERT INTO tstmt(text) VALUES (@@local.lc_time_names);
+SET @@global.lc_time_names = 'ar_TN';
+SET @@local.lc_time_names = 'ar_IQ';
+INSERT INTO tstmt(text) VALUES (@@global.lc_time_names);
+INSERT INTO tstmt(text) VALUES (@@local.lc_time_names);
+
+# enum
+SET @@global.sql_mode = '';
+SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
+INSERT INTO tstmt(text) VALUES (@@global.sql_mode);
+INSERT INTO tstmt(text) VALUES (@@local.sql_mode);
+SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
+SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
+INSERT INTO tstmt(text) VALUES (@@global.sql_mode);
+INSERT INTO tstmt(text) VALUES (@@local.sql_mode);
+
+--echo ---- user variables ----
+
+# numeric
+SET @user_num = 20;
+INSERT INTO tstmt(num) VALUES (@user_num);
+SET @user_num = 30;
+INSERT INTO tstmt(num) VALUES (@user_num);
+
+# string
+SET @user_text = 'Bergsbrunna';
+INSERT INTO tstmt(text) VALUES (@user_text);
+SET @user_text = 'Centrum';
+INSERT INTO tstmt(text) VALUES (@user_text);
+
+
+--echo ==== Insert variables from a stored procedure ====
+
+DELIMITER |;
+CREATE PROCEDURE proc()
+BEGIN
+
+ # GLOBAL
+
+ # boolean
+ SET @@global.relay_log_purge = ON;
+ INSERT INTO tproc(truth) VALUES (@@global.relay_log_purge);
+ SET @@global.relay_log_purge = OFF;
+ INSERT INTO tproc(truth) VALUES (@@global.relay_log_purge);
+
+ # numeric
+ SET @@global.sync_binlog = 2000000;
+ INSERT INTO tproc(num) VALUES (@@global.sync_binlog);
+ SET @@global.sync_binlog = 3000000;
+ INSERT INTO tproc(num) VALUES (@@global.sync_binlog);
+
+ # string
+ SET @@global.init_slave = 'bison';
+ INSERT INTO tproc(text) VALUES (@@global.init_slave);
+ SET @@global.init_slave = 'cat';
+ INSERT INTO tproc(text) VALUES (@@global.init_slave);
+
+ # enumeration
+ SET @@global.slave_exec_mode = 'IDEMPOTENT';
+ INSERT INTO tproc(text) VALUES (@@global.slave_exec_mode);
+ SET @@global.slave_exec_mode = 'STRICT';
+ INSERT INTO tproc(text) VALUES (@@global.slave_exec_mode);
+
+ # SESSION
+
+ # boolean
+ SET @@sql_big_selects = ON;
+ INSERT INTO tproc(truth) VALUES (@@sql_big_selects);
+ SET @@sql_big_selects = OFF;
+ INSERT INTO tproc(truth) VALUES (@@sql_big_selects);
+
+ # numeric
+ SET @@last_insert_id = 20;
+ INSERT INTO tproc(num) VALUES (@@last_insert_id);
+ SET @@last_insert_id = 30;
+ INSERT INTO tproc(num) VALUES (@@last_insert_id);
+
+ # BOTH
+
+ # boolean
+ SET @@global.low_priority_updates = ON;
+ SET @@local.low_priority_updates = OFF;
+ INSERT INTO tproc(truth) VALUES (@@global.low_priority_updates);
+ INSERT INTO tproc(truth) VALUES (@@local.low_priority_updates);
+ SET @@global.low_priority_updates = OFF;
+ SET @@local.low_priority_updates = ON;
+ INSERT INTO tproc(truth) VALUES (@@global.low_priority_updates);
+ INSERT INTO tproc(truth) VALUES (@@local.low_priority_updates);
+
+ # numeric
+ SET @@global.default_week_format = 3;
+ SET @@local.default_week_format = 4;
+ INSERT INTO tproc(num) VALUES (@@global.default_week_format);
+ INSERT INTO tproc(num) VALUES (@@local.default_week_format);
+ SET @@global.default_week_format = 5;
+ SET @@local.default_week_format = 6;
+ INSERT INTO tproc(num) VALUES (@@global.default_week_format);
+ INSERT INTO tproc(num) VALUES (@@local.default_week_format);
+
+ # text
+ SET @@global.lc_time_names = 'sv_SE';
+ SET @@local.lc_time_names = 'sv_FI';
+ INSERT INTO tproc(text) VALUES (@@global.lc_time_names);
+ INSERT INTO tproc(text) VALUES (@@local.lc_time_names);
+ SET @@global.lc_time_names = 'ar_TN';
+ SET @@local.lc_time_names = 'ar_IQ';
+ INSERT INTO tproc(text) VALUES (@@global.lc_time_names);
+ INSERT INTO tproc(text) VALUES (@@local.lc_time_names);
+
+ # enum
+ SET @@global.sql_mode = '';
+ SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
+ INSERT INTO tproc(text) VALUES (@@global.sql_mode);
+ INSERT INTO tproc(text) VALUES (@@local.sql_mode);
+ SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
+ SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
+ INSERT INTO tproc(text) VALUES (@@global.sql_mode);
+ INSERT INTO tproc(text) VALUES (@@local.sql_mode);
+
+ # USER
+
+ # numeric
+ SET @user_num = 20;
+ INSERT INTO tproc(num) VALUES (@user_num);
+ SET @user_num = 30;
+ INSERT INTO tproc(num) VALUES (@user_num);
+
+ # string
+ SET @user_text = 'Bergsbrunna';
+ INSERT INTO tproc(text) VALUES (@user_text);
+ SET @user_text = 'Centrum';
+ INSERT INTO tproc(text) VALUES (@user_text);
+
+END|
+DELIMITER ;|
+
+CALL proc();
+
+
+--echo ==== Insert variables from a stored function ====
+
+DELIMITER |;
+CREATE FUNCTION func()
+RETURNS INT
+BEGIN
+
+ # GLOBAL
+
+ # boolean
+ SET @@global.relay_log_purge = ON;
+ INSERT INTO tfunc(truth) VALUES (@@global.relay_log_purge);
+ SET @@global.relay_log_purge = OFF;
+ INSERT INTO tfunc(truth) VALUES (@@global.relay_log_purge);
+
+ # numeric
+ SET @@global.sync_binlog = 2000000;
+ INSERT INTO tfunc(num) VALUES (@@global.sync_binlog);
+ SET @@global.sync_binlog = 3000000;
+ INSERT INTO tfunc(num) VALUES (@@global.sync_binlog);
+
+ # string
+ SET @@global.init_slave = 'bison';
+ INSERT INTO tfunc(text) VALUES (@@global.init_slave);
+ SET @@global.init_slave = 'cat';
+ INSERT INTO tfunc(text) VALUES (@@global.init_slave);
+
+ # enumeration
+ SET @@global.slave_exec_mode = 'IDEMPOTENT';
+ INSERT INTO tfunc(text) VALUES (@@global.slave_exec_mode);
+ SET @@global.slave_exec_mode = 'STRICT';
+ INSERT INTO tfunc(text) VALUES (@@global.slave_exec_mode);
+
+ # SESSION
+
+ # boolean
+ SET @@sql_big_selects = ON;
+ INSERT INTO tfunc(truth) VALUES (@@sql_big_selects);
+ SET @@sql_big_selects = OFF;
+ INSERT INTO tfunc(truth) VALUES (@@sql_big_selects);
+
+ # numeric
+ SET @@last_insert_id = 20;
+ INSERT INTO tfunc(num) VALUES (@@last_insert_id);
+ SET @@last_insert_id = 30;
+ INSERT INTO tfunc(num) VALUES (@@last_insert_id);
+
+ # BOTH
+
+ # boolean
+ SET @@global.low_priority_updates = ON;
+ SET @@local.low_priority_updates = OFF;
+ INSERT INTO tfunc(truth) VALUES (@@global.low_priority_updates);
+ INSERT INTO tfunc(truth) VALUES (@@local.low_priority_updates);
+ SET @@global.low_priority_updates = OFF;
+ SET @@local.low_priority_updates = ON;
+ INSERT INTO tfunc(truth) VALUES (@@global.low_priority_updates);
+ INSERT INTO tfunc(truth) VALUES (@@local.low_priority_updates);
+
+ # numeric
+ SET @@global.default_week_format = 3;
+ SET @@local.default_week_format = 4;
+ INSERT INTO tfunc(num) VALUES (@@global.default_week_format);
+ INSERT INTO tfunc(num) VALUES (@@local.default_week_format);
+ SET @@global.default_week_format = 5;
+ SET @@local.default_week_format = 6;
+ INSERT INTO tfunc(num) VALUES (@@global.default_week_format);
+ INSERT INTO tfunc(num) VALUES (@@local.default_week_format);
+
+ # text
+ SET @@global.lc_time_names = 'sv_SE';
+ SET @@local.lc_time_names = 'sv_FI';
+ INSERT INTO tfunc(text) VALUES (@@global.lc_time_names);
+ INSERT INTO tfunc(text) VALUES (@@local.lc_time_names);
+ SET @@global.lc_time_names = 'ar_TN';
+ SET @@local.lc_time_names = 'ar_IQ';
+ INSERT INTO tfunc(text) VALUES (@@global.lc_time_names);
+ INSERT INTO tfunc(text) VALUES (@@local.lc_time_names);
+
+ # enum
+ SET @@global.sql_mode = '';
+ SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
+ INSERT INTO tfunc(text) VALUES (@@global.sql_mode);
+ INSERT INTO tfunc(text) VALUES (@@local.sql_mode);
+ SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
+ SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
+ INSERT INTO tfunc(text) VALUES (@@global.sql_mode);
+ INSERT INTO tfunc(text) VALUES (@@local.sql_mode);
+
+ # USER
+
+ # numeric
+ SET @user_num = 20;
+ INSERT INTO tfunc(num) VALUES (@user_num);
+ SET @user_num = 30;
+ INSERT INTO tfunc(num) VALUES (@user_num);
+
+ # string
+ SET @user_text = 'Bergsbrunna';
+ INSERT INTO tfunc(text) VALUES (@user_text);
+ SET @user_text = 'Centrum';
+ INSERT INTO tfunc(text) VALUES (@user_text);
+
+ RETURN 0;
+END|
+DELIMITER ;|
+
+SELECT func();
+
+
+--echo ==== Insert variables from a trigger ====
+
+DELIMITER |;
+CREATE TRIGGER trig
+BEFORE INSERT ON trigger_table
+FOR EACH ROW
+BEGIN
+
+ # GLOBAL
+
+ # boolean
+ SET @@global.relay_log_purge = ON;
+ INSERT INTO ttrig(truth) VALUES (@@global.relay_log_purge);
+ SET @@global.relay_log_purge = OFF;
+ INSERT INTO ttrig(truth) VALUES (@@global.relay_log_purge);
+
+ # numeric
+ SET @@global.sync_binlog = 2000000;
+ INSERT INTO ttrig(num) VALUES (@@global.sync_binlog);
+ SET @@global.sync_binlog = 3000000;
+ INSERT INTO ttrig(num) VALUES (@@global.sync_binlog);
+
+ # string
+ SET @@global.init_slave = 'bison';
+ INSERT INTO ttrig(text) VALUES (@@global.init_slave);
+ SET @@global.init_slave = 'cat';
+ INSERT INTO ttrig(text) VALUES (@@global.init_slave);
+
+ # enumeration
+ SET @@global.slave_exec_mode = 'IDEMPOTENT';
+ INSERT INTO ttrig(text) VALUES (@@global.slave_exec_mode);
+ SET @@global.slave_exec_mode = 'STRICT';
+ INSERT INTO ttrig(text) VALUES (@@global.slave_exec_mode);
+
+ # SESSION
+
+ # boolean
+ SET @@sql_big_selects = ON;
+ INSERT INTO ttrig(truth) VALUES (@@sql_big_selects);
+ SET @@sql_big_selects = OFF;
+ INSERT INTO ttrig(truth) VALUES (@@sql_big_selects);
+
+ # numeric
+ SET @@last_insert_id = 20;
+ INSERT INTO ttrig(num) VALUES (@@last_insert_id);
+ SET @@last_insert_id = 30;
+ INSERT INTO ttrig(num) VALUES (@@last_insert_id);
+
+ # BOTH
+
+ # boolean
+ SET @@global.low_priority_updates = ON;
+ SET @@local.low_priority_updates = OFF;
+ INSERT INTO ttrig(truth) VALUES (@@global.low_priority_updates);
+ INSERT INTO ttrig(truth) VALUES (@@local.low_priority_updates);
+ SET @@global.low_priority_updates = OFF;
+ SET @@local.low_priority_updates = ON;
+ INSERT INTO ttrig(truth) VALUES (@@global.low_priority_updates);
+ INSERT INTO ttrig(truth) VALUES (@@local.low_priority_updates);
+
+ # numeric
+ SET @@global.default_week_format = 3;
+ SET @@local.default_week_format = 4;
+ INSERT INTO ttrig(num) VALUES (@@global.default_week_format);
+ INSERT INTO ttrig(num) VALUES (@@local.default_week_format);
+ SET @@global.default_week_format = 5;
+ SET @@local.default_week_format = 6;
+ INSERT INTO ttrig(num) VALUES (@@global.default_week_format);
+ INSERT INTO ttrig(num) VALUES (@@local.default_week_format);
+
+ # text
+ SET @@global.lc_time_names = 'sv_SE';
+ SET @@local.lc_time_names = 'sv_FI';
+ INSERT INTO ttrig(text) VALUES (@@global.lc_time_names);
+ INSERT INTO ttrig(text) VALUES (@@local.lc_time_names);
+ SET @@global.lc_time_names = 'ar_TN';
+ SET @@local.lc_time_names = 'ar_IQ';
+ INSERT INTO ttrig(text) VALUES (@@global.lc_time_names);
+ INSERT INTO ttrig(text) VALUES (@@local.lc_time_names);
+
+ # enum
+ SET @@global.sql_mode = '';
+ SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
+ INSERT INTO ttrig(text) VALUES (@@global.sql_mode);
+ INSERT INTO ttrig(text) VALUES (@@local.sql_mode);
+ SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
+ SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
+ INSERT INTO ttrig(text) VALUES (@@global.sql_mode);
+ INSERT INTO ttrig(text) VALUES (@@local.sql_mode);
+
+ # USER
+
+ # numeric
+ SET @user_num = 20;
+ INSERT INTO ttrig(num) VALUES (@user_num);
+ SET @user_num = 30;
+ INSERT INTO ttrig(num) VALUES (@user_num);
+
+ # string
+ SET @user_text = 'Bergsbrunna';
+ INSERT INTO ttrig(text) VALUES (@user_text);
+ SET @user_text = 'Centrum';
+ INSERT INTO ttrig(text) VALUES (@user_text);
+END|
+DELIMITER ;|
+
+INSERT INTO trigger_table VALUES ('bye.');
+
+
+--echo ==== Insert variables from a prepared statement ====
+
+# GLOBAL
+
+# boolean
+PREPARE p1 FROM 'SET @@global.relay_log_purge = ON';
+PREPARE p2 FROM 'INSERT INTO tprep(truth) VALUES (@@global.relay_log_purge)';
+PREPARE p3 FROM 'SET @@global.relay_log_purge = OFF';
+PREPARE p4 FROM 'INSERT INTO tprep(truth) VALUES (@@global.relay_log_purge)';
+
+# numeric
+PREPARE p5 FROM 'SET @@global.sync_binlog = 2000000';
+PREPARE p6 FROM 'INSERT INTO tprep(num) VALUES (@@global.sync_binlog)';
+PREPARE p7 FROM 'SET @@global.sync_binlog = 3000000';
+PREPARE p8 FROM 'INSERT INTO tprep(num) VALUES (@@global.sync_binlog)';
+
+# string
+PREPARE p9 FROM 'SET @@global.init_slave = \'bison\'';
+PREPARE p10 FROM 'INSERT INTO tprep(text) VALUES (@@global.init_slave)';
+PREPARE p11 FROM 'SET @@global.init_slave = \'cat\'';
+PREPARE p12 FROM 'INSERT INTO tprep(text) VALUES (@@global.init_slave)';
+
+# enumeration
+PREPARE p13 FROM 'SET @@global.slave_exec_mode = \'IDEMPOTENT\'';
+PREPARE p14 FROM 'INSERT INTO tprep(text) VALUES (@@global.slave_exec_mode)';
+PREPARE p15 FROM 'SET @@global.slave_exec_mode = \'STRICT\'';
+PREPARE p16 FROM 'INSERT INTO tprep(text) VALUES (@@global.slave_exec_mode)';
+
+# SESSION
+
+# boolean
+PREPARE p17 FROM 'SET @@sql_big_selects = ON';
+PREPARE p18 FROM 'INSERT INTO tprep(truth) VALUES (@@sql_big_selects)';
+PREPARE p19 FROM 'SET @@sql_big_selects = OFF';
+PREPARE p20 FROM 'INSERT INTO tprep(truth) VALUES (@@sql_big_selects)';
+
+# numeric
+PREPARE p21 FROM 'SET @@last_insert_id = 20';
+PREPARE p22 FROM 'INSERT INTO tprep(num) VALUES (@@last_insert_id)';
+PREPARE p23 FROM 'SET @@last_insert_id = 30';
+PREPARE p24 FROM 'INSERT INTO tprep(num) VALUES (@@last_insert_id)';
+
+# BOTH
+
+# boolean
+PREPARE p25 FROM 'SET @@global.low_priority_updates = ON';
+PREPARE p26 FROM 'SET @@local.low_priority_updates = OFF';
+PREPARE p27 FROM 'INSERT INTO tprep(truth) VALUES (@@global.low_priority_updates)';
+PREPARE p28 FROM 'INSERT INTO tprep(truth) VALUES (@@local.low_priority_updates)';
+PREPARE p29 FROM 'SET @@global.low_priority_updates = OFF';
+PREPARE p30 FROM 'SET @@local.low_priority_updates = ON';
+PREPARE p31 FROM 'INSERT INTO tprep(truth) VALUES (@@global.low_priority_updates)';
+PREPARE p32 FROM 'INSERT INTO tprep(truth) VALUES (@@local.low_priority_updates)';
+
+# numeric
+PREPARE p33 FROM 'SET @@global.default_week_format = 3';
+PREPARE p34 FROM 'SET @@local.default_week_format = 4';
+PREPARE p35 FROM 'INSERT INTO tprep(num) VALUES (@@global.default_week_format)';
+PREPARE p36 FROM 'INSERT INTO tprep(num) VALUES (@@local.default_week_format)';
+PREPARE p37 FROM 'SET @@global.default_week_format = 5';
+PREPARE p38 FROM 'SET @@local.default_week_format = 6';
+PREPARE p39 FROM 'INSERT INTO tprep(num) VALUES (@@global.default_week_format)';
+PREPARE p40 FROM 'INSERT INTO tprep(num) VALUES (@@local.default_week_format)';
+
+# text
+PREPARE p41 FROM 'SET @@global.lc_time_names = \'sv_SE\'';
+PREPARE p42 FROM 'SET @@local.lc_time_names = \'sv_FI\'';
+PREPARE p43 FROM 'INSERT INTO tprep(text) VALUES (@@global.lc_time_names)';
+PREPARE p44 FROM 'INSERT INTO tprep(text) VALUES (@@local.lc_time_names)';
+PREPARE p45 FROM 'SET @@global.lc_time_names = \'ar_TN\'';
+PREPARE p46 FROM 'SET @@local.lc_time_names = \'ar_IQ\'';
+PREPARE p47 FROM 'INSERT INTO tprep(text) VALUES (@@global.lc_time_names)';
+PREPARE p48 FROM 'INSERT INTO tprep(text) VALUES (@@local.lc_time_names)';
+
+# enum
+PREPARE p49 FROM 'SET @@global.sql_mode = \'\'';
+PREPARE p50 FROM 'SET @@local.sql_mode = \'IGNORE_SPACE,NO_AUTO_CREATE_USER\'';
+PREPARE p51 FROM 'INSERT INTO tprep(text) VALUES (@@global.sql_mode)';
+PREPARE p52 FROM 'INSERT INTO tprep(text) VALUES (@@local.sql_mode)';
+PREPARE p53 FROM 'SET @@global.sql_mode = \'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION\'';
+PREPARE p54 FROM 'SET @@local.sql_mode = \'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS\'';
+PREPARE p55 FROM 'INSERT INTO tprep(text) VALUES (@@global.sql_mode)';
+PREPARE p56 FROM 'INSERT INTO tprep(text) VALUES (@@local.sql_mode)';
+
+# USER
+
+# numeric
+PREPARE p57 FROM 'SET @user_num = 20';
+PREPARE p58 FROM 'INSERT INTO tprep(num) VALUES (@user_num)';
+PREPARE p59 FROM 'SET @user_num = 30';
+PREPARE p60 FROM 'INSERT INTO tprep(num) VALUES (@user_num)';
+
+# string
+PREPARE p61 FROM 'SET @user_text = \'Bergsbrunna\'';
+PREPARE p62 FROM 'INSERT INTO tprep(text) VALUES (@user_text)';
+PREPARE p63 FROM 'SET @user_text = \'Centrum\'';
+PREPARE p64 FROM 'INSERT INTO tprep(text) VALUES (@user_text)';
+
+EXECUTE p1; EXECUTE p2; EXECUTE p3; EXECUTE p4; EXECUTE p5; EXECUTE p6;
+EXECUTE p7; EXECUTE p8; EXECUTE p9; EXECUTE p10; EXECUTE p11; EXECUTE p12;
+EXECUTE p13; EXECUTE p14; EXECUTE p15; EXECUTE p16; EXECUTE p17; EXECUTE p18;
+EXECUTE p19; EXECUTE p20; EXECUTE p21; EXECUTE p22; EXECUTE p23; EXECUTE p24;
+EXECUTE p25; EXECUTE p26; EXECUTE p27; EXECUTE p28; EXECUTE p29; EXECUTE p30;
+EXECUTE p31; EXECUTE p32; EXECUTE p33; EXECUTE p34; EXECUTE p35; EXECUTE p36;
+EXECUTE p37; EXECUTE p38; EXECUTE p39; EXECUTE p40; EXECUTE p41; EXECUTE p42;
+EXECUTE p43; EXECUTE p44; EXECUTE p45; EXECUTE p46; EXECUTE p47; EXECUTE p48;
+EXECUTE p49; EXECUTE p50; EXECUTE p51; EXECUTE p52; EXECUTE p53; EXECUTE p54;
+EXECUTE p55; EXECUTE p56; EXECUTE p57; EXECUTE p58; EXECUTE p59; EXECUTE p60;
+EXECUTE p61; EXECUTE p62; EXECUTE p63; EXECUTE p64;
+
+
+--echo ==== Results ====
+
+# Show the result in table test.tstmt on master...
+SELECT * FROM tstmt ORDER BY id;
+let $diff_table_1=master:test.tstmt;
+
+# ... then compare test.tstmt on master to the other tables on master...
+let $diff_table_2=master:test.tproc;
+source include/diff_tables.inc;
+let $diff_table_2=master:test.tfunc;
+source include/diff_tables.inc;
+let $diff_table_2=master:test.ttrig;
+source include/diff_tables.inc;
+let $diff_table_2=master:test.tprep;
+source include/diff_tables.inc;
+
+# ... and to all tables on slave.
+connection master;
+sync_slave_with_master;
+let $diff_table_2=slave:test.tstmt;
+source include/diff_tables.inc;
+let $diff_table_2=slave:test.tproc;
+source include/diff_tables.inc;
+let $diff_table_2=slave:test.tfunc;
+source include/diff_tables.inc;
+let $diff_table_2=slave:test.ttrig;
+source include/diff_tables.inc;
+let $diff_table_2=slave:test.tprep;
+source include/diff_tables.inc;
+
-# Init for rstore of variable values
-set @my_slave_net_timeout =@@global.slave_net_timeout;
+--echo ==== Clean up ====
-set global slave_net_timeout=100;
-set global sql_slave_skip_counter=100;
+--echo [on master]
+connection master;
+DROP PROCEDURE proc;
+DROP FUNCTION func;
+DROP TRIGGER trig;
+DROP TABLE tstmt, tproc, tfunc, ttrig, tprep, trigger_table;
-# End of 4.1 tests
+SET @@global.default_week_format= @m_default_week_format;
+SET @@global.init_slave= @m_init_slave;
+SET @@global.lc_time_names= @m_lc_time_names;
+SET @@global.low_priority_updates= @m_low_priority_updates;
+SET @@global.relay_log_purge= @m_relay_log_purge;
+SET @@global.slave_exec_mode= @m_slave_exec_mode;
+SET @@global.sql_mode= @m_sql_mode;
+SET @@global.sync_binlog= @m_sync_binlog;
-# BUG #7800: Add various-slave related variables to SHOW VARIABLES
-show variables like 'slave_compressed_protocol';
---replace_column 2 SLAVE_LOAD_TMPDIR
-show variables like 'slave_load_tmpdir';
-# We just set some arbitrary values in variables-master.opt so we can test
-# that a list of values works correctly
-show variables like 'slave_skip_errors';
+--echo [on slave]
+connection slave;
+SET @@global.default_week_format= @s_default_week_format;
+SET @@global.init_slave= @s_init_slave;
+SET @@global.lc_time_names= @s_lc_time_names;
+SET @@global.low_priority_updates= @s_low_priority_updates;
+SET @@global.relay_log_purge= @s_relay_log_purge;
+SET @@global.slave_exec_mode= @s_slave_exec_mode;
+SET @@global.sql_mode= @s_sql_mode;
+SET @@global.sync_binlog= @s_sync_binlog;
-# Cleanup
-set global slave_net_timeout=default;
+connection master;
+sync_slave_with_master;
diff --git a/mysql-test/suite/rpl/t/rpl_variables_stm.test b/mysql-test/suite/rpl/t/rpl_variables_stm.test
new file mode 100644
index 00000000000..85152ae878a
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_variables_stm.test
@@ -0,0 +1,636 @@
+# ==== Purpose ====
+#
+# In general, queries referencing @@system_variables are not
+# considered safe to write to the binlog in statement-based logging
+# mode. However, a few special cases are supported.
+#
+# This test verifies that queries referencing these specially
+# supported variables are replicated correctly in statement mode.
+#
+#
+# ==== Method ====
+#
+# The test simply does a lot of "INSERT INTO t1 VALUES (@@variable)"
+# and checks the result on the slave.
+#
+# Statements referencing a variable only replicate correctly in mixed
+# and row mode: in row mode, the values inserted are replicated. In
+# mixed mode, statements referencing a variable are marked as unsafe,
+# meaning they will be replicated by row. In statement mode, the
+# slave's value will be used and replication will break. (Except in a
+# small number of special cases: random seeds, insert_id, and
+# auto_increment are replicated).
+#
+# We test all replicated variables, from each of the following
+# contexts:
+# - directly
+# - from a stored procedure
+# - from a stored function
+# - from a trigger
+# - from a prepared statement
+#
+# For all variables where it is possible, we set the variable to one
+# value on slave, and insert it on the master with two distinct
+# values.
+#
+# The same insertions are made in four different tables using direct
+# insert, stored procedure, stored function, or trigger. Then all
+# eight resulting tables on master and slave are compared.
+#
+#
+# ==== Related bugs ====
+#
+# BUG#31168: @@hostname does not replicate
+#
+#
+# ==== Related test cases ====
+#
+# binlog.binlog_unsafe tests that a warning is issued if system
+# variables are replicated in statement mode.
+#
+# rpl.rpl_variables verifies that variables which cannot be replicated
+# safely in statement mode are replicated correctly in mixed or row
+# mode.
+
+source include/master-slave.inc;
+source include/have_binlog_format_mixed_or_statement.inc;
+
+
+--echo ==== Initialization ====
+
+# Backup the values of global variables so that they can be restored
+# later.
+
+--echo [on master]
+connection master;
+SET @m_pseudo_thread_id= @@global.pseudo_thread_id;
+SET @m_auto_increment_increment= @@global.auto_increment_increment;
+SET @m_auto_increment_offset= @@global.auto_increment_offset;
+SET @m_character_set_client= @@global.character_set_client;
+SET @m_collation_connection= @@global.collation_connection;
+SET @m_collation_server= @@global.collation_server;
+SET @m_time_zone= @@global.time_zone;
+SET @m_lc_time_names= @@global.lc_time_names;
+SET @m_collation_database= @@global.collation_database;
+
+--echo [on slave]
+connection slave;
+SET @s_pseudo_thread_id= @@global.pseudo_thread_id;
+SET @s_auto_increment_increment= @@global.auto_increment_increment;
+SET @s_auto_increment_offset= @@global.auto_increment_offset;
+SET @s_character_set_client= @@global.character_set_client;
+SET @s_collation_connection= @@global.collation_connection;
+SET @s_collation_server= @@global.collation_server;
+SET @s_time_zone= @@global.time_zone;
+SET @s_lc_time_names= @@global.lc_time_names;
+SET @s_collation_database= @@global.collation_database;
+
+SET @@global.pseudo_thread_id= 4711;
+SET @@global.auto_increment_increment=19;
+SET @@global.auto_increment_offset=4;
+SET @@global.character_set_client='latin2';
+SET @@global.collation_connection='latin2_bin';
+SET @@global.collation_server='geostd8_general_ci';
+SET @@global.time_zone='Japan';
+SET @@global.lc_time_names='sv_SE';
+SET @@global.collation_database='geostd8_bin';
+
+--echo [on master]
+connection master;
+
+# Tables where everything happens.
+CREATE TABLE tstmt (id INT AUTO_INCREMENT PRIMARY KEY,
+ num INT,
+ text VARCHAR(100));
+CREATE TABLE tproc LIKE tstmt;
+CREATE TABLE tfunc LIKE tstmt;
+CREATE TABLE ttrig LIKE tstmt;
+CREATE TABLE tprep LIKE tstmt;
+
+# Table on which we put a trigger.
+CREATE TABLE trigger_table (text CHAR(4));
+
+
+--echo ==== Insert variables directly ====
+
+SET @@pseudo_thread_id= 4712;
+INSERT INTO tstmt(num) VALUES (@@session.pseudo_thread_id);
+SET @@pseudo_thread_id= 4713;
+INSERT INTO tstmt(num) VALUES (@@session.pseudo_thread_id);
+
+SET @@foreign_key_checks= 0;
+INSERT INTO tstmt(num) VALUES (@@session.foreign_key_checks);
+SET @@foreign_key_checks= 1;
+INSERT INTO tstmt(num) VALUES (@@session.foreign_key_checks);
+
+SET @@sql_auto_is_null= 0;
+INSERT INTO tstmt(num) VALUES (@@session.sql_auto_is_null);
+SET @@sql_auto_is_null= 1;
+INSERT INTO tstmt(num) VALUES (@@session.sql_auto_is_null);
+
+SET @@unique_checks= 0;
+INSERT INTO tstmt(num) VALUES (@@session.unique_checks);
+SET @@unique_checks= 1;
+INSERT INTO tstmt(num) VALUES (@@session.unique_checks);
+
+SET @@auto_increment_increment= 11;
+INSERT INTO tstmt(num) VALUES (@@session.auto_increment_increment);
+SET @@auto_increment_increment= 19;
+INSERT INTO tstmt(num) VALUES (@@session.auto_increment_increment);
+
+SET @@auto_increment_offset= 13;
+INSERT INTO tstmt(num) VALUES (@@session.auto_increment_offset);
+SET @@auto_increment_offset= 17;
+INSERT INTO tstmt(num) VALUES (@@session.auto_increment_offset);
+
+# reset these as they affect the index column
+SET @@auto_increment_increment= 1;
+SET @@auto_increment_offset= 1;
+
+SET @@character_set_client= 'cp1257';
+INSERT INTO tstmt(text) VALUES (@@session.character_set_client);
+SET @@character_set_client= 'cp1256';
+INSERT INTO tstmt(text) VALUES (@@session.character_set_client);
+
+SET @@collation_connection= 'cp1251_ukrainian_ci';
+INSERT INTO tstmt(text) VALUES (@@session.collation_connection);
+INSERT INTO tstmt(text) VALUES (@@session.character_set_connection);
+SET @@collation_connection= 'cp1251_bulgarian_ci';
+INSERT INTO tstmt(text) VALUES (@@session.collation_connection);
+INSERT INTO tstmt(text) VALUES (@@session.character_set_connection);
+
+SET @@collation_server= 'latin7_bin';
+INSERT INTO tstmt(text) VALUES (@@session.collation_server);
+INSERT INTO tstmt(text) VALUES (@@session.character_set_server);
+SET @@collation_server= 'latin7_general_cs';
+INSERT INTO tstmt(text) VALUES (@@session.collation_server);
+INSERT INTO tstmt(text) VALUES (@@session.character_set_server);
+
+SET @@time_zone= 'Europe/Moscow';
+INSERT INTO tstmt(text) VALUES (@@session.time_zone);
+SET @@time_zone= 'Universal';
+INSERT INTO tstmt(text) VALUES (@@session.time_zone);
+
+SET @@lc_time_names= 'sv_FI';
+INSERT INTO tstmt(text) VALUES (@@session.lc_time_names);
+SET @@lc_time_names= 'no_NO';
+INSERT INTO tstmt(text) VALUES (@@session.lc_time_names);
+
+SET @@collation_database= 'latin7_general_ci';
+INSERT INTO tstmt(text) VALUES (@@session.collation_database);
+INSERT INTO tstmt(text) VALUES (@@session.character_set_database);
+SET @@collation_database= 'latin7_estonian_cs';
+INSERT INTO tstmt(text) VALUES (@@session.collation_database);
+INSERT INTO tstmt(text) VALUES (@@session.character_set_database);
+
+SET @@timestamp= 47114711;
+INSERT INTO tstmt(text) VALUES (@@session.timestamp);
+SET @@timestamp= 47124712;
+INSERT INTO tstmt(text) VALUES (@@session.timestamp);
+
+SET @@last_insert_id= 1616;
+INSERT INTO tstmt(text) VALUES (@@session.last_insert_id);
+SET @@last_insert_id= 1717;
+INSERT INTO tstmt(text) VALUES (@@session.last_insert_id);
+
+
+--echo ==== Insert variables from a stored procedure ====
+
+DELIMITER |;
+CREATE PROCEDURE proc()
+BEGIN
+
+ SET @@pseudo_thread_id= 4712;
+ INSERT INTO tproc(num) VALUES (@@session.pseudo_thread_id);
+ SET @@pseudo_thread_id= 4713;
+ INSERT INTO tproc(num) VALUES (@@session.pseudo_thread_id);
+
+ SET @@foreign_key_checks= 0;
+ INSERT INTO tproc(num) VALUES (@@session.foreign_key_checks);
+ SET @@foreign_key_checks= 1;
+ INSERT INTO tproc(num) VALUES (@@session.foreign_key_checks);
+
+ SET @@sql_auto_is_null= 0;
+ INSERT INTO tproc(num) VALUES (@@session.sql_auto_is_null);
+ SET @@sql_auto_is_null= 1;
+ INSERT INTO tproc(num) VALUES (@@session.sql_auto_is_null);
+
+ SET @@unique_checks= 0;
+ INSERT INTO tproc(num) VALUES (@@session.unique_checks);
+ SET @@unique_checks= 1;
+ INSERT INTO tproc(num) VALUES (@@session.unique_checks);
+
+ SET @@auto_increment_increment= 11;
+ INSERT INTO tproc(num) VALUES (@@session.auto_increment_increment);
+ SET @@auto_increment_increment= 19;
+ INSERT INTO tproc(num) VALUES (@@session.auto_increment_increment);
+
+ SET @@auto_increment_offset= 13;
+ INSERT INTO tproc(num) VALUES (@@session.auto_increment_offset);
+ SET @@auto_increment_offset= 17;
+ INSERT INTO tproc(num) VALUES (@@session.auto_increment_offset);
+
+ # reset these as they affect the index column
+ SET @@auto_increment_increment= 1;
+ SET @@auto_increment_offset= 1;
+
+ SET @@character_set_client= 'cp1257';
+ INSERT INTO tproc(text) VALUES (@@session.character_set_client);
+ SET @@character_set_client= 'cp1256';
+ INSERT INTO tproc(text) VALUES (@@session.character_set_client);
+
+ SET @@collation_connection= 'cp1251_ukrainian_ci';
+ INSERT INTO tproc(text) VALUES (@@session.collation_connection);
+ INSERT INTO tproc(text) VALUES (@@session.character_set_connection);
+ SET @@collation_connection= 'cp1251_bulgarian_ci';
+ INSERT INTO tproc(text) VALUES (@@session.collation_connection);
+ INSERT INTO tproc(text) VALUES (@@session.character_set_connection);
+
+ SET @@collation_server= 'latin7_bin';
+ INSERT INTO tproc(text) VALUES (@@session.collation_server);
+ INSERT INTO tproc(text) VALUES (@@session.character_set_server);
+ SET @@collation_server= 'latin7_general_cs';
+ INSERT INTO tproc(text) VALUES (@@session.collation_server);
+ INSERT INTO tproc(text) VALUES (@@session.character_set_server);
+
+ SET @@time_zone= 'Europe/Moscow';
+ INSERT INTO tproc(text) VALUES (@@session.time_zone);
+ SET @@time_zone= 'Universal';
+ INSERT INTO tproc(text) VALUES (@@session.time_zone);
+
+ SET @@lc_time_names= 'sv_FI';
+ INSERT INTO tproc(text) VALUES (@@session.lc_time_names);
+ SET @@lc_time_names= 'no_NO';
+ INSERT INTO tproc(text) VALUES (@@session.lc_time_names);
+
+ SET @@collation_database= 'latin7_general_ci';
+ INSERT INTO tproc(text) VALUES (@@session.collation_database);
+ INSERT INTO tproc(text) VALUES (@@session.character_set_database);
+ SET @@collation_database= 'latin7_estonian_cs';
+ INSERT INTO tproc(text) VALUES (@@session.collation_database);
+ INSERT INTO tproc(text) VALUES (@@session.character_set_database);
+
+ SET @@timestamp= 47114711;
+ INSERT INTO tproc(text) VALUES (@@session.timestamp);
+ SET @@timestamp= 47124712;
+ INSERT INTO tproc(text) VALUES (@@session.timestamp);
+
+ SET @@last_insert_id= 1616;
+ INSERT INTO tproc(text) VALUES (@@session.last_insert_id);
+ SET @@last_insert_id= 1717;
+ INSERT INTO tproc(text) VALUES (@@session.last_insert_id);
+
+END|
+DELIMITER ;|
+
+CALL proc();
+
+
+--echo ==== Insert variables from a stored function ====
+
+DELIMITER |;
+CREATE FUNCTION func()
+RETURNS INT
+BEGIN
+
+ SET @@pseudo_thread_id= 4712;
+ INSERT INTO tfunc(num) VALUES (@@session.pseudo_thread_id);
+ SET @@pseudo_thread_id= 4713;
+ INSERT INTO tfunc(num) VALUES (@@session.pseudo_thread_id);
+
+ SET @@foreign_key_checks= 0;
+ INSERT INTO tfunc(num) VALUES (@@session.foreign_key_checks);
+ SET @@foreign_key_checks= 1;
+ INSERT INTO tfunc(num) VALUES (@@session.foreign_key_checks);
+
+ SET @@sql_auto_is_null= 0;
+ INSERT INTO tfunc(num) VALUES (@@session.sql_auto_is_null);
+ SET @@sql_auto_is_null= 1;
+ INSERT INTO tfunc(num) VALUES (@@session.sql_auto_is_null);
+
+ SET @@unique_checks= 0;
+ INSERT INTO tfunc(num) VALUES (@@session.unique_checks);
+ SET @@unique_checks= 1;
+ INSERT INTO tfunc(num) VALUES (@@session.unique_checks);
+
+ SET @@auto_increment_increment= 11;
+ INSERT INTO tfunc(num) VALUES (@@session.auto_increment_increment);
+ SET @@auto_increment_increment= 19;
+ INSERT INTO tfunc(num) VALUES (@@session.auto_increment_increment);
+
+ SET @@auto_increment_offset= 13;
+ INSERT INTO tfunc(num) VALUES (@@session.auto_increment_offset);
+ SET @@auto_increment_offset= 17;
+ INSERT INTO tfunc(num) VALUES (@@session.auto_increment_offset);
+
+ # reset these as they affect the index column
+ SET @@auto_increment_increment= 1;
+ SET @@auto_increment_offset= 1;
+
+ SET @@character_set_client= 'cp1257';
+ INSERT INTO tfunc(text) VALUES (@@session.character_set_client);
+ SET @@character_set_client= 'cp1256';
+ INSERT INTO tfunc(text) VALUES (@@session.character_set_client);
+
+ SET @@collation_connection= 'cp1251_ukrainian_ci';
+ INSERT INTO tfunc(text) VALUES (@@session.collation_connection);
+ INSERT INTO tfunc(text) VALUES (@@session.character_set_connection);
+ SET @@collation_connection= 'cp1251_bulgarian_ci';
+ INSERT INTO tfunc(text) VALUES (@@session.collation_connection);
+ INSERT INTO tfunc(text) VALUES (@@session.character_set_connection);
+
+ SET @@collation_server= 'latin7_bin';
+ INSERT INTO tfunc(text) VALUES (@@session.collation_server);
+ INSERT INTO tfunc(text) VALUES (@@session.character_set_server);
+ SET @@collation_server= 'latin7_general_cs';
+ INSERT INTO tfunc(text) VALUES (@@session.collation_server);
+ INSERT INTO tfunc(text) VALUES (@@session.character_set_server);
+
+ SET @@time_zone= 'Europe/Moscow';
+ INSERT INTO tfunc(text) VALUES (@@session.time_zone);
+ SET @@time_zone= 'Universal';
+ INSERT INTO tfunc(text) VALUES (@@session.time_zone);
+
+ SET @@lc_time_names= 'sv_FI';
+ INSERT INTO tfunc(text) VALUES (@@session.lc_time_names);
+ SET @@lc_time_names= 'no_NO';
+ INSERT INTO tfunc(text) VALUES (@@session.lc_time_names);
+
+ SET @@collation_database= 'latin7_general_ci';
+ INSERT INTO tfunc(text) VALUES (@@session.collation_database);
+ INSERT INTO tfunc(text) VALUES (@@session.character_set_database);
+ SET @@collation_database= 'latin7_estonian_cs';
+ INSERT INTO tfunc(text) VALUES (@@session.collation_database);
+ INSERT INTO tfunc(text) VALUES (@@session.character_set_database);
+
+ SET @@timestamp= 47114711;
+ INSERT INTO tfunc(text) VALUES (@@session.timestamp);
+ SET @@timestamp= 47124712;
+ INSERT INTO tfunc(text) VALUES (@@session.timestamp);
+
+ SET @@last_insert_id= 1616;
+ INSERT INTO tfunc(text) VALUES (@@session.last_insert_id);
+ SET @@last_insert_id= 1717;
+ INSERT INTO tfunc(text) VALUES (@@session.last_insert_id);
+
+ RETURN 0;
+END|
+DELIMITER ;|
+
+SELECT func();
+
+
+--echo ==== Insert variables from a trigger ====
+
+DELIMITER |;
+CREATE TRIGGER trig
+BEFORE INSERT ON trigger_table
+FOR EACH ROW
+BEGIN
+
+ SET @@pseudo_thread_id= 4712;
+ INSERT INTO ttrig(num) VALUES (@@session.pseudo_thread_id);
+ SET @@pseudo_thread_id= 4713;
+ INSERT INTO ttrig(num) VALUES (@@session.pseudo_thread_id);
+
+ SET @@foreign_key_checks= 0;
+ INSERT INTO ttrig(num) VALUES (@@session.foreign_key_checks);
+ SET @@foreign_key_checks= 1;
+ INSERT INTO ttrig(num) VALUES (@@session.foreign_key_checks);
+
+ SET @@sql_auto_is_null= 0;
+ INSERT INTO ttrig(num) VALUES (@@session.sql_auto_is_null);
+ SET @@sql_auto_is_null= 1;
+ INSERT INTO ttrig(num) VALUES (@@session.sql_auto_is_null);
+
+ SET @@unique_checks= 0;
+ INSERT INTO ttrig(num) VALUES (@@session.unique_checks);
+ SET @@unique_checks= 1;
+ INSERT INTO ttrig(num) VALUES (@@session.unique_checks);
+
+ SET @@auto_increment_increment= 11;
+ INSERT INTO ttrig(num) VALUES (@@session.auto_increment_increment);
+ SET @@auto_increment_increment= 19;
+ INSERT INTO ttrig(num) VALUES (@@session.auto_increment_increment);
+
+ SET @@auto_increment_offset= 13;
+ INSERT INTO ttrig(num) VALUES (@@session.auto_increment_offset);
+ SET @@auto_increment_offset= 17;
+ INSERT INTO ttrig(num) VALUES (@@session.auto_increment_offset);
+
+ # reset these as they affect the index column
+ SET @@auto_increment_increment= 1;
+ SET @@auto_increment_offset= 1;
+
+ SET @@character_set_client= 'cp1257';
+ INSERT INTO ttrig(text) VALUES (@@session.character_set_client);
+ SET @@character_set_client= 'cp1256';
+ INSERT INTO ttrig(text) VALUES (@@session.character_set_client);
+
+ SET @@collation_connection= 'cp1251_ukrainian_ci';
+ INSERT INTO ttrig(text) VALUES (@@session.collation_connection);
+ INSERT INTO ttrig(text) VALUES (@@session.character_set_connection);
+ SET @@collation_connection= 'cp1251_bulgarian_ci';
+ INSERT INTO ttrig(text) VALUES (@@session.collation_connection);
+ INSERT INTO ttrig(text) VALUES (@@session.character_set_connection);
+
+ SET @@collation_server= 'latin7_bin';
+ INSERT INTO ttrig(text) VALUES (@@session.collation_server);
+ INSERT INTO ttrig(text) VALUES (@@session.character_set_server);
+ SET @@collation_server= 'latin7_general_cs';
+ INSERT INTO ttrig(text) VALUES (@@session.collation_server);
+ INSERT INTO ttrig(text) VALUES (@@session.character_set_server);
+
+ SET @@time_zone= 'Europe/Moscow';
+ INSERT INTO ttrig(text) VALUES (@@session.time_zone);
+ SET @@time_zone= 'Universal';
+ INSERT INTO ttrig(text) VALUES (@@session.time_zone);
+
+ SET @@lc_time_names= 'sv_FI';
+ INSERT INTO ttrig(text) VALUES (@@session.lc_time_names);
+ SET @@lc_time_names= 'no_NO';
+ INSERT INTO ttrig(text) VALUES (@@session.lc_time_names);
+
+ SET @@collation_database= 'latin7_general_ci';
+ INSERT INTO ttrig(text) VALUES (@@session.collation_database);
+ INSERT INTO ttrig(text) VALUES (@@session.character_set_database);
+ SET @@collation_database= 'latin7_estonian_cs';
+ INSERT INTO ttrig(text) VALUES (@@session.collation_database);
+ INSERT INTO ttrig(text) VALUES (@@session.character_set_database);
+
+ SET @@timestamp= 47114711;
+ INSERT INTO ttrig(text) VALUES (@@session.timestamp);
+ SET @@timestamp= 47124712;
+ INSERT INTO ttrig(text) VALUES (@@session.timestamp);
+
+ SET @@last_insert_id= 1616;
+ INSERT INTO ttrig(text) VALUES (@@session.last_insert_id);
+ SET @@last_insert_id= 1717;
+ INSERT INTO ttrig(text) VALUES (@@session.last_insert_id);
+
+END|
+DELIMITER ;|
+
+INSERT INTO trigger_table VALUES ('bye.');
+
+
+--echo ==== Insert variables from a prepared statement ====
+
+# GLOBAL
+
+PREPARE p1 FROM 'SET @@pseudo_thread_id= 4712';
+PREPARE p2 FROM 'INSERT INTO tprep(num) VALUES (@@session.pseudo_thread_id)';
+PREPARE p3 FROM 'SET @@pseudo_thread_id= 4713';
+PREPARE p4 FROM 'INSERT INTO tprep(num) VALUES (@@session.pseudo_thread_id)';
+
+PREPARE p5 FROM 'SET @@foreign_key_checks= 0';
+PREPARE p6 FROM 'INSERT INTO tprep(num) VALUES (@@session.foreign_key_checks)';
+PREPARE p7 FROM 'SET @@foreign_key_checks= 1';
+PREPARE p8 FROM 'INSERT INTO tprep(num) VALUES (@@session.foreign_key_checks)';
+
+PREPARE p9 FROM 'SET @@sql_auto_is_null= 0';
+PREPARE p10 FROM 'INSERT INTO tprep(num) VALUES (@@session.sql_auto_is_null)';
+PREPARE p11 FROM 'SET @@sql_auto_is_null= 1';
+PREPARE p12 FROM 'INSERT INTO tprep(num) VALUES (@@session.sql_auto_is_null)';
+
+PREPARE p13 FROM 'SET @@unique_checks= 0';
+PREPARE p14 FROM 'INSERT INTO tprep(num) VALUES (@@session.unique_checks)';
+PREPARE p15 FROM 'SET @@unique_checks= 1';
+PREPARE p16 FROM 'INSERT INTO tprep(num) VALUES (@@session.unique_checks)';
+
+PREPARE p17 FROM 'SET @@auto_increment_increment= 11';
+PREPARE p18 FROM 'INSERT INTO tprep(num) VALUES (@@session.auto_increment_increment)';
+PREPARE p19 FROM 'SET @@auto_increment_increment= 19';
+PREPARE p20 FROM 'INSERT INTO tprep(num) VALUES (@@session.auto_increment_increment)';
+
+PREPARE p21 FROM 'SET @@auto_increment_offset= 13';
+PREPARE p22 FROM 'INSERT INTO tprep(num) VALUES (@@session.auto_increment_offset)';
+PREPARE p23 FROM 'SET @@auto_increment_offset= 17';
+PREPARE p24 FROM 'INSERT INTO tprep(num) VALUES (@@session.auto_increment_offset)';
+
+# reset these as they affect the index column
+PREPARE p25 FROM 'SET @@auto_increment_increment= 1';
+PREPARE p26 FROM 'SET @@auto_increment_offset= 1';
+
+PREPARE p27 FROM 'SET @@character_set_client= \'cp1257\'';
+PREPARE p28 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_client)';
+PREPARE p29 FROM 'SET @@character_set_client= \'cp1256\'';
+PREPARE p30 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_client)';
+
+PREPARE p31 FROM 'SET @@collation_connection= \'cp1251_ukrainian_ci\'';
+PREPARE p32 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_connection)';
+PREPARE p33 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_connection)';
+PREPARE p34 FROM 'SET @@collation_connection= \'cp1251_bulgarian_ci\'';
+PREPARE p35 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_connection)';
+PREPARE p36 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_connection)';
+
+PREPARE p37 FROM 'SET @@collation_server= \'latin7_bin\'';
+PREPARE p38 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_server)';
+PREPARE p39 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_server)';
+PREPARE p40 FROM 'SET @@collation_server= \'latin7_general_cs\'';
+PREPARE p41 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_server)';
+PREPARE p42 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_server)';
+
+PREPARE p43 FROM 'SET @@time_zone= \'Europe/Moscow\'';
+PREPARE p44 FROM 'INSERT INTO tprep(text) VALUES (@@session.time_zone)';
+PREPARE p45 FROM 'SET @@time_zone= \'Universal\'';
+PREPARE p46 FROM 'INSERT INTO tprep(text) VALUES (@@session.time_zone)';
+
+PREPARE p47 FROM 'SET @@lc_time_names= \'sv_FI\'';
+PREPARE p48 FROM 'INSERT INTO tprep(text) VALUES (@@session.lc_time_names)';
+PREPARE p49 FROM 'SET @@lc_time_names= \'no_NO\'';
+PREPARE p50 FROM 'INSERT INTO tprep(text) VALUES (@@session.lc_time_names)';
+
+PREPARE p51 FROM 'SET @@collation_database= \'latin7_general_ci\'';
+PREPARE p52 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_database)';
+PREPARE p53 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_database)';
+PREPARE p54 FROM 'SET @@collation_database= \'latin7_estonian_cs\'';
+PREPARE p55 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_database)';
+PREPARE p56 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_database)';
+
+PREPARE p57 FROM 'SET @@timestamp= 47114711';
+PREPARE p58 FROM 'INSERT INTO tprep(text) VALUES (@@session.timestamp)';
+PREPARE p59 FROM 'SET @@timestamp= 47124712';
+PREPARE p60 FROM 'INSERT INTO tprep(text) VALUES (@@session.timestamp)';
+
+PREPARE p61 FROM 'SET @@last_insert_id= 1616';
+PREPARE p62 FROM 'INSERT INTO tprep(text) VALUES (@@session.last_insert_id)';
+PREPARE p63 FROM 'SET @@last_insert_id= 1717';
+PREPARE p64 FROM 'INSERT INTO tprep(text) VALUES (@@session.last_insert_id)';
+
+EXECUTE p1; EXECUTE p2; EXECUTE p3; EXECUTE p4; EXECUTE p5; EXECUTE p6;
+EXECUTE p7; EXECUTE p8; EXECUTE p9; EXECUTE p10; EXECUTE p11; EXECUTE p12;
+EXECUTE p13; EXECUTE p14; EXECUTE p15; EXECUTE p16; EXECUTE p17; EXECUTE p18;
+EXECUTE p19; EXECUTE p20; EXECUTE p21; EXECUTE p22; EXECUTE p23; EXECUTE p24;
+EXECUTE p25; EXECUTE p26; EXECUTE p27; EXECUTE p28; EXECUTE p29; EXECUTE p30;
+EXECUTE p31; EXECUTE p32; EXECUTE p33; EXECUTE p34; EXECUTE p35; EXECUTE p36;
+EXECUTE p37; EXECUTE p38; EXECUTE p39; EXECUTE p40; EXECUTE p41; EXECUTE p42;
+EXECUTE p43; EXECUTE p44; EXECUTE p45; EXECUTE p46; EXECUTE p47; EXECUTE p48;
+EXECUTE p49; EXECUTE p50; EXECUTE p51; EXECUTE p52; EXECUTE p53; EXECUTE p54;
+EXECUTE p55; EXECUTE p56; EXECUTE p57; EXECUTE p58; EXECUTE p59; EXECUTE p60;
+EXECUTE p61; EXECUTE p62; EXECUTE p63; EXECUTE p64;
+
+
+--echo ==== Results ====
+
+# Show the result in table test.tstmt on master...
+SELECT * FROM tstmt ORDER BY id;
+let $diff_table_1=master:test.tstmt;
+
+# ... then compare test.tstmt on master to the other tables on master...
+let $diff_table_2=master:test.tproc;
+source include/diff_tables.inc;
+let $diff_table_2=master:test.tfunc;
+source include/diff_tables.inc;
+let $diff_table_2=master:test.ttrig;
+source include/diff_tables.inc;
+let $diff_table_2=master:test.tprep;
+source include/diff_tables.inc;
+
+# ... and to all tables on slave.
+sync_slave_with_master;
+let $diff_table_2=slave:test.tstmt;
+source include/diff_tables.inc;
+let $diff_table_2=slave:test.tproc;
+source include/diff_tables.inc;
+let $diff_table_2=slave:test.tfunc;
+source include/diff_tables.inc;
+let $diff_table_2=slave:test.ttrig;
+source include/diff_tables.inc;
+let $diff_table_2=slave:test.tprep;
+source include/diff_tables.inc;
+
+
+--echo ==== Clean up ====
+
+--echo [on master]
+connection master;
+DROP PROCEDURE proc;
+DROP FUNCTION func;
+DROP TRIGGER trig;
+DROP TABLE tstmt, tproc, tfunc, ttrig, tprep, trigger_table;
+
+SET @@global.pseudo_thread_id= @m_pseudo_thread_id;
+SET @@global.auto_increment_increment= @m_auto_increment_increment;
+SET @@global.auto_increment_offset= @m_auto_increment_offset;
+SET @@global.character_set_client= @m_character_set_client;
+SET @@global.collation_connection= @m_collation_connection;
+SET @@global.collation_server= @m_collation_server;
+SET @@global.time_zone= @m_time_zone;
+SET @@global.lc_time_names= @m_lc_time_names;
+SET @@global.collation_database= @m_collation_database;
+
+--echo [on slave]
+connection slave;
+SET @@global.pseudo_thread_id= @s_pseudo_thread_id;
+SET @@global.auto_increment_increment= @s_auto_increment_increment;
+SET @@global.auto_increment_offset= @s_auto_increment_offset;
+SET @@global.character_set_client= @s_character_set_client;
+SET @@global.collation_connection= @s_collation_connection;
+SET @@global.collation_server= @s_collation_server;
+SET @@global.time_zone= @s_time_zone;
+SET @@global.lc_time_names= @s_lc_time_names;
+SET @@global.collation_database= @s_collation_database;
+
+connection master;
+sync_slave_with_master;
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result
index 685fdbf0a6e..3ab515806e7 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result
@@ -399,6 +399,62 @@ set @b1 = concat(@b1,@b1);
INSERT INTO t8 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
*** Drop t8 ***
DROP TABLE t8;
+STOP SLAVE;
+RESET SLAVE;
+CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
+d TIMESTAMP,
+e INT NOT NULL) ENGINE='NDB';
+*** Create t9 on Master ***
+CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
+) ENGINE='NDB';
+RESET MASTER;
+*** Start Slave ***
+START SLAVE;
+*** Master Data Insert ***
+set @b1 = 'b1b1b1b1';
+set @b1 = concat(@b1,@b1);
+INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
+SHOW SLAVE STATUS;
+Slave_IO_State #
+Master_Host 127.0.0.1
+Master_User root
+Master_Port #
+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 1364
+Last_Error Could not execute Write_rows event on table test.t9; Field 'e' doesn't have a default value, Error_code: 1364; handler error HA_ERR_ROWS_EVENT_APPLY; the event's master log master-bin.000001, end_log_pos 447
+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 1364
+Last_SQL_Error Could not execute Write_rows event on table test.t9; Field 'e' doesn't have a default value, Error_code: 1364; handler error HA_ERR_ROWS_EVENT_APPLY; the event's master log master-bin.000001, end_log_pos 447
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
+START SLAVE;
*** Create t10 on slave ***
STOP SLAVE;
RESET SLAVE;
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test
index 08f7e12b1fb..c7d8db8ef8b 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test
@@ -184,14 +184,11 @@ set GLOBAL slave_transaction_retries=1;
--echo **** On Master ****
UPDATE t1 SET `nom`="DEAD" WHERE `nid`=1;
-# wait for deadlock to be detected
-# sleep longer than dead lock detection timeout in config
-# we do this 2 times, once with few retries to verify that we
-# get a failure with the set sleep, and once with the _same_
-# sleep, but with more retries to get it to succeed
---sleep 5
-
-# replication should have stopped, since max retries where not enough
+# Wait for deadlock to be detected.
+# When detected, the slave will stop, so we just wait for it to stop.
+source include/wait_for_slave_sql_to_stop.inc;
+
+# Replication should have stopped, since max retries were not enough.
# verify with show slave status
--connection slave
--echo **** On Slave ****
@@ -202,9 +199,14 @@ UPDATE t1 SET `nom`="DEAD" WHERE `nid`=1;
# now set max retries high enough to succeed, and start slave again
set GLOBAL slave_transaction_retries=10;
START SLAVE;
-# wait for deadlock to be detected and retried
-# should be the same sleep as above for test to be valid
---sleep 5
+source include/wait_for_slave_to_start.inc;
+# Wait for deadlock to be detected and retried.
+# We want to wait until at least one retry has been made, but before
+# the slave stops. currently, there is no safe way to do that: we
+# would need to access the retry counter, but that is not exposed.
+# Failing that, we just wait sufficiently long that one but not all
+# retries have been made. See BUG#35183.
+sleep 5;
# commit transaction to release lock on row and let replication succeed
select * from t1 order by nid;
diff --git a/mysql-test/t/ctype_big5.test b/mysql-test/t/ctype_big5.test
index 5f3357e0406..0ed21091110 100644
--- a/mysql-test/t/ctype_big5.test
+++ b/mysql-test/t/ctype_big5.test
@@ -16,10 +16,12 @@ SET collation_connection='big5_chinese_ci';
-- source include/ctype_filesort.inc
-- source include/ctype_innodb_like.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_like_range_f1f2.inc
SET collation_connection='big5_bin';
-- source include/ctype_filesort.inc
-- source include/ctype_innodb_like.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_like_range_f1f2.inc
#
# Bugs#9357: TEXT columns break string with special word in BIG5 charset.
diff --git a/mysql-test/t/ctype_eucjpms.test b/mysql-test/t/ctype_eucjpms.test
index 8f813fbd82b..ec358d94900 100644
--- a/mysql-test/t/ctype_eucjpms.test
+++ b/mysql-test/t/ctype_eucjpms.test
@@ -361,9 +361,10 @@ DROP TABLE t1;
SET collation_connection='eucjpms_japanese_ci';
-- source include/ctype_filesort.inc
+-- source include/ctype_like_range_f1f2.inc
SET collation_connection='eucjpms_bin';
-- source include/ctype_filesort.inc
-
+-- source include/ctype_like_range_f1f2.inc
#
# Bugs#15375: Unassigned multibyte codes are broken
diff --git a/mysql-test/t/ctype_euckr.test b/mysql-test/t/ctype_euckr.test
index 05e4b04eded..0aba830e725 100644
--- a/mysql-test/t/ctype_euckr.test
+++ b/mysql-test/t/ctype_euckr.test
@@ -16,10 +16,12 @@ SET collation_connection='euckr_korean_ci';
-- source include/ctype_filesort.inc
-- source include/ctype_innodb_like.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_like_range_f1f2.inc
SET collation_connection='euckr_bin';
-- source include/ctype_filesort.inc
-- source include/ctype_innodb_like.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_like_range_f1f2.inc
#
# Bug#15377 Valid multibyte sequences are truncated on INSERT
diff --git a/mysql-test/t/ctype_gb2312.test b/mysql-test/t/ctype_gb2312.test
index 835818d441c..86d1c7f72c9 100644
--- a/mysql-test/t/ctype_gb2312.test
+++ b/mysql-test/t/ctype_gb2312.test
@@ -16,10 +16,12 @@ SET collation_connection='gb2312_chinese_ci';
-- source include/ctype_filesort.inc
-- source include/ctype_innodb_like.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_like_range_f1f2.inc
SET collation_connection='gb2312_bin';
-- source include/ctype_filesort.inc
-- source include/ctype_innodb_like.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_like_range_f1f2.inc
#
# Bug#15377 Valid multibyte sequences are truncated on INSERT
diff --git a/mysql-test/t/ctype_gbk.test b/mysql-test/t/ctype_gbk.test
index 5ff138fa97b..3ea696338dc 100644
--- a/mysql-test/t/ctype_gbk.test
+++ b/mysql-test/t/ctype_gbk.test
@@ -16,10 +16,12 @@ SET collation_connection='gbk_chinese_ci';
-- source include/ctype_filesort.inc
-- source include/ctype_innodb_like.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_like_range_f1f2.inc
SET collation_connection='gbk_bin';
-- source include/ctype_filesort.inc
-- source include/ctype_innodb_like.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_like_range_f1f2.inc
#
# Bug#11987 mysql will truncate the text when
diff --git a/mysql-test/t/ctype_latin1_de.test b/mysql-test/t/ctype_latin1_de.test
index d6a11a22857..1efbfa4a3ae 100644
--- a/mysql-test/t/ctype_latin1_de.test
+++ b/mysql-test/t/ctype_latin1_de.test
@@ -116,6 +116,7 @@ SELECT FIELD('ue',s1), FIELD('Ü',s1), s1='ue', s1='Ü' FROM t1;
DROP TABLE t1;
-- source include/ctype_filesort.inc
+-- source include/ctype_german.inc
#
# Bug#7878 with utf8_general_ci, equals (=) has problem with
diff --git a/mysql-test/t/ctype_sjis.test b/mysql-test/t/ctype_sjis.test
index 01e0b334554..27cbdff451b 100644
--- a/mysql-test/t/ctype_sjis.test
+++ b/mysql-test/t/ctype_sjis.test
@@ -68,10 +68,12 @@ SET collation_connection='sjis_japanese_ci';
-- source include/ctype_filesort.inc
-- source include/ctype_innodb_like.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_like_range_f1f2.inc
SET collation_connection='sjis_bin';
-- source include/ctype_filesort.inc
-- source include/ctype_innodb_like.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_like_range_f1f2.inc
# Check parsing of string literals in SJIS with multibyte characters that
# have an embedded \ in them. (Bug #8303)
diff --git a/mysql-test/t/ctype_uca.test b/mysql-test/t/ctype_uca.test
index 0d917428efb..11a489ba24d 100644
--- a/mysql-test/t/ctype_uca.test
+++ b/mysql-test/t/ctype_uca.test
@@ -458,6 +458,7 @@ drop table t1;
SET collation_connection='utf8_unicode_ci';
-- source include/ctype_filesort.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_german.inc
# End of 4.1 tests
@@ -539,7 +540,8 @@ select * from t1 where a like 'c%';
drop table t1;
set collation_connection=ucs2_unicode_ci;
---source include/ctype_regex.inc
+-- source include/ctype_regex.inc
+-- source include/ctype_like_range_f1f2.inc
set names utf8;
-- echo End for 5.0 tests
diff --git a/mysql-test/t/ctype_ucs.test b/mysql-test/t/ctype_ucs.test
index 3af5bfa54f9..529c48a627b 100644
--- a/mysql-test/t/ctype_ucs.test
+++ b/mysql-test/t/ctype_ucs.test
@@ -373,10 +373,13 @@ drop table t1;
SET collation_connection='ucs2_general_ci';
-- source include/ctype_filesort.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_german.inc
+-- source include/ctype_like_range_f1f2.inc
SET NAMES latin1;
SET collation_connection='ucs2_bin';
-- source include/ctype_filesort.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_like_range_f1f2.inc
#
# Bug#10344 Some string functions fail for UCS2
diff --git a/mysql-test/t/ctype_ujis.test b/mysql-test/t/ctype_ujis.test
index 347587faee6..400f1301dd3 100644
--- a/mysql-test/t/ctype_ujis.test
+++ b/mysql-test/t/ctype_ujis.test
@@ -1147,10 +1147,12 @@ SET collation_connection='ujis_japanese_ci';
-- source include/ctype_filesort.inc
-- source include/ctype_innodb_like.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_like_range_f1f2.inc
SET collation_connection='ujis_bin';
-- source include/ctype_filesort.inc
-- source include/ctype_innodb_like.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_like_range_f1f2.inc
#
# Bugs#15375: Unassigned multibyte codes are broken
diff --git a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test
index d18a7d22a0e..2e23ac3661c 100644
--- a/mysql-test/t/ctype_utf8.test
+++ b/mysql-test/t/ctype_utf8.test
@@ -721,6 +721,7 @@ select hex(soundex(_utf8 0xD091D092D093));
SET collation_connection='utf8_general_ci';
-- source include/ctype_filesort.inc
-- source include/ctype_like_escape.inc
+-- source include/ctype_german.inc
SET collation_connection='utf8_bin';
-- source include/ctype_filesort.inc
-- source include/ctype_like_escape.inc
diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def
index 8ec9cf36751..c4a1a75d948 100644
--- a/mysql-test/t/disabled.def
+++ b/mysql-test/t/disabled.def
@@ -12,8 +12,6 @@
user_limits : Bug#23921 random failure of user_limits.test
concurrent_innodb : BUG#21579 2006-08-11 mleich innodb_concurrent random failures with varying differences
-ctype_big5 : BUG#26711 2007-06-21 Lars Test has never worked on Double Whopper
-
federated_transactions : Bug#29523 Transactions do not work
lowercase_table3 : Bug#32667 lowercase_table3.test reports to error log
innodb_mysql : Bug#32724: innodb_mysql.test fails randomly
diff --git a/mysql-test/t/mysqlbinlog2.test b/mysql-test/t/mysqlbinlog2.test
index 2ac16f4c590..59017b09c54 100644
--- a/mysql-test/t/mysqlbinlog2.test
+++ b/mysql-test/t/mysqlbinlog2.test
@@ -41,8 +41,7 @@ select "--- Local --" as "";
# be time dependent (the Start events). Better than nothing.
#
---replace_regex /[[:<:]][0-9]{6} [0-9 ][0-9]:[0-9]{2}:[0-9]{2}[[:>:]]/{yymmdd} {HH:MM:SS}/ /=[0-9]+ /={integer} / /# at [0-9]+/# at {pos}/ /(pos:?) [0-9]+/\1 {pos}/ /binlog v [0-9]+, server v [^ ]* created/binlog v #, server v ## created/
---exec $MYSQL_BINLOG --base64-output=never $MYSQLTEST_VARDIR/log/master-bin.000001
+--exec $MYSQL_BINLOG --short-form --base64-output=never $MYSQLTEST_VARDIR/log/master-bin.000001
--disable_query_log
select "--- offset --" as "";
diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test
index 6cbe345bc8a..1792b11435c 100644
--- a/mysql-test/t/mysqldump.test
+++ b/mysql-test/t/mysqldump.test
@@ -1613,6 +1613,10 @@ DROP TABLE t1;
#
# Added for use-thread option
#
+
+# THIS PART OF THE TEST IS DISABLED UNTIL BUG#32991 IS FIXED
+if ($bug32991_fixed) {
+
create table t1 (a text , b text);
create table t2 (a text , b text);
insert t1 values ("Duck, Duck", "goose");
@@ -1650,6 +1654,8 @@ drop table t2;
drop table words2;
+}
+
--echo #
--echo # BUG# 16853: mysqldump doesn't show events
--echo #
diff --git a/mysql-test/t/variables-notembedded-master.opt b/mysql-test/t/variables-notembedded-master.opt
new file mode 100644
index 00000000000..a684e591d10
--- /dev/null
+++ b/mysql-test/t/variables-notembedded-master.opt
@@ -0,0 +1 @@
+--loose-slave-skip-errors=3,100,137,643,1752
diff --git a/mysql-test/t/variables-notembedded.test b/mysql-test/t/variables-notembedded.test
new file mode 100644
index 00000000000..79011a89b36
--- /dev/null
+++ b/mysql-test/t/variables-notembedded.test
@@ -0,0 +1,30 @@
+# Tests that variables work correctly (setting and showing). This
+# test is like the main.variables test, but for variables not
+# available in embedded mode.
+
+source include/not_embedded.inc;
+
+--echo ---- Init ----
+# Backup global variables so they can be restored at end of test.
+set @my_slave_net_timeout =@@global.slave_net_timeout;
+
+--echo ---- Test ----
+set global slave_net_timeout=100;
+set global sql_slave_skip_counter=100;
+
+# End of 4.1 tests
+
+# BUG #7800: Add various-slave related variables to SHOW VARIABLES
+show variables like 'slave_compressed_protocol';
+--replace_column 2 SLAVE_LOAD_TMPDIR
+show variables like 'slave_load_tmpdir';
+# We just set some arbitrary values in variables-master.opt so we can test
+# that a list of values works correctly
+show variables like 'slave_skip_errors';
+
+--echo ---- Clean Up ----
+
+set global slave_net_timeout=default;
+# sql_slave_skip_counter is write-only, so we can't save previous
+# value and restore it here. That's ok, because it's normally 0.
+set global sql_slave_skip_counter= 0;