mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
c0cd2742af
The --hexdump option crashed mysqlbinlog when used together with the --read-from-remote-server option due to use of uninitialized memory. Since Log_event::print_header() relies on temp_buf to be initialized when the --hexdump option is present, dump_remote_log_entries() was fixed to setup temp_buf to point to the start of a binlog event as done in dump_local_log_entries(). The root cause of this bug is identical to the one for bug #17654. The latter was fixed in 5.1 and up, so this patch is backport of the patches for bug #17654 to 5.0. Only 5.0 needs a changelog entry. client/mysqlbinlog.cc: Fixed dump_remote_log_entries() so that temp_buf is initialized as it may be used later by Log_event::print_header() if the --hexdump option is present. mysql-test/r/mysqlbinlog.result: Added a test case for bug #41943. mysql-test/t/mysqlbinlog.test: Added a test case for bug #41943.
385 lines
12 KiB
Text
385 lines
12 KiB
Text
set timestamp=1000000000;
|
|
drop table if exists t1,t2,t3,t4,t5,t03,t04;
|
|
create table t1 (word varchar(20));
|
|
create table t2 (id int auto_increment not null primary key);
|
|
insert into t1 values ("abirvalg");
|
|
insert into t2 values ();
|
|
load data infile '../std_data_ln/words.dat' into table t1;
|
|
load data infile '../std_data_ln/words.dat' into table t1;
|
|
load data infile '../std_data_ln/words.dat' into table t1;
|
|
load data infile '../std_data_ln/words.dat' into table t1;
|
|
load data infile '../std_data_ln/words.dat' into table t1;
|
|
insert into t1 values ("Alas");
|
|
flush logs;
|
|
|
|
--- Local --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
ROLLBACK/*!*/;
|
|
use test/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
|
SET @@session.sql_mode=0/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
drop table if exists t1,t2,t3,t4,t5,t03,t04
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
create table t1 (word varchar(20))
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
create table t2 (id int auto_increment not null primary key)
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
insert into t1 values ("abirvalg")
|
|
/*!*/;
|
|
SET INSERT_ID=1/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
insert into t2 values ()
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO table t1
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO table t1
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO table t1
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO table t1
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
|
|
--- Broken LOAD DATA --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
use test/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
|
SET @@session.sql_mode=0/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
insert into t1 values ("Alas")
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
|
|
--- --database --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
ROLLBACK/*!*/;
|
|
SET INSERT_ID=1/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
|
|
--- --position --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
use test/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
|
SET @@session.sql_mode=0/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
insert into t1 values ("Alas")
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
|
|
--- Remote --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
ROLLBACK/*!*/;
|
|
use test/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
|
SET @@session.sql_mode=0/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
drop table if exists t1,t2,t3,t4,t5,t03,t04
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
create table t1 (word varchar(20))
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
create table t2 (id int auto_increment not null primary key)
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
insert into t1 values ("abirvalg")
|
|
/*!*/;
|
|
SET INSERT_ID=1/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
insert into t2 values ()
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO table t1
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO table t1
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO table t1
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO table t1
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
|
|
--- Broken LOAD DATA --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
use test/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
|
SET @@session.sql_mode=0/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
insert into t1 values ("Alas")
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
|
|
--- --database --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
ROLLBACK/*!*/;
|
|
SET INSERT_ID=1/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
|
|
--- --position --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
use test/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
|
SET @@session.sql_mode=0/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
insert into t1 values ("Alas")
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
|
|
--- reading stdin --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
ROLLBACK/*!*/;
|
|
use test/*!*/;
|
|
SET TIMESTAMP=1108844556/*!*/;
|
|
BEGIN
|
|
/*!*/;
|
|
SET TIMESTAMP=1108844555/*!*/;
|
|
insert t1 values (1)
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
use test/*!*/;
|
|
SET TIMESTAMP=1108844556/*!*/;
|
|
BEGIN
|
|
/*!*/;
|
|
SET TIMESTAMP=1108844555/*!*/;
|
|
insert t1 values (1)
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
drop table t1,t2;
|
|
flush logs;
|
|
select * from t5 /* must be (1),(1) */;
|
|
a
|
|
1
|
|
1
|
|
drop table t5;
|
|
flush logs;
|
|
create table t5 (c1 int, c2 varchar(128) character set latin1 not null);
|
|
insert into t5 values (1, date_format('2001-01-01','%W'));
|
|
set lc_time_names=de_DE;
|
|
insert into t5 values (2, date_format('2001-01-01','%W'));
|
|
set lc_time_names=en_US;
|
|
insert into t5 values (3, date_format('2001-01-01','%W'));
|
|
select * from t5 order by c1;
|
|
c1 c2
|
|
1 Monday
|
|
2 Montag
|
|
3 Monday
|
|
flush logs;
|
|
drop table t5;
|
|
select * from t5 order by c1;
|
|
c1 c2
|
|
1 Monday
|
|
2 Montag
|
|
3 Monday
|
|
drop table t5;
|
|
drop procedure if exists p1;
|
|
flush logs;
|
|
create procedure p1()
|
|
begin
|
|
select 1;
|
|
end;
|
|
//
|
|
flush logs;
|
|
call p1();
|
|
1
|
|
1
|
|
drop procedure p1;
|
|
call p1();
|
|
ERROR 42000: PROCEDURE test.p1 does not exist
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
use test/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
|
SET @@session.sql_mode=0/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
|
|
begin
|
|
select 1;
|
|
end
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
call p1();
|
|
1
|
|
1
|
|
drop procedure p1;
|
|
flush logs;
|
|
create table t1 (a varchar(64) character set utf8);
|
|
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
|
set character_set_database=koi8r;
|
|
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
|
set character_set_database=latin1;
|
|
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
|
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
|
set character_set_database=koi8r;
|
|
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
|
set character_set_database=latin1;
|
|
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
|
load data infile '../std_data_ln/loaddata6.dat' into table t1 character set koi8r;
|
|
select hex(a) from t1;
|
|
hex(a)
|
|
C3BF
|
|
D0AA
|
|
C3BF
|
|
C3BF
|
|
D0AA
|
|
C3BF
|
|
D0AA
|
|
drop table t1;
|
|
flush logs;
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
use test/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
|
SET @@session.sql_mode=0/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
create table t1 (a varchar(64) character set utf8)
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO table t1
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.collation_database=7/*!*/;
|
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO table t1
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.collation_database=DEFAULT/*!*/;
|
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO table t1
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO table t1
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.collation_database=7/*!*/;
|
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-a-0' INTO table t1
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.collation_database=DEFAULT/*!*/;
|
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-b-0' INTO table t1
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
load data LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-c-0' INTO table t1 character set koi8r
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
drop table t1
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
CREATE TABLE t1 (c1 CHAR(10));
|
|
FLUSH LOGS;
|
|
INSERT INTO t1 VALUES ('0123456789');
|
|
FLUSH LOGS;
|
|
DROP TABLE t1;
|
|
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;
|
|
CREATE TABLE t1(a INT);
|
|
INSERT INTO t1 VALUES(connection_id());
|
|
FLUSH LOGS;
|
|
DROP TABLE t1;
|
|
1
|
|
DROP TABLE t1;
|
|
shell> mysqlbinlog std_data/corrupt-relay-bin.000624 > var/tmp/bug31793.sql
|
|
SET @@global.server_id= 4294967295;
|
|
RESET MASTER;
|
|
FLUSH LOGS;
|
|
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;
|
|
RESET MASTER;
|
|
FLUSH LOGS;
|
|
End of 5.0 tests
|