Commit e30fa864 authored by Tatiana A. Nurnberg's avatar Tatiana A. Nurnberg

auto-merge

parents 36d83ee2 eecf716a
...@@ -2,6 +2,13 @@ ...@@ -2,6 +2,13 @@
# By JBM 2006-02-16 So that the code is not repeated # # By JBM 2006-02-16 So that the code is not repeated #
# in test cases and can be reused. # # in test cases and can be reused. #
###################################################### ######################################################
# Bug#41307: Tests using include/ndb_backup.inc won't work on Windows due to
# 'grep' call
# This test is disabled on Windows via the next line until the above bug is
# resolved
--source include/not_windows.inc
--exec $NDB_MGM --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -e "start backup" >> $NDB_TOOLS_OUTPUT --exec $NDB_MGM --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -e "start backup" >> $NDB_TOOLS_OUTPUT
# there is no neat way to find the backupid, this is a hack to find it... # there is no neat way to find the backupid, this is a hack to find it...
......
# include/wait_show_condition.inc
#
# SUMMARY
#
# Waits until the show statement ($show_statement) has at least within one of
# the rows of the result set for the field ($field) a value which fulfils
# a condition ($condition), or the operation times out.
#
#
# USAGE
#
# let $show_statement= SHOW PROCESSLIST;
# let $field= State;
# let $condition= = 'Updating';
# --source include/wait_show_condition.inc
#
# OR
#
# let $wait_timeout= 60; # Override default of 30 seconds with 60.
# let $show_statement= SHOW PROCESSLIST;
# let $field= State;
# let $condition= = 'Updating';
# --source include/wait_show_condition.inc
#
# Please do not use this use routine if you can replace the SHOW statement
# with a select. In such a case include/wait_condition.inc is recommended.
#
# Created: 2009-02-18 mleich
#
let $max_run_time= 30;
if ($wait_timeout)
{
let $max_run_time= $wait_timeout;
}
# Reset $wait_timeout so that its value won't be used on subsequent
# calls, and default will be used instead.
let $wait_timeout= 0;
# The smallest timespan till UNIX_TIMESTAMP() gets incremented is ~0 seconds.
# We add one second to avoid the case that somebody measures timespans on a
# real clock with fractions of seconds, detects that n seconds are sufficient,
# assigns n to this routine and suffers because he sometimes gets n - 1
# seconds in reality.
inc $max_run_time;
let $found= 0;
let $max_end_time= `SELECT UNIX_TIMESTAMP() + $max_run_time`;
while (`SELECT UNIX_TIMESTAMP() <= $max_end_time AND $found = 0`)
{
# Sleep a bit to avoid too heavy load.
real_sleep 0.2;
let $rowno= 1;
let $process_result= 1;
while (`SELECT $process_result = 1 AND $found = 0`)
{
let $field_value= query_get_value($show_statement, $field, $rowno);
if (`SELECT '$field_value' $condition`)
{
let $found= 1;
}
if (`SELECT '$field_value' = 'No such row'`)
{
# We are behind the last row of the result set.
let $process_result= 0;
}
inc $rowno;
}
}
if (!$found)
{
echo # Timeout in include/wait_show_condition.inc for $wait_condition;
echo # show_statement : $show_statement;
echo # field : $field;
echo # condition : $condition;
echo # max_run_time : $max_run_time;
}
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b INT) ENGINE = InnoDB;
INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
COMMIT;
SET AUTOCOMMIT = 0;
CREATE TEMPORARY TABLE t1_tmp ( b INT );
INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 3;
INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 2;
SET AUTOCOMMIT = 0;
CREATE TEMPORARY TABLE t2_tmp ( a int, new_a int );
INSERT INTO t2_tmp VALUES (1,51),(2,52),(3,53);
UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 1;
UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 2;
INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
Reap the server message for connection user2 UPDATE t1 ...
UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 3;
DROP TABLE t1;
...@@ -1267,20 +1267,4 @@ CREATE INDEX i1 on t1 (a(3)); ...@@ -1267,20 +1267,4 @@ CREATE INDEX i1 on t1 (a(3));
SELECT * FROM t1 WHERE a = 'abcde'; SELECT * FROM t1 WHERE a = 'abcde';
a a
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b INT)
ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
SET AUTOCOMMIT = 0;
CREATE TEMPORARY TABLE t1_tmp (b INT);
INSERT INTO t1_tmp SELECT b FROM t1 WHERE a = 3;
INSERT INTO t1_tmp SELECT b FROM t1 WHERE a = 2;
SET AUTOCOMMIT = 0;
CREATE TEMPORARY TABLE t2_tmp ( a INT, new_a INT);
INSERT INTO t2_tmp VALUES (1,51),(2,52),(3,53);
UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 1;
UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 2;
INSERT INTO t1_tmp SELECT b FROM t1 WHERE a = 1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 3;
DROP TABLE t1;
End of 5.0 tests End of 5.0 tests
...@@ -353,7 +353,14 @@ flush logs; ...@@ -353,7 +353,14 @@ flush logs;
INSERT INTO t1 VALUES ('0123456789'); INSERT INTO t1 VALUES ('0123456789');
flush logs; flush logs;
DROP TABLE t1; DROP TABLE t1;
# Query thread_id=REMOVED exec_time=REMOVED error_code=REMOVED We expect this value to be 1
The bug being tested was that 'Query' lines were not preceded by '#'
If the line is in the table, it had to have been preceded by a '#'
SELECT COUNT(*) AS `BUG#28293_expect_1` FROM patch WHERE a LIKE '%Query%';
BUG#28293_expect_1
1
DROP TABLE patch;
flush logs; flush logs;
create table t1(a int); create table t1(a int);
insert into t1 values(connection_id()); insert into t1 values(connection_id());
...@@ -362,4 +369,14 @@ drop table t1; ...@@ -362,4 +369,14 @@ drop table t1;
1 1
drop table t1; drop table t1;
shell> mysqlbinlog std_data/corrupt-relay-bin.000624 > var/tmp/bug31793.sql shell> mysqlbinlog std_data/corrupt-relay-bin.000624 > var/tmp/bug31793.sql
set @@global.server_id= 4294967295;
reset master;
select
(@a:=load_file("MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog"))
is not null;
(@a:=load_file("MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog"))
is not null
1
*** Unsigned server_id 4294967295 is found: 1 ***
set @@global.server_id= 1;
End of 5.0 tests End of 5.0 tests
...@@ -210,7 +210,6 @@ source database ...@@ -210,7 +210,6 @@ source database
"MySQL: The world's most popular ;open source database" "MySQL: The world's most popular ;open source database"
echo message echo message echo message echo message
mysqltest: At line 1: command "false" failed
mysqltest: At line 1: Missing argument in exec mysqltest: At line 1: Missing argument in exec
MySQL MySQL
"MySQL" "MySQL"
...@@ -378,7 +377,6 @@ mysqltest: At line 1: The argument to dec must be a variable (start with $) ...@@ -378,7 +377,6 @@ mysqltest: At line 1: The argument to dec must be a variable (start with $)
mysqltest: At line 1: End of line junk detected: "1000" mysqltest: At line 1: End of line junk detected: "1000"
mysqltest: At line 1: Missing arguments to system, nothing to do! mysqltest: At line 1: Missing arguments to system, nothing to do!
mysqltest: At line 1: Missing arguments to system, nothing to do! mysqltest: At line 1: Missing arguments to system, nothing to do!
mysqltest: At line 1: system command 'false' failed
system command 'NonExistsinfComamdn 2> /dev/null' failed system command 'NonExistsinfComamdn 2> /dev/null' failed
test test
test2 test2
......
...@@ -13,9 +13,7 @@ GRANT CREATE ON mysqltest_db1.* TO mysqltest_dfn@localhost; ...@@ -13,9 +13,7 @@ GRANT CREATE ON mysqltest_db1.* TO mysqltest_dfn@localhost;
---> connection: wl2818_definer_con ---> connection: wl2818_definer_con
CREATE TABLE t1(num_value INT); CREATE TABLE t1(num_value INT);
CREATE TABLE t2(user_str TEXT); CREATE TABLE t2(user_str TEXT);
CREATE TRIGGER wl2818_trg1 BEFORE INSERT ON t1 CREATE TRIGGER wl2818_trg1 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES(CURRENT_USER());
FOR EACH ROW
INSERT INTO t2 VALUES(CURRENT_USER());
---> patching t1.TRG... ---> patching t1.TRG...
......
#
# Testcase for InnoDB
# Bug#42419 Server crash with "Pure virtual method called" on two concurrent connections
#
--source include/have_innodb.inc
let $innodb_lock_wait_timeout= query_get_value(SHOW VARIABLES LIKE 'innodb_lock_wait_timeout%', Value, 1);
if (`SELECT $innodb_lock_wait_timeout < 10`)
{
--echo # innodb_lock_wait_timeout must be >= 10 seconds
--echo # so that this test can work all time fine on an overloaded testing box
SHOW VARIABLES LIKE 'innodb_lock_wait_timeout';
exit;
}
# Save the initial number of concurrent sessions
--source include/count_sessions.inc
# First session
connection default;
--enable_warnings
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b INT) ENGINE = InnoDB;
INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
COMMIT;
SET AUTOCOMMIT = 0;
CREATE TEMPORARY TABLE t1_tmp ( b INT );
INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 3;
INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 2;
# Second session
connect (user2,localhost,root,,,$MASTER_MYPORT,$MASTER_MYSOCK);
SET AUTOCOMMIT = 0;
CREATE TEMPORARY TABLE t2_tmp ( a int, new_a int );
INSERT INTO t2_tmp VALUES (1,51),(2,52),(3,53);
UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 1;
send
UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 2;
# The last update will wait for a lock held by the first session
# First session
connection default;
# Poll till the UPDATE of the second session waits for lock
let $show_statement= SHOW PROCESSLIST;
let $field= State;
let $condition= = 'Updating';
--source include/wait_show_condition.inc
# If the testing box is overloadeded and innodb_lock_wait_timeout is too small
# we might get here ER_LOCK_WAIT_TIMEOUT.
--error ER_LOCK_DEADLOCK
INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 1;
# Second session
connection user2;
--echo Reap the server message for connection user2 UPDATE t1 ...
reap;
# The server crashed when executing this UPDATE or the succeeding SQL command.
UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 3;
connection default;
disconnect user2;
DROP TABLE t1;
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
--innodb-lock-wait-timeout=3 --innodb-lock-wait-timeout=2
...@@ -1025,55 +1025,4 @@ CREATE INDEX i1 on t1 (a(3)); ...@@ -1025,55 +1025,4 @@ CREATE INDEX i1 on t1 (a(3));
SELECT * FROM t1 WHERE a = 'abcde'; SELECT * FROM t1 WHERE a = 'abcde';
DROP TABLE t1; DROP TABLE t1;
#
# Bug #42419: Server crash with "Pure virtual method called" on two
# concurrent connections
#
connect (c1, localhost, root,,);
connect (c2, localhost, root,,);
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b INT)
ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
connection c1;
SET AUTOCOMMIT = 0;
CREATE TEMPORARY TABLE t1_tmp (b INT);
INSERT INTO t1_tmp SELECT b FROM t1 WHERE a = 3;
INSERT INTO t1_tmp SELECT b FROM t1 WHERE a = 2;
connection c2;
SET AUTOCOMMIT = 0;
CREATE TEMPORARY TABLE t2_tmp ( a INT, new_a INT);
INSERT INTO t2_tmp VALUES (1,51),(2,52),(3,53);
UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 1;
--send
UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 2;
--sleep 3
connection c1;
--error ER_LOCK_DEADLOCK
INSERT INTO t1_tmp SELECT b FROM t1 WHERE a = 1;
connection c2;
--reap
UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 3;
connection default;
disconnect c1;
disconnect c2;
DROP TABLE t1;
--echo End of 5.0 tests --echo End of 5.0 tests
# We are using .opt file since we need small binlog size # We are using .opt file since we need small binlog size
-- source include/have_log_bin.inc -- source include/have_log_bin.inc
# we need this for getting fixed timestamps inside of this test # we need this for getting fixed timestamps inside of this test
...@@ -174,7 +173,8 @@ delimiter ;// ...@@ -174,7 +173,8 @@ delimiter ;//
flush logs; flush logs;
call p1(); call p1();
drop procedure p1; drop procedure p1;
--error 1305 --error ER_SP_DOES_NOT_EXIST
call p1(); call p1();
--replace_regex /SQL_LOAD_MB-[0-9]-[0-9]/SQL_LOAD_MB-#-#/ --replace_regex /SQL_LOAD_MB-[0-9]-[0-9]/SQL_LOAD_MB-#-#/
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000007 --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000007
...@@ -226,7 +226,26 @@ flush logs; ...@@ -226,7 +226,26 @@ flush logs;
INSERT INTO t1 VALUES ('0123456789'); INSERT INTO t1 VALUES ('0123456789');
flush logs; flush logs;
DROP TABLE t1; DROP TABLE t1;
--exec $MYSQL_BINLOG --hexdump --local-load=$MYSQLTEST_VARDIR/tmp/ $MYSQLTEST_VARDIR/log/master-bin.000011 | grep 'Query' | sed 's/[0-9]\{1,\}/REMOVED/g'
# We create a table, patch, and load the output into it
# By using LINES STARTING BY '#' + SELECT WHERE a LIKE 'Query'
# We can easily see if a 'Query' line is missing the '#' character
# as described in the original bug
--disable_query_log
CREATE TABLE patch (a blob);
--exec $MYSQL_BINLOG --hexdump --local-load=$MYSQLTEST_VARDIR/tmp/ $MYSQLTEST_VARDIR/log/master-bin.000011 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_tmp.dat
eval LOAD DATA LOCAL INFILE '$MYSQLTEST_VARDIR/tmp/mysqlbinlog_tmp.dat'
INTO TABLE patch FIELDS TERMINATED by '' LINES STARTING BY '#';
--remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_tmp.dat
--enable_query_log
--echo We expect this value to be 1
--echo The bug being tested was that 'Query' lines were not preceded by '#'
--echo If the line is in the table, it had to have been preceded by a '#'
--echo
SELECT COUNT(*) AS `BUG#28293_expect_1` FROM patch WHERE a LIKE '%Query%';
DROP TABLE patch;
# #
# Bug #29928: incorrect connection_id() restoring from mysqlbinlog out # Bug #29928: incorrect connection_id() restoring from mysqlbinlog out
...@@ -253,4 +272,24 @@ echo shell> mysqlbinlog std_data/corrupt-relay-bin.000624 > var/tmp/bug31793.sql ...@@ -253,4 +272,24 @@ echo shell> mysqlbinlog std_data/corrupt-relay-bin.000624 > var/tmp/bug31793.sql
error 1; error 1;
exec $MYSQL_BINLOG $MYSQL_TEST_DIR/std_data/corrupt-relay-bin.000624 > $MYSQLTEST_VARDIR/tmp/bug31793.sql; exec $MYSQL_BINLOG $MYSQL_TEST_DIR/std_data/corrupt-relay-bin.000624 > $MYSQLTEST_VARDIR/tmp/bug31793.sql;
#
# Bug #37313 BINLOG Contains Incorrect server id
#
let $save_server_id= `select @@global.server_id`;
let $s_id_max=`select (1 << 32) - 1`;
eval set @@global.server_id= $s_id_max;
reset master;
--exec $MYSQL_BINLOG $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
eval select
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog"))
is not null;
let $s_id_unsigned= `select @a like "%server id $s_id_max%" /* must return 1 */`;
echo *** Unsigned server_id $s_id_max is found: $s_id_unsigned ***;
eval set @@global.server_id= $save_server_id;
--remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_bug37313.binlog
--echo End of 5.0 tests --echo End of 5.0 tests
...@@ -62,7 +62,8 @@ select otto from (select 1 as otto) as t1; ...@@ -62,7 +62,8 @@ select otto from (select 1 as otto) as t1;
--exec echo "select friedrich from (select 1 as otto) as t1;" | $MYSQL_TEST 2>&1 --exec echo "select friedrich from (select 1 as otto) as t1;" | $MYSQL_TEST 2>&1
# expectation = response # expectation = response
--error 1054 --error ER_BAD_FIELD_ERROR
select friedrich from (select 1 as otto) as t1; select friedrich from (select 1 as otto) as t1;
# The following unmasked unsuccessful statement must give # The following unmasked unsuccessful statement must give
...@@ -131,14 +132,16 @@ eval select $mysql_errno as "after_successful_stmt_errno" ; ...@@ -131,14 +132,16 @@ eval select $mysql_errno as "after_successful_stmt_errno" ;
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# check mysql_errno = 1064 after statement with wrong syntax # check mysql_errno = 1064 after statement with wrong syntax
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
eval select $mysql_errno as "after_wrong_syntax_errno" ; eval select $mysql_errno as "after_wrong_syntax_errno" ;
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# check if let $my_var= 'abc' ; affects $mysql_errno # check if let $my_var= 'abc' ; affects $mysql_errno
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
let $my_var= 'abc' ; let $my_var= 'abc' ;
eval select $mysql_errno as "after_let_var_equal_value" ; eval select $mysql_errno as "after_let_var_equal_value" ;
...@@ -146,7 +149,8 @@ eval select $mysql_errno as "after_let_var_equal_value" ; ...@@ -146,7 +149,8 @@ eval select $mysql_errno as "after_let_var_equal_value" ;
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# check if set @my_var= 'abc' ; affects $mysql_errno # check if set @my_var= 'abc' ; affects $mysql_errno
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
set @my_var= 'abc' ; set @my_var= 'abc' ;
eval select $mysql_errno as "after_set_var_equal_value" ; eval select $mysql_errno as "after_set_var_equal_value" ;
...@@ -155,7 +159,8 @@ eval select $mysql_errno as "after_set_var_equal_value" ; ...@@ -155,7 +159,8 @@ eval select $mysql_errno as "after_set_var_equal_value" ;
# check if the setting of --disable-warnings itself affects $mysql_errno # check if the setting of --disable-warnings itself affects $mysql_errno
# (May be --<whatever> modifies $mysql_errno.) # (May be --<whatever> modifies $mysql_errno.)
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
--disable_warnings --disable_warnings
eval select $mysql_errno as "after_disable_warnings_command" ; eval select $mysql_errno as "after_disable_warnings_command" ;
...@@ -166,7 +171,8 @@ eval select $mysql_errno as "after_disable_warnings_command" ; ...@@ -166,7 +171,8 @@ eval select $mysql_errno as "after_disable_warnings_command" ;
# (May be disabled warnings affect $mysql_errno.) # (May be disabled warnings affect $mysql_errno.)
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
drop table if exists t1 ; drop table if exists t1 ;
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
drop table if exists t1 ; drop table if exists t1 ;
eval select $mysql_errno as "after_disable_warnings" ; eval select $mysql_errno as "after_disable_warnings" ;
...@@ -175,21 +181,26 @@ eval select $mysql_errno as "after_disable_warnings" ; ...@@ -175,21 +181,26 @@ eval select $mysql_errno as "after_disable_warnings" ;
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# check if masked errors affect $mysql_errno # check if masked errors affect $mysql_errno
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
--error 1146 --error ER_NO_SUCH_TABLE
select 3 from t1 ; select 3 from t1 ;
eval select $mysql_errno as "after_minus_masked" ; eval select $mysql_errno as "after_minus_masked" ;
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
--error 1146 --error ER_NO_SUCH_TABLE
select 3 from t1 ; select 3 from t1 ;
eval select $mysql_errno as "after_!_masked" ; eval select $mysql_errno as "after_!_masked" ;
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# Will manipulations of $mysql_errno be possible and visible ? # Will manipulations of $mysql_errno be possible and visible ?
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
let $mysql_errno= -1; let $mysql_errno= -1;
eval select $mysql_errno as "after_let_errno_equal_value" ; eval select $mysql_errno as "after_let_errno_equal_value" ;
...@@ -198,50 +209,61 @@ eval select $mysql_errno as "after_let_errno_equal_value" ; ...@@ -198,50 +209,61 @@ eval select $mysql_errno as "after_let_errno_equal_value" ;
# How affect actions on prepared statements $mysql_errno ? # How affect actions on prepared statements $mysql_errno ?
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# failing prepare # failing prepare
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
--error 1146 --error ER_NO_SUCH_TABLE
prepare stmt from "select 3 from t1" ; prepare stmt from "select 3 from t1" ;
eval select $mysql_errno as "after_failing_prepare" ; eval select $mysql_errno as "after_failing_prepare" ;
create table t1 ( f1 char(10)); create table t1 ( f1 char(10));
# successful prepare # successful prepare
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
prepare stmt from "select 3 from t1" ; prepare stmt from "select 3 from t1" ;
eval select $mysql_errno as "after_successful_prepare" ; eval select $mysql_errno as "after_successful_prepare" ;
# successful execute # successful execute
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
execute stmt; execute stmt;
eval select $mysql_errno as "after_successful_execute" ; eval select $mysql_errno as "after_successful_execute" ;
# failing execute (table has been dropped) # failing execute (table has been dropped)
drop table t1; drop table t1;
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
--error 1146 --error ER_NO_SUCH_TABLE
execute stmt; execute stmt;
eval select $mysql_errno as "after_failing_execute" ; eval select $mysql_errno as "after_failing_execute" ;
# failing execute (unknown statement) # failing execute (unknown statement)
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
--error 1243 --error ER_UNKNOWN_STMT_HANDLER
execute __stmt_; execute __stmt_;
eval select $mysql_errno as "after_failing_execute" ; eval select $mysql_errno as "after_failing_execute" ;
# successful deallocate # successful deallocate
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
deallocate prepare stmt; deallocate prepare stmt;
eval select $mysql_errno as "after_successful_deallocate" ; eval select $mysql_errno as "after_successful_deallocate" ;
# failing deallocate ( statement handle does not exist ) # failing deallocate ( statement handle does not exist )
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
--error 1243 --error ER_UNKNOWN_STMT_HANDLER
deallocate prepare __stmt_; deallocate prepare __stmt_;
eval select $mysql_errno as "after_failing_deallocate" ; eval select $mysql_errno as "after_failing_deallocate" ;
...@@ -266,7 +288,8 @@ eval select $mysql_errno as "after_failing_deallocate" ; ...@@ -266,7 +288,8 @@ eval select $mysql_errno as "after_failing_deallocate" ;
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# Switch off the abort on error and check the effect on $mysql_errno # Switch off the abort on error and check the effect on $mysql_errno
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
--disable_abort_on_error --disable_abort_on_error
eval select $mysql_errno as "after_--disable_abort_on_error" ; eval select $mysql_errno as "after_--disable_abort_on_error" ;
...@@ -280,9 +303,11 @@ select 3 from t1 ; ...@@ -280,9 +303,11 @@ select 3 from t1 ;
# masked failing statements # masked failing statements
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# expected error = response # expected error = response
--error 1146 --error ER_NO_SUCH_TABLE
select 3 from t1 ; select 3 from t1 ;
--error 1146 --error ER_NO_SUCH_TABLE
select 3 from t1 ; select 3 from t1 ;
eval select $mysql_errno as "after_!errno_masked_error" ; eval select $mysql_errno as "after_!errno_masked_error" ;
# expected error <> response # expected error <> response
...@@ -296,7 +321,8 @@ eval select $mysql_errno as "after_!errno_masked_error" ; ...@@ -296,7 +321,8 @@ eval select $mysql_errno as "after_!errno_masked_error" ;
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# Switch the abort on error on and check the effect on $mysql_errno # Switch the abort on error on and check the effect on $mysql_errno
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
--error 1064 --error ER_PARSE_ERROR
garbage ; garbage ;
--enable_abort_on_error --enable_abort_on_error
eval select $mysql_errno as "after_--enable_abort_on_error" ; eval select $mysql_errno as "after_--enable_abort_on_error" ;
...@@ -305,7 +331,8 @@ eval select $mysql_errno as "after_--enable_abort_on_error" ; ...@@ -305,7 +331,8 @@ eval select $mysql_errno as "after_--enable_abort_on_error" ;
# masked failing statements # masked failing statements
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# expected error = response # expected error = response
--error 1146 --error ER_NO_SUCH_TABLE
select 3 from t1 ; select 3 from t1 ;
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
...@@ -568,9 +595,6 @@ echo ; ...@@ -568,9 +595,6 @@ echo ;
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# Illegal use of exec # Illegal use of exec
--error 1
--exec echo "--exec false" | $MYSQL_TEST 2>&1
--error 1 --error 1
--exec echo "--exec " | $MYSQL_TEST 2>&1 --exec echo "--exec " | $MYSQL_TEST 2>&1
...@@ -951,8 +975,6 @@ system echo "hej" > /dev/null; ...@@ -951,8 +975,6 @@ system echo "hej" > /dev/null;
--exec echo "system;" | $MYSQL_TEST 2>&1 --exec echo "system;" | $MYSQL_TEST 2>&1
--error 1 --error 1
--exec echo "system $NONEXISTSINFVAREABLI;" | $MYSQL_TEST 2>&1 --exec echo "system $NONEXISTSINFVAREABLI;" | $MYSQL_TEST 2>&1
--error 1
--exec echo "system false;" | $MYSQL_TEST 2>&1
--disable_abort_on_error --disable_abort_on_error
system NonExistsinfComamdn 2> /dev/null; system NonExistsinfComamdn 2> /dev/null;
...@@ -1370,7 +1392,8 @@ connection default; ...@@ -1370,7 +1392,8 @@ connection default;
let $num= 2; let $num= 2;
while ($num) while ($num)
{ {
--error 1064 --error ER_PARSE_ERROR
failing_statement; failing_statement;
dec $num; dec $num;
...@@ -1429,7 +1452,7 @@ select "this will be executed"; ...@@ -1429,7 +1452,7 @@ select "this will be executed";
# #
# Test zero length result file. Should not pass # Test zero length result file. Should not pass
# #
--exec touch $MYSQLTEST_VARDIR/tmp/zero_length_file.result --exec echo '' > $MYSQLTEST_VARDIR/tmp/zero_length_file.result
--exec echo "echo ok;" > $MYSQLTEST_VARDIR/tmp/query.sql --exec echo "echo ok;" > $MYSQLTEST_VARDIR/tmp/query.sql
--error 1 --error 1
--exec $MYSQL_TEST -x $MYSQLTEST_VARDIR/tmp/query.sql -R $MYSQLTEST_VARDIR/tmp/zero_length_file.result > /dev/null 2>&1 --exec $MYSQL_TEST -x $MYSQLTEST_VARDIR/tmp/query.sql -R $MYSQLTEST_VARDIR/tmp/zero_length_file.result > /dev/null 2>&1
...@@ -1482,7 +1505,8 @@ drop table t1; ...@@ -1482,7 +1505,8 @@ drop table t1;
--error 1 --error 1
--exec $MYSQL_TEST --record -x $MYSQLTEST_VARDIR/tmp/bug11731.sql -R $MYSQLTEST_VARDIR/tmp/bug11731.out 2>&1 --exec $MYSQL_TEST --record -x $MYSQLTEST_VARDIR/tmp/bug11731.sql -R $MYSQLTEST_VARDIR/tmp/bug11731.out 2>&1
# The .out file should be non existent # The .out file should be non existent
--exec test ! -s $MYSQLTEST_VARDIR/tmp/bug11731.out --error 1
--file_exists $MYSQLTEST_VARDIR/tmp/bug11731.out
drop table t1; drop table t1;
...@@ -1503,7 +1527,7 @@ drop table t1; ...@@ -1503,7 +1527,7 @@ drop table t1;
--exec $MYSQL_TEST --record -x $MYSQLTEST_VARDIR/tmp/bug11731.sql -R $MYSQLTEST_VARDIR/tmp/bug11731.out 2>&1 --exec $MYSQL_TEST --record -x $MYSQLTEST_VARDIR/tmp/bug11731.sql -R $MYSQLTEST_VARDIR/tmp/bug11731.out 2>&1
# The .out file should exist # The .out file should exist
--exec test -s $MYSQLTEST_VARDIR/tmp/bug11731.out --file_exists $MYSQLTEST_VARDIR/tmp/bug11731.out
drop table t1; drop table t1;
remove_file $MYSQLTEST_VARDIR/tmp/bug11731.out; remove_file $MYSQLTEST_VARDIR/tmp/bug11731.out;
remove_file $MYSQLTEST_VARDIR/log/bug11731.log; remove_file $MYSQLTEST_VARDIR/log/bug11731.log;
...@@ -1515,14 +1539,17 @@ remove_file $MYSQLTEST_VARDIR/tmp/bug11731.sql; ...@@ -1515,14 +1539,17 @@ remove_file $MYSQLTEST_VARDIR/tmp/bug11731.sql;
# It should be possible to use the command "query" to force mysqltest to # It should be possible to use the command "query" to force mysqltest to
# send the command to the server although it's a builtin mysqltest command. # send the command to the server although it's a builtin mysqltest command.
--error 1064 --error ER_PARSE_ERROR
query sleep; query sleep;
--error 1064 --error ER_PARSE_ERROR
--query sleep --query sleep
# Just an empty query command # Just an empty query command
--error 1065 --error ER_EMPTY_QUERY
query ; query ;
# test for replace_regex # test for replace_regex
...@@ -1915,7 +1942,8 @@ eval $my_stmt; ...@@ -1915,7 +1942,8 @@ eval $my_stmt;
# 8. Ensure that "sorted_result " does not change the semantics of # 8. Ensure that "sorted_result " does not change the semantics of
# "--error ...." or the protocol output after such an expected failure # "--error ...." or the protocol output after such an expected failure
--sorted_result --sorted_result
--error 1146 --error ER_NO_SUCH_TABLE
SELECT '2' as "my_col1",2 as "my_col2" SELECT '2' as "my_col1",2 as "my_col2"
UNION UNION
SELECT '1',1 from t2; SELECT '1',1 from t2;
......
-- source include/have_ndb.inc -- source include/have_ndb.inc
-- source include/not_embedded.inc -- source include/not_embedded.inc
# Bug#41308: Test main.ndb_autodiscover.test doesn't work on Windows due
# to 'grep' calls
# Test is currently disabled on Windows via the next line until this bug
# can be resolved.
--source include/not_windows.inc
--disable_warnings --disable_warnings
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9,t10; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
--enable_warnings --enable_warnings
......
...@@ -293,7 +293,8 @@ STOP SLAVE; ...@@ -293,7 +293,8 @@ STOP SLAVE;
connection master; connection master;
FLUSH LOGS; FLUSH LOGS;
exec cp $MYSQL_TEST_DIR/std_data/bug16266.000001 $MYSQLTEST_VARDIR/log/master-bin.000001; --remove_file $MYSQLTEST_VARDIR/log/master-bin.000001
--copy_file $MYSQL_TEST_DIR/std_data/bug16266.000001 $MYSQLTEST_VARDIR/log/master-bin.000001
# Make the slave to replay the new binlog. # Make the slave to replay the new binlog.
......
...@@ -50,9 +50,7 @@ GRANT CREATE ON mysqltest_db1.* TO mysqltest_dfn@localhost; ...@@ -50,9 +50,7 @@ GRANT CREATE ON mysqltest_db1.* TO mysqltest_dfn@localhost;
CREATE TABLE t1(num_value INT); CREATE TABLE t1(num_value INT);
CREATE TABLE t2(user_str TEXT); CREATE TABLE t2(user_str TEXT);
CREATE TRIGGER wl2818_trg1 BEFORE INSERT ON t1 CREATE TRIGGER wl2818_trg1 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES(CURRENT_USER());
FOR EACH ROW
INSERT INTO t2 VALUES(CURRENT_USER());
# #
# Remove definers from TRG file. # Remove definers from TRG file.
...@@ -61,8 +59,24 @@ CREATE TRIGGER wl2818_trg1 BEFORE INSERT ON t1 ...@@ -61,8 +59,24 @@ CREATE TRIGGER wl2818_trg1 BEFORE INSERT ON t1
--echo --echo
--echo ---> patching t1.TRG... --echo ---> patching t1.TRG...
--exec grep -v 'definers=' $MYSQLTEST_VARDIR/master-data/mysqltest_db1/t1.TRG > $MYSQLTEST_VARDIR/tmp/t1.TRG # Here we remove definers. This is somewhat complex than the original test
--exec mv $MYSQLTEST_VARDIR/tmp/t1.TRG $MYSQLTEST_VARDIR/master-data/mysqltest_db1/t1.TRG # Previously, the test only used grep -v 'definers=' t1.TRG, but grep is not
# portable and we have to load the file into a table, exclude the definers line,
# then load the data to an outfile to accomplish the same effect
--disable_query_log
--connection default
CREATE TABLE patch (a blob);
eval LOAD DATA LOCAL INFILE '$MYSQLTEST_VARDIR/master-data/mysqltest_db1/t1.TRG' INTO TABLE patch;
# remove original t1.TRG file so SELECT INTO OUTFILE won't fail
--remove_file $MYSQLTEST_VARDIR/master-data/mysqltest_db1/t1.TRG
eval SELECT SUBSTRING_INDEX(a,'definers=',1) INTO OUTFILE
'$MYSQLTEST_VARDIR/master-data/mysqltest_db1/t1.TRG'
FROM patch;
DROP TABLE patch;
--connection wl2818_definer_con
--enable_query_log
# #
# Create a new trigger. # Create a new trigger.
......
...@@ -1726,7 +1726,6 @@ bool agg_item_set_converter(DTCollation &coll, const char *fname, ...@@ -1726,7 +1726,6 @@ bool agg_item_set_converter(DTCollation &coll, const char *fname,
bool agg_item_charsets(DTCollation &coll, const char *fname, bool agg_item_charsets(DTCollation &coll, const char *fname,
Item **args, uint nargs, uint flags, int item_sep) Item **args, uint nargs, uint flags, int item_sep)
{ {
Item **arg, *safe_args[2];
if (agg_item_collations(coll, fname, args, nargs, flags, item_sep)) if (agg_item_collations(coll, fname, args, nargs, flags, item_sep))
return TRUE; return TRUE;
......
...@@ -976,7 +976,7 @@ void Log_event::print_header(FILE* file, PRINT_EVENT_INFO* print_event_info) ...@@ -976,7 +976,7 @@ void Log_event::print_header(FILE* file, PRINT_EVENT_INFO* print_event_info)
fputc('#', file); fputc('#', file);
print_timestamp(file); print_timestamp(file);
fprintf(file, " server id %d end_log_pos %s ", server_id, fprintf(file, " server id %lu end_log_pos %s ", server_id,
llstr(log_pos,llbuff)); llstr(log_pos,llbuff));
/* mysqlbinlog --hexdump */ /* mysqlbinlog --hexdump */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment