Merge mysql.com:/home/bk/MERGE/mysql-4.1-merge
into mysql.com:/home/bk/MERGE/mysql-5.0-merge BitKeeper/triggers/post-commit: Auto merged mysql-test/t/func_gconcat.test: Auto merged sql/item_sum.cc: Auto merged sql/sql_repl.cc: Auto merged sql/log_event.h: Manual merge sql/slave.cc: Manual merge
This commit is contained in:
commit
1613ad2c98
@ -35,9 +35,17 @@ fi
|
|||||||
|
|
||||||
CHANGESET=`bk -R prs -r+ -h -d':P:::I:' ChangeSet`
|
CHANGESET=`bk -R prs -r+ -h -d':P:::I:' ChangeSet`
|
||||||
CSETKEY=`bk -R prs -r+ -h -d':KEY:' ChangeSet`
|
CSETKEY=`bk -R prs -r+ -h -d':KEY:' ChangeSet`
|
||||||
BUG=`bk -R prs -r+ -h -d':C:' ChangeSet | sed -ne 's/^.*[Bb][Uu][Gg] *# *\([0-9][0-9]*\).*$/\1/p'`
|
#
|
||||||
WL=`bk -R prs -r+ -h -d':C:' ChangeSet | sed -ne 's/^.*[Ww][Ll] *# *\([0-9][0-9]*\).*$/ WL#\1/p'`
|
# composing subject lines of commit mails.
|
||||||
|
# if a fix targets to a WL and there is a bug referred
|
||||||
|
# then X-Bug mail header will contain the first found bug's number
|
||||||
|
#
|
||||||
|
BUG=`bk -R prs -r+ -h -d':C:' ChangeSet | \
|
||||||
|
sed -ne 's/[Bb][Uu][Gg] *# *\([0-9][0-9]*\).*$/BUG#\1/
|
||||||
|
s/.*BUG#\([0-9][0-9]*\)/\1/p'`
|
||||||
|
WL=`bk -R prs -r+ -h -d':C:' ChangeSet | \
|
||||||
|
sed -ne 's/[Ww][Ll] *# *\([0-9][0-9]*\).*$/WL#\1/
|
||||||
|
s/.*\(WL#[0-9][0-9]*\)/ \1/p'`
|
||||||
if [ "$BUG" = "" ]
|
if [ "$BUG" = "" ]
|
||||||
then
|
then
|
||||||
TO=dev-public@mysql.com
|
TO=dev-public@mysql.com
|
||||||
|
19
mysql-test/r/rpl_packet.result
Normal file
19
mysql-test/r/rpl_packet.result
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
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 database if exists DB_NAME_OF_MAX_LENGTH_AKA_NAME_LEN_64_BYTES_____________________;
|
||||||
|
create database DB_NAME_OF_MAX_LENGTH_AKA_NAME_LEN_64_BYTES_____________________;
|
||||||
|
select @@net_buffer_length, @@max_allowed_packet;
|
||||||
|
@@net_buffer_length @@max_allowed_packet
|
||||||
|
1024 1024
|
||||||
|
create table `t1` (`f1` LONGTEXT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO `t1`(`f1`) VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1023');
|
||||||
|
INSERT INTO `t1`(`f1`) VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1024');
|
||||||
|
ERROR 08S01: Got a packet bigger than 'max_allowed_packet' bytes
|
||||||
|
select count(*) from `DB_NAME_OF_MAX_LENGTH_AKA_NAME_LEN_64_BYTES_____________________`.`t1` /* must be 1 */;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
drop database DB_NAME_OF_MAX_LENGTH_AKA_NAME_LEN_64_BYTES_____________________;
|
1
mysql-test/t/rpl_packet-master.opt
Normal file
1
mysql-test/t/rpl_packet-master.opt
Normal file
@ -0,0 +1 @@
|
|||||||
|
-O max_allowed_packet=1024 -O net_buffer_length=1024
|
1
mysql-test/t/rpl_packet-slave.opt
Normal file
1
mysql-test/t/rpl_packet-slave.opt
Normal file
@ -0,0 +1 @@
|
|||||||
|
-O max_allowed_packet=1024 -O net_buffer_length=1024
|
43
mysql-test/t/rpl_packet.test
Normal file
43
mysql-test/t/rpl_packet.test
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#
|
||||||
|
# Check replication protocol packet size handling
|
||||||
|
# Bug#19402 SQL close to the size of the max_allowed_packet fails on slave
|
||||||
|
#
|
||||||
|
|
||||||
|
# max-out size db name
|
||||||
|
source include/master-slave.inc;
|
||||||
|
|
||||||
|
let $db= DB_NAME_OF_MAX_LENGTH_AKA_NAME_LEN_64_BYTES_____________________;
|
||||||
|
disable_warnings;
|
||||||
|
eval drop database if exists $db;
|
||||||
|
enable_warnings;
|
||||||
|
eval create database $db;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
select @@net_buffer_length, @@max_allowed_packet;
|
||||||
|
disconnect master;
|
||||||
|
|
||||||
|
# alas, can't use eval here; if db name changed apply the change here
|
||||||
|
connect (master,localhost,root,,DB_NAME_OF_MAX_LENGTH_AKA_NAME_LEN_64_BYTES_____________________);
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
create table `t1` (`f1` LONGTEXT) ENGINE=MyISAM;
|
||||||
|
|
||||||
|
INSERT INTO `t1`(`f1`) VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1023');
|
||||||
|
|
||||||
|
--error 1153
|
||||||
|
INSERT INTO `t1`(`f1`) VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1024');
|
||||||
|
|
||||||
|
save_master_pos;
|
||||||
|
|
||||||
|
connection slave;
|
||||||
|
sync_with_master;
|
||||||
|
eval select count(*) from `$db`.`t1` /* must be 1 */;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
eval drop database $db;
|
||||||
|
save_master_pos;
|
||||||
|
|
||||||
|
connection slave;
|
||||||
|
sync_with_master;
|
||||||
|
|
||||||
|
# End of tests
|
@ -200,6 +200,14 @@ struct sql_ex_info
|
|||||||
#define EXECUTE_LOAD_QUERY_EXTRA_HEADER_LEN (4 + 4 + 4 + 1)
|
#define EXECUTE_LOAD_QUERY_EXTRA_HEADER_LEN (4 + 4 + 4 + 1)
|
||||||
#define EXECUTE_LOAD_QUERY_HEADER_LEN (QUERY_HEADER_LEN + EXECUTE_LOAD_QUERY_EXTRA_HEADER_LEN)
|
#define EXECUTE_LOAD_QUERY_HEADER_LEN (QUERY_HEADER_LEN + EXECUTE_LOAD_QUERY_EXTRA_HEADER_LEN)
|
||||||
|
|
||||||
|
/*
|
||||||
|
Max number of possible extra bytes in a replication event compared to a
|
||||||
|
packet (i.e. a query) sent from client to master.
|
||||||
|
*/
|
||||||
|
#define MAX_LOG_EVENT_HEADER (LOG_EVENT_HEADER_LEN + /* write_header */ \
|
||||||
|
QUERY_HEADER_LEN + /* write_data */ \
|
||||||
|
NAME_LEN + 1)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Event header offsets;
|
Event header offsets;
|
||||||
these point to places inside the fixed header.
|
these point to places inside the fixed header.
|
||||||
|
21
sql/slave.cc
21
sql/slave.cc
@ -2895,6 +2895,13 @@ static int init_slave_thread(THD* thd, SLAVE_THD_TYPE thd_type)
|
|||||||
SYSTEM_THREAD_SLAVE_SQL : SYSTEM_THREAD_SLAVE_IO;
|
SYSTEM_THREAD_SLAVE_SQL : SYSTEM_THREAD_SLAVE_IO;
|
||||||
thd->security_ctx->skip_grants();
|
thd->security_ctx->skip_grants();
|
||||||
my_net_init(&thd->net, 0);
|
my_net_init(&thd->net, 0);
|
||||||
|
/*
|
||||||
|
Adding MAX_LOG_EVENT_HEADER_LEN to the max_allowed_packet on all
|
||||||
|
slave threads, since a replication event can become this much larger
|
||||||
|
than the corresponding packet (query) sent from client to master.
|
||||||
|
*/
|
||||||
|
thd->variables.max_allowed_packet= global_system_variables.max_allowed_packet
|
||||||
|
+ MAX_LOG_EVENT_HEADER; /* note, incr over the global not session var */
|
||||||
thd->net.read_timeout = slave_net_timeout;
|
thd->net.read_timeout = slave_net_timeout;
|
||||||
thd->slave_thread = 1;
|
thd->slave_thread = 1;
|
||||||
set_slave_thread_options(thd);
|
set_slave_thread_options(thd);
|
||||||
@ -3483,11 +3490,19 @@ slave_begin:
|
|||||||
thd->proc_info = "Connecting to master";
|
thd->proc_info = "Connecting to master";
|
||||||
// we can get killed during safe_connect
|
// we can get killed during safe_connect
|
||||||
if (!safe_connect(thd, mysql, mi))
|
if (!safe_connect(thd, mysql, mi))
|
||||||
|
{
|
||||||
sql_print_information("Slave I/O thread: connected to master '%s@%s:%d',\
|
sql_print_information("Slave I/O thread: connected to master '%s@%s:%d',\
|
||||||
replication started in log '%s' at position %s", mi->user,
|
replication started in log '%s' at position %s", mi->user,
|
||||||
mi->host, mi->port,
|
mi->host, mi->port,
|
||||||
IO_RPL_LOG_NAME,
|
IO_RPL_LOG_NAME,
|
||||||
llstr(mi->master_log_pos,llbuff));
|
llstr(mi->master_log_pos,llbuff));
|
||||||
|
/*
|
||||||
|
Adding MAX_LOG_EVENT_HEADER_LEN to the max_packet_size on the I/O
|
||||||
|
thread, since a replication event can become this much larger than
|
||||||
|
the corresponding packet (query) sent from client to master.
|
||||||
|
*/
|
||||||
|
mysql->net.max_packet_size= thd->net.max_packet_size+= MAX_LOG_EVENT_HEADER;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sql_print_information("Slave I/O thread killed while connecting to master");
|
sql_print_information("Slave I/O thread killed while connecting to master");
|
||||||
|
@ -430,6 +430,12 @@ impossible position";
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
packet->set("\0", 1, &my_charset_bin);
|
packet->set("\0", 1, &my_charset_bin);
|
||||||
|
/*
|
||||||
|
Adding MAX_LOG_EVENT_HEADER_LEN, since a binlog event can become
|
||||||
|
this larger than the corresponding packet (query) sent
|
||||||
|
from client to master.
|
||||||
|
*/
|
||||||
|
thd->variables.max_allowed_packet+= MAX_LOG_EVENT_HEADER;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
We can set log_lock now, it does not move (it's a member of
|
We can set log_lock now, it does not move (it's a member of
|
||||||
|
Loading…
x
Reference in New Issue
Block a user