Loading configure.in +19 −15 Original line number Diff line number Diff line Loading @@ -455,46 +455,50 @@ fi AC_SUBST(ABI_CHECK) # Lock for PS # Look for PS usage. We use double dollar-signs in FIND_PROC because this # value is written to a makefile, which interprets away one level of # dollar-signs. So, interpretation stages are m4 and then shell in autoconf, # then Make, then shell. The autoconf substitution uses single quotes, so # no unprotected single quotes should appear in the expression. AC_PATH_PROG(PS, ps, ps) AC_MSG_CHECKING("how to check if pid exists") PS=$ac_cv_path_PS # Linux style if $PS p $$ 2> /dev/null | grep `echo $0 | sed s/\-//` > /dev/null if $PS wwwp $$ 2> /dev/null | grep -- "$0" > /dev/null then FIND_PROC="$PS p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS wwwp \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" # Solaris elif $PS -fp $$ 2> /dev/null | grep $0 > /dev/null elif $PS -fp $$ 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS -p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS -p \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" # BSD style elif $PS -uaxww 2> /dev/null | grep $0 > /dev/null elif $PS -uaxww 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS -uaxww | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" # SysV style elif $PS -ef 2> /dev/null | grep $0 > /dev/null elif $PS -ef 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS -ef | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -ef | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" # Do anybody use this? elif $PS $$ 2> /dev/null | grep $0 > /dev/null elif $PS $$ 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" else case $SYSTEM_TYPE in *freebsd*|*dragonfly*) FIND_PROC="$PS p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS p \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" ;; *darwin*) FIND_PROC="$PS -uaxww | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" ;; *cygwin*) FIND_PROC="$PS -e | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -e | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" ;; *netware*) FIND_PROC= ;; *) AC_MSG_ERROR([Could not find the right ps switches. Which OS is this ?. See the Installation chapter in the Reference Manual.]) AC_MSG_ERROR([Could not find the right ps and/or grep switches. Which OS is this? See the Installation chapter in the Reference Manual.]) esac fi AC_SUBST(FIND_PROC) Loading mysql-test/extra/binlog_tests/binlog.test +39 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,45 @@ drop table t1; --replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ show binlog events from 0; # # Bug #39182: Binary log producing incompatible character set query from # stored procedure. # reset master; CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; USE bug39182; CREATE TABLE t1 (a VARCHAR(255) COLLATE utf8_unicode_ci) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; DELIMITER //; CREATE PROCEDURE p1() BEGIN DECLARE s1 VARCHAR(255); SET s1= "test"; CREATE TEMPORARY TABLE tmp1 SELECT * FROM t1 WHERE a LIKE CONCAT("%", s1, "%"); SELECT COLLATION(NAME_CONST('s1', _utf8'test')) c1, COLLATION(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) c2, COLLATION(s1) c3, COERCIBILITY(NAME_CONST('s1', _utf8'test')) d1, COERCIBILITY(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) d2, COERCIBILITY(s1) d3; DROP TEMPORARY TABLE tmp1; END// DELIMITER ;// CALL p1(); source include/show_binlog_events.inc; DROP PROCEDURE p1; DROP TABLE t1; DROP DATABASE bug39182; USE test; --echo End of 5.0 tests # Test of a too big SET INSERT_ID: see if the truncated value goes Loading mysql-test/extra/binlog_tests/blackhole.test +0 −9 Original line number Diff line number Diff line Loading @@ -139,15 +139,6 @@ drop table t1,t2,t3; # table # CREATE TABLE t1(a INT) ENGINE=BLACKHOLE; # NOTE: After exchanging open_ltable() by open_and_lock_tables() in # handle_delayed_insert() to fix problems with MERGE tables (Bug#26379), # problems with INSERT DELAYED and BLACKHOLE popped up. open_ltable() # does not check if the binlogging capabilities of the statement and the # table match. So the below used to succeed. But since INSERT DELAYED # switches to row-based logging in mixed-mode and BLACKHOLE cannot do # row-based logging, it could not really work. Until this problem is # correctly fixed, we have that error here. --error ER_BINLOG_LOGGING_IMPOSSIBLE INSERT DELAYED INTO t1 VALUES(1); DROP TABLE t1; Loading mysql-test/extra/rpl_tests/rpl_blackhole.test 0 → 100644 +32 −0 Original line number Diff line number Diff line # Check replication of one statement assuming that the engine on the # slave is a blackhole engine. # Input: # $statement Statement to evaluate, it is assumed to change t1 # 1. Evaluate statement on master, it is assumed to change t1 # 2. Wait for statement to be processed on slave # 3. SELECT from table t1 to see what was written # 4. Compare position on slave before executing statement and after # executing statement. If difference is >0, then something was # written to the binary log on the slave. connection slave; let $before = query_get_value("SHOW MASTER STATUS", Position, 1); --echo [on master] connection master; eval $statement; --echo [on slave] sync_slave_with_master; --echo # Expect 0 SELECT COUNT(*) FROM t1; let $after = query_get_value("SHOW MASTER STATUS", Position, 1); let $something_written = `select $after - $before != 0`; if ($something_written) { --echo >>> Something was written to binary log <<< } if (!$something_written) { --echo >>> Nothing was written to binary log <<< } mysql-test/include/mix1.inc +1 −0 Original line number Diff line number Diff line Loading @@ -1256,6 +1256,7 @@ connect (con1,localhost,root,,); connect (con2,localhost,root,,); SET SESSION AUTOCOMMIT = 0; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; set binlog_format=mixed; --echo # Switch to connection con1 connection con1; Loading Loading
configure.in +19 −15 Original line number Diff line number Diff line Loading @@ -455,46 +455,50 @@ fi AC_SUBST(ABI_CHECK) # Lock for PS # Look for PS usage. We use double dollar-signs in FIND_PROC because this # value is written to a makefile, which interprets away one level of # dollar-signs. So, interpretation stages are m4 and then shell in autoconf, # then Make, then shell. The autoconf substitution uses single quotes, so # no unprotected single quotes should appear in the expression. AC_PATH_PROG(PS, ps, ps) AC_MSG_CHECKING("how to check if pid exists") PS=$ac_cv_path_PS # Linux style if $PS p $$ 2> /dev/null | grep `echo $0 | sed s/\-//` > /dev/null if $PS wwwp $$ 2> /dev/null | grep -- "$0" > /dev/null then FIND_PROC="$PS p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS wwwp \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" # Solaris elif $PS -fp $$ 2> /dev/null | grep $0 > /dev/null elif $PS -fp $$ 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS -p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS -p \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" # BSD style elif $PS -uaxww 2> /dev/null | grep $0 > /dev/null elif $PS -uaxww 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS -uaxww | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" # SysV style elif $PS -ef 2> /dev/null | grep $0 > /dev/null elif $PS -ef 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS -ef | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -ef | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" # Do anybody use this? elif $PS $$ 2> /dev/null | grep $0 > /dev/null elif $PS $$ 2> /dev/null | grep -- $0 > /dev/null then FIND_PROC="$PS \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" else case $SYSTEM_TYPE in *freebsd*|*dragonfly*) FIND_PROC="$PS p \$\$PID | grep -v grep | grep \$\$MYSQLD > /dev/null" FIND_PROC="$PS p \$\$PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" > /dev/null" ;; *darwin*) FIND_PROC="$PS -uaxww | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" ;; *cygwin*) FIND_PROC="$PS -e | grep -v grep | grep \$\$MYSQLD | grep \" \$\$PID \" > /dev/null" FIND_PROC="$PS -e | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"\$\$MYSQLD\" | grep \" \$\$PID \" > /dev/null" ;; *netware*) FIND_PROC= ;; *) AC_MSG_ERROR([Could not find the right ps switches. Which OS is this ?. See the Installation chapter in the Reference Manual.]) AC_MSG_ERROR([Could not find the right ps and/or grep switches. Which OS is this? See the Installation chapter in the Reference Manual.]) esac fi AC_SUBST(FIND_PROC) Loading
mysql-test/extra/binlog_tests/binlog.test +39 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,45 @@ drop table t1; --replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/ show binlog events from 0; # # Bug #39182: Binary log producing incompatible character set query from # stored procedure. # reset master; CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; USE bug39182; CREATE TABLE t1 (a VARCHAR(255) COLLATE utf8_unicode_ci) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; DELIMITER //; CREATE PROCEDURE p1() BEGIN DECLARE s1 VARCHAR(255); SET s1= "test"; CREATE TEMPORARY TABLE tmp1 SELECT * FROM t1 WHERE a LIKE CONCAT("%", s1, "%"); SELECT COLLATION(NAME_CONST('s1', _utf8'test')) c1, COLLATION(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) c2, COLLATION(s1) c3, COERCIBILITY(NAME_CONST('s1', _utf8'test')) d1, COERCIBILITY(NAME_CONST('s1', _utf8'test' COLLATE utf8_unicode_ci)) d2, COERCIBILITY(s1) d3; DROP TEMPORARY TABLE tmp1; END// DELIMITER ;// CALL p1(); source include/show_binlog_events.inc; DROP PROCEDURE p1; DROP TABLE t1; DROP DATABASE bug39182; USE test; --echo End of 5.0 tests # Test of a too big SET INSERT_ID: see if the truncated value goes Loading
mysql-test/extra/binlog_tests/blackhole.test +0 −9 Original line number Diff line number Diff line Loading @@ -139,15 +139,6 @@ drop table t1,t2,t3; # table # CREATE TABLE t1(a INT) ENGINE=BLACKHOLE; # NOTE: After exchanging open_ltable() by open_and_lock_tables() in # handle_delayed_insert() to fix problems with MERGE tables (Bug#26379), # problems with INSERT DELAYED and BLACKHOLE popped up. open_ltable() # does not check if the binlogging capabilities of the statement and the # table match. So the below used to succeed. But since INSERT DELAYED # switches to row-based logging in mixed-mode and BLACKHOLE cannot do # row-based logging, it could not really work. Until this problem is # correctly fixed, we have that error here. --error ER_BINLOG_LOGGING_IMPOSSIBLE INSERT DELAYED INTO t1 VALUES(1); DROP TABLE t1; Loading
mysql-test/extra/rpl_tests/rpl_blackhole.test 0 → 100644 +32 −0 Original line number Diff line number Diff line # Check replication of one statement assuming that the engine on the # slave is a blackhole engine. # Input: # $statement Statement to evaluate, it is assumed to change t1 # 1. Evaluate statement on master, it is assumed to change t1 # 2. Wait for statement to be processed on slave # 3. SELECT from table t1 to see what was written # 4. Compare position on slave before executing statement and after # executing statement. If difference is >0, then something was # written to the binary log on the slave. connection slave; let $before = query_get_value("SHOW MASTER STATUS", Position, 1); --echo [on master] connection master; eval $statement; --echo [on slave] sync_slave_with_master; --echo # Expect 0 SELECT COUNT(*) FROM t1; let $after = query_get_value("SHOW MASTER STATUS", Position, 1); let $something_written = `select $after - $before != 0`; if ($something_written) { --echo >>> Something was written to binary log <<< } if (!$something_written) { --echo >>> Nothing was written to binary log <<< }
mysql-test/include/mix1.inc +1 −0 Original line number Diff line number Diff line Loading @@ -1256,6 +1256,7 @@ connect (con1,localhost,root,,); connect (con2,localhost,root,,); SET SESSION AUTOCOMMIT = 0; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; set binlog_format=mixed; --echo # Switch to connection con1 connection con1; Loading