1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

BUG#17654 : --read-from-remote-server causes core

This patch corrects a problem encountered when reading the binlog from a remote
host. The application was crashing because the buffer variable (temp_buf) in 
log_event was not pointing to the incoming data. For a normal file read, this 
buffer is allocated by a previous call of read_log_event. However, when reading
from a remote host, the first call to read_log_event is not executed therefore
no buffer is allocated. Furthermore, there is no need to allocate a new buffer 
because the incoming stream is what needs to be read. 

This patch adds the call to initialize the temp_buf variable if reading from a 
remote host. It also adds a check at destroy time to ensure the temp_buf is not
freed if reading from a remote host.


client/mysqlbinlog.cc:
  BUG#17654 : --read-from-remote-server causes core
  
  This patch corrects a problem when reading from a remote host. The temp_buf 
  variable of the log_event class is undefined. This patch assigns the temp_buf
  variable to the address of the incoming stream. This allows the print functions
  to print the binlog events correctly.
mysql-test/r/rpl_row_mysqlbinlog.result:
  BUG#17654 : --read-from-remote-server causes core
  
  This patch adds the results for the test that were disabled when the bug report
  was investigated. The patch also adds an additional test was added to ensure 
  the output of reading from a remote host is the same as reading from a local file.
mysql-test/t/rpl_row_mysqlbinlog.test:
  BUG#17654 : --read-from-remote-server causes core
  
  This patch enables the portions of the test that were disabled when the bug report
  was investigated. The patch also adds an additional test was added to ensure 
  the output of reading from a remote host is the same as reading from a local file.
This commit is contained in:
unknown
2007-05-22 10:50:32 -04:00
parent c63086259a
commit b626d5d78e
3 changed files with 157 additions and 40 deletions

View File

@ -190,6 +190,75 @@ DELIMITER ;
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
--- Test 4 Second Remote test --
DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t3;
stop slave;
reset master;
reset slave;
start slave;
SELECT COUNT(*) from t1;
COUNT(*)
352
SELECT COUNT(*) from t2;
COUNT(*)
500
SELECT COUNT(*) from t3;
COUNT(*)
500
SELECT * FROM t1 ORDER BY word LIMIT 5;
word
Aarhus
Aarhus
Aarhus
Aarhus
Aarhus
SELECT * FROM t2 ORDER BY id LIMIT 5;
id
1
2
3
4
5
SELECT c1, c3, c4, c5 FROM t3 ORDER BY c1 LIMIT 5;
c1 c3 c4 c5
1 2006-02-22 00:00:00 Tested in Texas 2.2
2 2006-02-22 00:00:00 Tested in Texas 4.4
3 2006-02-22 00:00:00 Tested in Texas 6.6
4 2006-02-22 00:00:00 Tested in Texas 8.8
5 2006-02-22 00:00:00 Tested in Texas 11
SELECT COUNT(*) from t1;
COUNT(*)
352
SELECT COUNT(*) from t2;
COUNT(*)
500
SELECT COUNT(*) from t3;
COUNT(*)
500
SELECT * FROM t1 ORDER BY word LIMIT 5;
word
Aarhus
Aarhus
Aarhus
Aarhus
Aarhus
SELECT * FROM t2 ORDER BY id LIMIT 5;
id
1
2
3
4
5
SELECT c1, c3, c4, c5 FROM t3 ORDER BY c1 LIMIT 5;
c1 c3 c4 c5
1 2006-02-22 00:00:00 Tested in Texas 2.2
2 2006-02-22 00:00:00 Tested in Texas 4.4
3 2006-02-22 00:00:00 Tested in Texas 6.6
4 2006-02-22 00:00:00 Tested in Texas 8.8
5 2006-02-22 00:00:00 Tested in Texas 11
--- Test 5 LOAD DATA --
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
@ -273,4 +342,11 @@ HEX(f)
835C
--- Test cleanup --
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a INT NOT NULL KEY, b INT);
INSERT INTO t1 VALUES(1,1);
SELECT * FROM t1;
a b
1 1
FLUSH LOGS;
DROP TABLE IF EXISTS t1, t2, t3, t04, t05, t4, t5;