Commit 82b605ea authored by Vladislav Vaintroub's avatar Vladislav Vaintroub

merge

parents 870e78c8 e8e85ed2
......@@ -442,6 +442,7 @@ Exit_status Load_log_processor::process_first_event(const char *bname,
{
error("Could not construct local filename %s%s.",
target_dir_name,bname);
my_free(fname, MYF(0));
delete ce;
DBUG_RETURN(ERROR_STOP);
}
......@@ -449,9 +450,15 @@ Exit_status Load_log_processor::process_first_event(const char *bname,
rec.fname= fname;
rec.event= ce;
/*
fname is freed in process_event()
after Execute_load_query_log_event or Execute_load_log_event
will have been processed, otherwise in Load_log_processor::destroy()
*/
if (set_dynamic(&file_names, (uchar*)&rec, file_id))
{
error("Out of memory.");
my_free(fname, MYF(0));
delete ce;
DBUG_RETURN(ERROR_STOP);
}
......@@ -831,7 +838,17 @@ Exit_status process_event(PRINT_EVENT_INFO *print_event_info, Log_event *ev,
print_event_info->common_header_len=
glob_description_event->common_header_len;
ev->print(result_file, print_event_info);
ev->temp_buf= 0; // as the event ref is zeroed
if (!remote_opt)
{
ev->free_temp_buf(); // free memory allocated in dump_local_log_entries
}
else
{
/*
disassociate but not free dump_remote_log_entries time memory
*/
ev->temp_buf= 0;
}
/*
We don't want this event to be deleted now, so let's hide it (I
(Guilhem) should later see if this triggers a non-serious Valgrind
......
......@@ -81,4 +81,3 @@ parts.partition_syntax_ndb
parts.partition_alter1_1_2_ndb
parts.partition_basic_ndb
parts.partition_mgm_lc0_ndb
......@@ -179,7 +179,9 @@ begin
end|
delimiter ;|
--disable_warnings
insert into t1 (last_id) values (0);
--enable_warnings
drop trigger t1_bi;
......@@ -512,7 +514,9 @@ set sql_log_bin=0;
insert into t2 (id) values(5),(6),(7);
delete from t2 where id>=5;
set sql_log_bin=1;
--disable_warnings
insert into t1 select insid();
--enable_warnings
select * from t1 order by id;
select * from t2 order by id;
......
......@@ -22,6 +22,7 @@ source include/show_slave_status2.inc;
reset slave;
source include/show_slave_status2.inc;
change master to master_user='root';
start slave;
sync_with_master;
source include/show_slave_status2.inc;
......
......@@ -36,7 +36,7 @@ SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3;
save_master_pos;
connection slave;
sync_with_master;
sleep 5;
--source include/wait_for_ndb_to_binlog.inc
--echo
--echo **** Data Insert Validation Slave Section test.t1 ****
--echo
......@@ -56,12 +56,10 @@ UPDATE t1 set data=repeat('c',17*1024) where c1 = 2;
--echo
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
# Sleep is needed for NDB to allow time for
# Injector thread to populate the bin log.
save_master_pos;
connection slave;
sync_with_master;
sleep 5;
--source include/wait_for_ndb_to_binlog.inc
--echo
--echo **** Data Update Validation Slave Section test.t1 ****
--echo
......@@ -132,7 +130,7 @@ FROM test.t2 WHERE c1=2;
save_master_pos;
connection slave;
sync_with_master;
sleep 5;
--source include/wait_for_ndb_to_binlog.inc
--echo
--echo **** Data Insert Validation Slave Section test.t2 ****
--echo
......@@ -155,12 +153,10 @@ SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
FROM test.t2 WHERE c1=1;
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
FROM test.t2 WHERE c1=2;
# Sleep is needed for NDB to allow time for
# Injector thread to populate the bin log.
save_master_pos;
connection slave;
sync_with_master;
sleep 5;
--source include/wait_for_ndb_to_binlog.inc
--echo
--echo **** Data Update Validation Slave Section test.t2 ****
--echo
......
......@@ -3,10 +3,7 @@
# Original Date: Aug/15/2005 #
# Update: 08/29/2005 Comment out sleep. Only needed for debugging #
#############################################################################
# Note: Many lines are commented out in this test case. These were used for #
# creating the test case and debugging and are being left for #
# debugging, but they can not be used for the regular testing as the #
# Time changes and is not deteministic, so instead we dump both the #
# Note: Time changes and is not deteministic, so instead we dump both the #
# master and slave and diff the dumps. If the dumps differ then the #
# test case will fail. To run during diff failuers, comment out the #
# diff. #
......@@ -26,7 +23,6 @@ DROP TABLE IF EXISTS test.t1;
--enable_warnings
eval CREATE TABLE test.t1 (a INT NOT NULL AUTO_INCREMENT, c CHAR(16),PRIMARY KEY(a))ENGINE=$engine_type;
delimiter |;
......@@ -44,33 +40,24 @@ END|
delimiter ;|
INSERT INTO test.t1 VALUES (null,test.f1()),(null,test.f1()),(null,test.f1());
sleep 6;
INSERT INTO test.t1 VALUES (null,test.f1()),(null,test.f1()),(null,test.f1());
sleep 6;
#Select in this test are used for debugging
#select * from test.t1;
#connection slave;
#select * from test.t1;
connection master;
SET AUTOCOMMIT=0;
START TRANSACTION;
INSERT INTO test.t1 VALUES (null,test.f1());
ROLLBACK;
SET AUTOCOMMIT=1;
#select * from test.t1;
#sleep 6;
#connection slave;
#select * from test.t1;
#connection master;
#used for debugging
#show binlog events;
# Sync master and slave for all engines except NDB
if (`SELECT UPPER(LEFT('$engine_type', 3)) != 'NDB'`) {
sync_slave_with_master;
connection master;
}
# Sync master and slave for NDB engine
let $wait_time= 6;
--source include/wait_for_ndb_to_binlog.inc
# time to dump the databases and so we can see if they match
# Time to dump the databases and so we can see if they match
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/func003_master.sql
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/func003_slave.sql
......@@ -87,5 +74,8 @@ DROP TABLE test.t1;
diff_files $MYSQLTEST_VARDIR/tmp/func003_master.sql $MYSQLTEST_VARDIR/tmp/func003_slave.sql;
# Clean up
remove_file $MYSQLTEST_VARDIR/tmp/func003_master.sql;
remove_file $MYSQLTEST_VARDIR/tmp/func003_slave.sql;
# End of 5.0 test case
......@@ -41,10 +41,7 @@ CALL test.p2();
SELECT release_lock("test");
SELECT * FROM test.t1;
#show binlog events;
# Added sleep for use with NDB to ensure that
# the injector thread will populate log before
# we switch to the slave.
sleep 5;
--source include/wait_for_ndb_to_binlog.inc
sync_slave_with_master;
connection slave;
SELECT * FROM test.t1;
......
......@@ -68,8 +68,8 @@ enable_query_log;
connection slave;
lock tables t1 read;
start slave;
#hope this is long enough for I/O thread to fetch over 16K relay log data
sleep 3;
connection master;
--source include/sync_slave_io_with_master.inc
unlock tables;
#test handling of aborted connection in the middle of update
......
......@@ -35,9 +35,8 @@ INSERT INTO test.t2 VALUES (1, 0.0);
#show binlog events;
select * from test.t1;
select * from test.t2;
# Have to sleep for a few seconds to allow
# NDB injector thread to populate binlog
sleep 10;
let $wait_time= 10;
--source include/wait_for_ndb_to_binlog.inc
sync_slave_with_master;
connection slave;
select * from test.t1;
......
......@@ -6,12 +6,29 @@
# Since we expect STOP SLAVE to produce a warning as the slave is
# stopped (the server was started with skip-slave-start), we disable
# warnings when doing STOP SLAVE.
#
# $no_change_master If true, no change master will be done nor any reset slave.
# This is to avoid touching the relay-log.info file allowing
# the test to create one itself.
# $skip_slave_start If true, the slave will not be started
connection slave;
#we expect STOP SLAVE to produce a warning as the slave is stopped
#(the server was started with skip-slave-start)
--disable_warnings
stop slave;
--disable_query_log
if (!$no_change_master) {
eval CHANGE MASTER TO MASTER_USER='root',
MASTER_CONNECT_RETRY=1,
MASTER_HOST='127.0.0.1',
MASTER_PORT=$MASTER_MYPORT;
}
--enable_query_log
source include/wait_for_slave_to_stop.inc;
--enable_warnings
connection master;
--disable_warnings
--disable_query_log
......@@ -20,17 +37,39 @@ use test;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
--enable_warnings
reset master;
--disable_query_log
reset slave;
if (!$no_change_master) {
reset slave;
}
--enable_query_log
connection slave;
reset slave;
--disable_warnings
# the first RESET SLAVE may produce a warning about non-existent
# 'ndb_apply_status' table, because this table is created
# asynchronously at the server startup and may not exist yet
# if RESET SLAVE comes too soon after the server startup
if (!$no_change_master) {
reset slave;
}
--enable_warnings
# Clean up old test tables
--disable_warnings
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
--enable_warnings
--disable_query_log
#eval CHANGE MASTER TO MASTER_USER='root',
# MASTER_CONNECT_RETRY=1,
# MASTER_HOST='127.0.0.1',
# MASTER_PORT=$MASTER_MYPORT;
reset master;
--enable_query_log
start slave;
source include/wait_for_slave_to_start.inc;
if (!$skip_slave_start) {
start slave;
source include/wait_for_slave_to_start.inc;
}
# Replication tests need binlog
#
# $skip_slave_start If true, the slave will not be started
source include/have_log_bin.inc;
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
......@@ -8,7 +10,10 @@ connect (slave1,127.0.0.1,root,,test,$SLAVE_MYPORT,);
-- source include/master-slave-reset.inc
connection master;
sync_slave_with_master;
if (!$skip_slave_start) {
connection master;
sync_slave_with_master;
}
# Set the default connection to 'master'
connection master;
--require r/not_ndb_default.require
disable_query_log;
select convert(@@table_type using latin1) NOT IN ("ndbcluster","NDBCLUSTER") as "TRUE";
select convert(@@storage_engine using latin1) NOT IN ("ndbcluster","NDBCLUSTER") as "TRUE";
enable_query_log;
# ==== Purpose ====
#
# Several test primitives from mysql-test/extra/rpl_tests
# shared for test cases for MyISAM, InnoDB, NDB and other
# engines. But for NDB all events will be added by NDB
# injector and now there are no way to detect the state of
# NDB injector therefore this primitive waits 5 sec
# if engine type is NDB.
# In future that should be fixed by waiting of proper
# state of NDB injector.
#
# ==== Usage ====
#
# let $engine_type= NDB;
# --source include/wait_for_ndb_to_binlog.inc
#
# ==== Parameters =====
#
# $engine_type
# Type of engine. If type is NDB then it waits $wait_time sec
#
# $wait_time
# Test will wait $wait_time seconds
let $_wait_time= 5;
if (!$wait_time) {
let $_wait_time= $wait_time;
}
if (`SELECT UPPER(LEFT('$engine_type',3)) = 'NDB'`) {
while (!$_wait_time) {
let $_wait_time_internal= 10;
while (!$_wait_time_internal) {
sleep 0.1;
dec $_wait_time_internal;
}
dec $_wait_time;
}
}
......@@ -2,13 +2,16 @@
#
# 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
# Waits until the show statement ($show_statement) has one or all of the
# rows of the result set for the field ($field) a value which fulfils
# a condition ($condition), or the operation times out.
#
#
# USAGE
#
# All rows of the result must fulfil the condition if $all_rows_fulfil is 1
# else at least one of the result must fulfil the condition.
# let $wait_for_all= 1;
# let $show_statement= SHOW PROCESSLIST;
# let $field= State;
# let $condition= = 'Updating';
......@@ -46,8 +49,11 @@ 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`)
if (`SELECT '$wait_for_all' != '1'`)
{
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;
......@@ -66,7 +72,33 @@ while (`SELECT UNIX_TIMESTAMP() <= $max_end_time AND $found = 0`)
}
inc $rowno;
}
}
}
if (`SELECT '$wait_for_all' = '1'`)
{
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' = 'No such row'`)
{
let $found= 1;
}
if (`SELECT $found = 0 AND NOT '$field_value' $condition`)
{
let process_result= 0;
}
inc $rowno;
}
}
}
if (!$found)
{
echo # Timeout in include/wait_show_condition.inc for $wait_condition;
......
......@@ -4024,15 +4024,26 @@ sub mysqld_arguments ($$$$) {
}
else
{
if ($mysql_version_id < 50200)
{
mtr_add_arg($args, "%s--master-user=root", $prefix);
mtr_add_arg($args, "%s--master-connect-retry=1", $prefix);
mtr_add_arg($args, "%s--master-host=127.0.0.1", $prefix);
mtr_add_arg($args, "%s--master-password=", $prefix);
mtr_add_arg($args, "%s--master-port=%d", $prefix,
$master->[0]->{'port'}); # First master
}
# NOTE: the backport (see BUG#48048) originally removed the
# commented out lines below. However, given that they are
# protected with a version check (< 50200) now, it should be
# safe to keep them. The problem is that the backported patch
# was into a 5.1 GA codebase - mysql-5.1-rep+2 tree - so
# version is 501XX, consequently check becomes worthless. It
# should be safe to uncomment them when merging up to 5.5.
#
# RQG semisync test runs on the 5.1 GA tree and needs MTR v1.
# This was causing the test to fail (slave would not start
# due to unrecognized option(s)).
# if ($mysql_version_id < 50200)
# {
# mtr_add_arg($args, "%s--master-user=root", $prefix);
# mtr_add_arg($args, "%s--master-connect-retry=1", $prefix);
# mtr_add_arg($args, "%s--master-host=127.0.0.1", $prefix);
# mtr_add_arg($args, "%s--master-password=", $prefix);
# mtr_add_arg($args, "%s--master-port=%d", $prefix,
# $master->[0]->{'port'}); # First master
# }
my $slave_server_id= 2 + $idx;
my $slave_rpl_rank= $slave_server_id;
mtr_add_arg($args, "%s--server-id=%d", $prefix, $slave_server_id);
......
......@@ -68,7 +68,7 @@ use My::File::Path; # Patched version of File::Path
use File::Basename;
use File::Copy;
use File::Find;
use File::Temp qw / tempdir /;
use File::Temp qw /tempdir/;
use File::Spec::Functions qw / splitdir /;
use My::Platform;
use My::SafeProcess;
......
set global log_bin_trust_routine_creators=1;
ERROR HY000: Unknown system variable 'log_bin_trust_routine_creators'
set table_type='MyISAM';
ERROR HY000: Unknown system variable 'table_type'
select @@table_type='MyISAM';
ERROR HY000: Unknown system variable 'table_type'
backup table t1 to 'data.txt';
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'backup table t1 to 'data.txt'' at line 1
restore table t1 from 'data.txt';
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'restore table t1 from 'data.txt'' at line 1
show plugin;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'plugin' at line 1
load table t1 from master;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table t1 from master' at line 1
load data from master;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from master' at line 1
SHOW INNODB STATUS;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNODB STATUS' at line 1
create table t1 (t6 timestamp(6));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6))' at line 1
create table t1 (t6 timestamp) type=myisam;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=myisam' at line 1
show table types;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'types' at line 1
show mutex status;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mutex status' at line 1
......@@ -4,11 +4,9 @@ show variables like 'log_bin%';
Variable_name Value
log_bin OFF
log_bin_trust_function_creators ON
log_bin_trust_routine_creators ON
flush logs;
show variables like 'log_bin%';
Variable_name Value
log_bin OFF
log_bin_trust_function_creators ON
log_bin_trust_routine_creators ON
set global expire_logs_days = 0;
......@@ -412,8 +412,6 @@ prepare stmt1 from ' optimize table t1 ' ;
prepare stmt1 from ' analyze table t1 ' ;
prepare stmt1 from ' checksum table t1 ' ;
prepare stmt1 from ' repair table t1 ' ;
prepare stmt1 from ' restore table t1 from ''<MYSQLTEST_VARDIR>/tmp/data.txt'' ' ;
ERROR HY000: This command is not supported in the prepared statement protocol yet
prepare stmt1 from ' handler t1 open ';
ERROR HY000: This command is not supported in the prepared statement protocol yet
prepare stmt3 from ' commit ' ;
......
......@@ -808,7 +808,6 @@ show plugins;
show columns in t1;
show slave hosts;
show keys in t1;
show table types;
show storage engines;
show authors;
show contributors;
......@@ -1291,11 +1290,6 @@ delete from mysql.db where user='mysqltest_4';
delete from mysql.tables_priv where user='mysqltest_4';
flush privileges;
drop database mysqltest;
show full plugin;
show warnings;
Level Code Message
Warning 1287 The syntax 'SHOW PLUGIN' is deprecated and will be removed in MySQL 6.0. Please use 'SHOW PLUGINS' instead
show plugin;
show plugins;
create database `mysqlttest\1`;
create table `mysqlttest\1`.`a\b` (a int);
......@@ -1447,7 +1441,6 @@ DROP PROCEDURE p1;
DROP FUNCTION f1;
DROP TABLE t1;
DROP EVENT ev1;
SHOW TABLE TYPES;
CREATE USER test_u@localhost;
GRANT PROCESS ON *.* TO test_u@localhost;
SHOW ENGINE MYISAM MUTEX;
......
......@@ -20,16 +20,16 @@ return 0;
end $$
show procedure code signal_proc;
Pos Instruction
0 stmt 135 "SIGNAL foo"
1 stmt 135 "SIGNAL foo SET MESSAGE_TEXT = "This i..."
2 stmt 136 "RESIGNAL foo"
3 stmt 136 "RESIGNAL foo SET MESSAGE_TEXT = "This..."
0 stmt 131 "SIGNAL foo"
1 stmt 131 "SIGNAL foo SET MESSAGE_TEXT = "This i..."
2 stmt 132 "RESIGNAL foo"
3 stmt 132 "RESIGNAL foo SET MESSAGE_TEXT = "This..."
drop procedure signal_proc;
show function code signal_func;
Pos Instruction
0 stmt 135 "SIGNAL foo"
1 stmt 135 "SIGNAL foo SET MESSAGE_TEXT = "This i..."
2 stmt 136 "RESIGNAL foo"
3 stmt 136 "RESIGNAL foo SET MESSAGE_TEXT = "This..."
0 stmt 131 "SIGNAL foo"
1 stmt 131 "SIGNAL foo SET MESSAGE_TEXT = "This i..."
2 stmt 132 "RESIGNAL foo"
3 stmt 132 "RESIGNAL foo SET MESSAGE_TEXT = "This..."
4 freturn 3 0
drop function signal_func;
......@@ -155,11 +155,11 @@ Pos Instruction
0 stmt 9 "drop temporary table if exists sudoku..."
1 stmt 1 "create temporary table sudoku_work ( ..."
2 stmt 1 "create temporary table sudoku_schedul..."
3 stmt 93 "call sudoku_init()"
3 stmt 89 "call sudoku_init()"
4 jump_if_not 7(8) p_naive@0
5 stmt 4 "update sudoku_work set cnt = 0 where ..."
6 jump 8
7 stmt 93 "call sudoku_count()"
7 stmt 89 "call sudoku_count()"
8 stmt 6 "insert into sudoku_schedule (row,col)..."
9 set v_scounter@2 0
10 set v_i@3 1
......
......@@ -921,10 +921,6 @@ CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN DROP TRIGGER test1; EN
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
CREATE FUNCTION bug_13627_f() returns int BEGIN DROP TRIGGER test1; return 1; END |
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN load table t1 from master; END |
ERROR 0A000: LOAD TABLE is not allowed in stored procedures
CREATE FUNCTION bug_13627_f() returns int BEGIN load table t1 from master; return 1; END |
ERROR 0A000: LOAD TABLE is not allowed in stored procedures
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create table t2 (a int); END |
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
CREATE FUNCTION bug_13627_f() returns int BEGIN create table t2 (a int); return 1; END |
......@@ -1115,18 +1111,6 @@ REPAIR TABLE t1;
RETURN 1;
END|
ERROR 0A000: Not allowed to return a result set from a function
CREATE FUNCTION bug13012() RETURNS INT
BEGIN
BACKUP TABLE t1 TO '/tmp';
RETURN 1;
END|
ERROR 0A000: Not allowed to return a result set from a function
CREATE FUNCTION bug13012() RETURNS INT
BEGIN
RESTORE TABLE t1 FROM '/tmp';
RETURN 1;
END|
ERROR 0A000: Not allowed to return a result set from a function
create table t1 (a int)|
CREATE PROCEDURE bug13012_1() REPAIR TABLE t1|
CREATE FUNCTION bug13012_2() RETURNS INT
......@@ -1639,11 +1623,9 @@ DROP TABLE t1|
drop procedure if exists p1;
create procedure p1()
begin
create table t1 (a int) type=MyISAM;
create table t1 (a int) engine=MyISAM;
drop table t1;
end|
Warnings:
Warning 1287 The syntax 'TYPE=storage_engine' is deprecated and will be removed in MySQL 6.0. Please use 'ENGINE=storage_engine' instead
call p1();
call p1();
drop procedure p1;
......
......@@ -4305,19 +4305,10 @@ drop procedure if exists bug13012|
create procedure bug13012()
BEGIN
REPAIR TABLE t1;
BACKUP TABLE t1 to '<MYSQLTEST_VARDIR>/tmp/';
DROP TABLE t1;
RESTORE TABLE t1 FROM '<MYSQLTEST_VARDIR>/tmp/';
END|
call bug13012()|
Table Op Msg_type Msg_text
test.t1 repair status OK
Table Op Msg_type Msg_text
test.t1 backup Warning The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 6.0. Please use MySQL Administrator (mysqldump, mysql) instead
test.t1 backup status OK
Table Op Msg_type Msg_text
test.t1 restore Warning The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 6.0. Please use MySQL Administrator (mysqldump, mysql) instead
test.t1 restore status OK
drop procedure bug13012|
create view v1 as select * from t1|
create procedure bug13012()
......
......@@ -533,9 +533,7 @@ set @@session.max_heap_table_size=default|
CREATE DATABASE db_bug7787|
use db_bug7787|
CREATE PROCEDURE p1()
SHOW INNODB STATUS; |
Warnings:
Warning 1287 The syntax 'SHOW INNODB STATUS' is deprecated and will be removed in MySQL 6.0. Please use 'SHOW ENGINE INNODB STATUS' instead
SHOW ENGINE INNODB STATUS; |
GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost|
DROP DATABASE db_bug7787|
drop user user_bug7787@localhost|
......
......@@ -889,28 +889,12 @@ CREATE TABLE b15776 (a year(0));
DROP TABLE b15776;
CREATE TABLE b15776 (a year(-2));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-2))' at line 1
CREATE TABLE b15776 (a timestamp(4294967294));
Warnings:
Warning 1287 The syntax 'TIMESTAMP(4294967294)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
DROP TABLE b15776;
CREATE TABLE b15776 (a timestamp(4294967295));
Warnings:
Warning 1287 The syntax 'TIMESTAMP(4294967295)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
DROP TABLE b15776;
CREATE TABLE b15776 (a timestamp(4294967296));
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
CREATE TABLE b15776 (a timestamp(-1));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1))' at line 1
CREATE TABLE b15776 (a timestamp(-2));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-2))' at line 1
CREATE TABLE b15776 (a int(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
CREATE TABLE b15776 (a char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
CREATE TABLE b15776 (a year(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
CREATE TABLE b15776 (a timestamp(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999));
ERROR 42000: Display width out of range for column 'a' (max = 4294967295)
CREATE TABLE b15776 select cast(null as char(4294967295));
show columns from b15776;
Field Type Null Key Default Extra
......
......@@ -97,30 +97,6 @@ date date_time time_stamp
2005-01-01 2005-01-01 00:00:00 2005-01-01 00:00:00
2030-01-01 2030-01-01 00:00:00 2030-01-01 00:00:00
drop table t1;
create table t1 (t2 timestamp(2), t4 timestamp(4), t6 timestamp(6),
t8 timestamp(8), t10 timestamp(10), t12 timestamp(12),
t14 timestamp(14));
Warnings:
Warning 1287 The syntax 'TIMESTAMP(2)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
Warning 1287 The syntax 'TIMESTAMP(4)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
Warning 1287 The syntax 'TIMESTAMP(6)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
Warning 1287 The syntax 'TIMESTAMP(8)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
Warning 1287 The syntax 'TIMESTAMP(10)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
Warning 1287 The syntax 'TIMESTAMP(12)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
Warning 1287 The syntax 'TIMESTAMP(14)' is deprecated and will be removed in MySQL 6.0. Please use 'TIMESTAMP' instead
insert t1 values (0,0,0,0,0,0,0),
("1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
"1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
"1997-12-31 23:47:59");
select * from t1;
t2 t4 t6 t8 t10 t12 t14
0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00
1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59
select * from t1;
t2 t4 t6 t8 t10 t12 t14
0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00
1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59 1997-12-31 23:47:59
drop table t1;
create table t1 (ix timestamp);
insert into t1 values (0),(20030101010160),(20030101016001),(20030101240101),(20030132010101),(20031301010101),(20031200000000),(20030000000000);
Warnings:
......@@ -436,7 +412,7 @@ max(t)
2004-02-01 00:00:00
drop table t1;
set sql_mode='maxdb';
create table t1 (a timestamp, b timestamp(19));
create table t1 (a timestamp, b timestamp);
show create table t1;
Table Create Table
t1 CREATE TABLE "t1" (
......
......@@ -166,9 +166,6 @@ show variables like 'max_error_count';
Variable_name Value
max_error_count 10
drop table t1;
set table_type=MYISAM;
Warnings:
Warning 1287 The syntax '@@table_type' is deprecated and will be removed in MySQL 6.0. Please use '@@storage_engine' instead
create table t1 (a int);
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
update t1 set a='abc';
......
call mtr.add_suppression("Next log extension: 2147483647. Remaining log filename extensions: 0.");
call mtr.add_suppression("Log filename extension number exhausted:");
call mtr.add_suppression("Can't generate a unique log-filename");
RESET MASTER;
FLUSH LOGS;
Warnings:
Warning 1098 Can't generate a unique log-filename master-bin.(1-999)
......@@ -456,7 +456,11 @@ return n;
end|
reset master;
insert into t2 values (bug27417(1));
Warnings:
Note 1592 Statement may not be safe to log in statement format.
insert into t2 select bug27417(2);
Warnings:
Note 1592 Statement may not be safe to log in statement format.
reset master;
insert into t2 values (bug27417(2));
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
......@@ -473,6 +477,8 @@ select count(*) from t2;
count(*)
2
delete from t2 where a=bug27417(3);
Warnings:
Note 1592 Statement may not be safe to log in statement format.
select count(*) from t2 /* nothing got deleted */;
count(*)
2
......@@ -486,6 +492,8 @@ count(*)
5
delete t2 from t2 where t2.a=bug27417(100) /* must not affect t2 */;
affected rows: 0
Warnings:
Note 1592 Statement may not be safe to log in statement format.
select count(*) from t1 /* must be 7 */;
count(*)
7
......@@ -700,7 +708,11 @@ return n;
end|
reset master;
insert into t2 values (bug27417(1));
Warnings:
Note 1592 Statement may not be safe to log in statement format.
insert into t2 select bug27417(2);
Warnings:
Note 1592 Statement may not be safe to log in statement format.
reset master;
insert into t2 values (bug27417(2));
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
......@@ -716,6 +728,8 @@ select count(*) from t2;
count(*)
2
delete from t2 where a=bug27417(3);
Warnings:
Note 1592 Statement may not be safe to log in statement format.
select count(*) from t2 /* nothing got deleted */;
count(*)
2
......@@ -728,6 +742,8 @@ count(*)
5
delete t2 from t2 where t2.a=bug27417(100) /* must not affect t2 */;
affected rows: 0
Warnings:
Note 1592 Statement may not be safe to log in statement format.
select count(*) from t1 /* must be 7 */;
count(*)
7
......
RESET MASTER;
create table foo (a int);
flush logs;
create temporary table tmp1_foo like foo;
......
......@@ -300,4 +300,59 @@ Warnings:
Note 1592 Statement may not be safe to log in statement format.
DROP TABLE t1, t2;
SET @@SESSION.SQL_MODE = @save_sql_mode;
CREATE TABLE t1 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
CREATE TABLE t2 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
CREATE FUNCTION func_modify_t1 ()
RETURNS INT
BEGIN
INSERT INTO t1 SET a = 1;
RETURN 0;
END|
# The following statement causes auto-incrementation
# of both t1 and t2. It is logged in statement format,
# so it should produce unsafe warning.
INSERT INTO t2 SET a = func_modify_t1();
Warnings:
Note 1592 Statement may not be safe to log in statement format.
SET SESSION binlog_format = MIXED;
# Check if the statement is logged in row format.
INSERT INTO t2 SET a = func_modify_t1();
SHOW BINLOG EVENTS FROM 12283;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 12283 Query 1 12351 BEGIN
master-bin.000001 12351 Table_map 1 12393 table_id: 44 (test.t2)
master-bin.000001 12393 Table_map 1 12435 table_id: 45 (test.t1)
master-bin.000001 12435 Write_rows 1 12473 table_id: 45
master-bin.000001 12473 Write_rows 1 12511 table_id: 44 flags: STMT_END_F
master-bin.000001 12511 Query 1 12580 COMMIT
DROP TABLE t1,t2;
DROP FUNCTION func_modify_t1;
SET SESSION binlog_format = STATEMENT;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
CREATE TABLE t3 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
create trigger tri_modify_two_tables before insert on t1 for each row begin
insert into t2(a) values(new.a);
insert into t3(a) values(new.a);
end |
# The following statement causes auto-incrementation
# of both t2 and t3. It is logged in statement format,
# so it should produce unsafe warning
INSERT INTO t1 SET a = 1;
Warnings:
Note 1592 Statement may not be safe to log in statement format.
SET SESSION binlog_format = MIXED;
# Check if the statement is logged in row format.
INSERT INTO t1 SET a = 2;
SHOW BINLOG EVENTS FROM 13426;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 13426 Query 1 13494 BEGIN
master-bin.000001 13494 Table_map 1 13535 table_id: 47 (test.t1)
master-bin.000001 13535 Table_map 1 13577 table_id: 48 (test.t3)
master-bin.000001 13577 Table_map 1 13619 table_id: 49 (test.t2)
master-bin.000001 13619 Write_rows 1 13657 table_id: 49
master-bin.000001 13657 Write_rows 1 13695 table_id: 48
master-bin.000001 13695 Write_rows 1 13729 table_id: 47 flags: STMT_END_F
master-bin.000001 13729 Query 1 13798 COMMIT
DROP TABLE t1,t2,t3;
"End of tests"
# BUG#40611: MySQL cannot make a binary log after sequential number beyond
# unsigned long.
#
# Problem statement
# =================
#
# Extension for log file names might be created with negative
# numbers (when counter used would wrap around), causing server
# failure when incrementing -00001 (reaching number 000000
# extension).
#
# Test
# ====
# This tests aims at testing the a patch that removes negatives
# numbers from log name extensions and checks that the server
# reports gracefully that the limit has been reached.
#
# It instruments index file to point to a log file close to
# the new maximum and calls flush logs to get warning.
#
call mtr.add_suppression("Next log extension: 2147483647. Remaining log filename extensions: 0.");
call mtr.add_suppression("Log filename extension number exhausted:");
call mtr.add_suppression("Can't generate a unique log-filename");
-- source include/have_log_bin.inc
RESET MASTER;
-- let $MYSQLD_DATADIR= `select @@datadir`
###############################################
# check hitting maximum file name extension:
###############################################
##########
# Prepare
##########
# 1. Stop master server
-- write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
wait
EOF
-- shutdown_server 10
-- source include/wait_until_disconnected.inc
# 2. Prepare log and index file
-- copy_file $MYSQLD_DATADIR/master-bin.index $MYSQLD_DATADIR/master-bin.index.orig
-- copy_file $MYSQLD_DATADIR/master-bin.000001 $MYSQLD_DATADIR/master-bin.2147483646
-- append_file $MYSQLD_DATADIR/master-bin.index
master-bin.2147483646
EOF
# 3. Restart the server
-- append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
restart
EOF
-- enable_reconnect
-- source include/wait_until_connected_again.inc
###########
# Assertion
###########
# assertion: should throw warning
FLUSH LOGS;
##############
# Clean up
##############
# 1. Stop the server
-- write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
wait
EOF
-- shutdown_server 10
-- source include/wait_until_disconnected.inc
# 2. Undo changes to index and log files
-- remove_file $MYSQLD_DATADIR/master-bin.index
-- copy_file $MYSQLD_DATADIR/master-bin.index.orig $MYSQLD_DATADIR/master-bin.index
-- remove_file $MYSQLD_DATADIR/master-bin.index.orig
-- remove_file $MYSQLD_DATADIR/master-bin.2147483646
-- remove_file $MYSQLD_DATADIR/master-bin.2147483647
# 3. Restart the server
-- append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
restart
EOF
-- enable_reconnect
-- source include/wait_until_connected_again.inc
......@@ -30,7 +30,6 @@ source include/have_binlog_format_mixed_or_statement.inc;
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
connect (master1,127.0.0.1,root,,test,$MASTER_MYPORT,);
RESET MASTER;
create table foo (a int);
......
......@@ -388,4 +388,72 @@ DELETE FROM t1 LIMIT 1;
DROP TABLE t1, t2;
SET @@SESSION.SQL_MODE = @save_sql_mode;
#
# BUG#45827
# The test verifies if stmt that have more than one
# different tables to update with autoinc columns
# will produce unsafe warning
#
# Test case1: stmt that have more than one different tables
# to update with autoinc columns should produce
# unsafe warning when calling a function
CREATE TABLE t1 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
CREATE TABLE t2 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
# The purpose of this function is to insert into t1 so that the second
# column is auto_increment'ed.
DELIMITER |;
CREATE FUNCTION func_modify_t1 ()
RETURNS INT
BEGIN
INSERT INTO t1 SET a = 1;
RETURN 0;
END|
DELIMITER ;|
--echo # The following statement causes auto-incrementation
--echo # of both t1 and t2. It is logged in statement format,
--echo # so it should produce unsafe warning.
INSERT INTO t2 SET a = func_modify_t1();
SET SESSION binlog_format = MIXED;
--echo # Check if the statement is logged in row format.
let $pos0_master= query_get_value(SHOW MASTER STATUS, Position, 1);
INSERT INTO t2 SET a = func_modify_t1();
eval SHOW BINLOG EVENTS FROM $pos0_master;
# clean up
DROP TABLE t1,t2;
DROP FUNCTION func_modify_t1;
# Test case2: stmt that have more than one different tables
# to update with autoinc columns should produce
# unsafe warning when invoking a trigger
SET SESSION binlog_format = STATEMENT;
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
CREATE TABLE t3 (a INT, b INT PRIMARY KEY AUTO_INCREMENT);
# The purpose of this function is to insert into t1 so that the second
# column is auto_increment'ed.
delimiter |;
create trigger tri_modify_two_tables before insert on t1 for each row begin
insert into t2(a) values(new.a);
insert into t3(a) values(new.a);
end |
delimiter ;|
--echo # The following statement causes auto-incrementation
--echo # of both t2 and t3. It is logged in statement format,
--echo # so it should produce unsafe warning
INSERT INTO t1 SET a = 1;
SET SESSION binlog_format = MIXED;
--echo # Check if the statement is logged in row format.
let $pos1_master= query_get_value(SHOW MASTER STATUS, Position, 1);
INSERT INTO t1 SET a = 2;
eval SHOW BINLOG EVENTS FROM $pos1_master;
# clean up
DROP TABLE t1,t2,t3;
--echo "End of tests"
......@@ -3,13 +3,6 @@
!include rpl_1slave_base.cnf
!include include/default_client.cnf
[mysqld.2]
# Hardcode the host to 127.0.0.1 until running on more
# than one host and it need to be masked
# master-host= @mysqld.1.#host
master-host= 127.0.0.1
master-port= @mysqld.1.port
master-password= @mysqld.1.#password
master-user= @mysqld.1.#user
master-connect-retry= 1
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;
stop slave;
grant replication slave on *.* to replicate@localhost identified by 'aaaaaaaaaaaaaaab';
grant replication slave on *.* to replicate@127.0.0.1 identified by 'aaaaaaaaaaaaaaab';
start slave;
......
......@@ -4,50 +4,8 @@ File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
reset slave;
SHOW SLAVE STATUS;
change master to master_host='127.0.0.1';
SHOW SLAVE STATUS;
Slave_IO_State #
Master_Host 127.0.0.1
Master_User test
Master_Port 3306
Connect_Retry 7
Master_Log_File
Read_Master_Log_Pos #
Relay_Log_File #
Relay_Log_Pos #
Relay_Master_Log_File
Slave_IO_Running No
Slave_SQL_Running No
Replicate_Do_DB
Replicate_Ignore_DB
Replicate_Do_Table
Replicate_Ignore_Table #
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
Until_Condition None
Until_Log_File
Until_Log_Pos 0
Master_SSL_Allowed No
Master_SSL_CA_File
Master_SSL_CA_Path
Master_SSL_Cert
Master_SSL_Cipher
Master_SSL_Key
Seconds_Behind_Master #
Master_SSL_Verify_Server_Cert No
Last_IO_Errno #
Last_IO_Error #
Last_SQL_Errno 0
Last_SQL_Error
Replicate_Ignore_Server_Ids
Master_Server_Id 0
change master to master_host='127.0.0.1',master_user='root',
master_password='',master_port=MASTER_PORT;
master_password='',master_port=MASTER_PORT, MASTER_CONNECT_RETRY=7;
SHOW SLAVE STATUS;
Slave_IO_State #
Master_Host 127.0.0.1
......
reset master;
call mtr.add_suppression("Failed during slave I/O thread initialization");
stop slave;
reset slave;
call mtr.add_suppression("Failed during slave I/O thread initialization");
SET GLOBAL debug="d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init";
start slave;
show slave status;
......
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;
stop slave;
SET @@debug="d,simulate_find_log_pos_error";
reset slave;
ERROR HY000: Target log not found in binlog index
show warnings;
Level Code Message
Error 1373 Target log not found in binlog index
Error 1371 Failed purging old relay logs: Failed during log reset
SET @@debug="";
reset slave;
change master to master_host='dummy';
SET @@debug="d,simulate_find_log_pos_error";
change master to master_host='dummy';
ERROR HY000: Target log not found in binlog index
SET @@debug="";
reset slave;
change master to master_host='dummy';
SET @@debug="d,simulate_find_log_pos_error";
reset master;
ERROR HY000: Target log not found in binlog index
SET @@debug="";
reset master;
SET @@debug="d,simulate_find_log_pos_error";
purge binary logs to 'master-bin.000001';
ERROR HY000: Target log not found in binlog index
SET @@debug="";
purge binary logs to 'master-bin.000001';
End of the tests
......@@ -4,9 +4,10 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
call mtr.add_suppression("Slave I/O: .* failed with error: Lost connection to MySQL server at 'reading initial communication packet'");
call mtr.add_suppression("Slave I/O: Master command COM_REGISTER_SLAVE failed: failed registering on master, reconnecting to try again");
call mtr.add_suppression("Get master clock failed with error: ");
call mtr.add_suppression("Get master SERVER_ID failed with error: ");
call mtr.add_suppression("Slave I/O: Master command COM_REGISTER_SLAVE failed: failed registering on master, reconnecting to try again");
call mtr.add_suppression("Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; .*");
SELECT IS_FREE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP");
IS_FREE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP")
......
reset master;
set @restore_slave_net_timeout= @@global.slave_net_timeout;
set @@global.slave_net_timeout= 10;
Warnings:
Warning 1624 The currect value for master_heartbeat_period exceeds the new value of `slave_net_timeout' sec. A sensible value for the period should be less than the timeout.
change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root';
show status like 'Slave_heartbeat_period';;
Variable_name Slave_heartbeat_period
......@@ -59,7 +57,7 @@ Slave_IO_State #
Master_Host 127.0.0.1
Master_User root
Master_Port MASTER_PORT
Connect_Retry 1
Connect_Retry 60
Master_Log_File master-bin.000001
Read_Master_Log_Pos 280
Relay_Log_File #
......@@ -100,7 +98,7 @@ Slave_IO_State #
Master_Host 127.0.0.1
Master_User root
Master_Port MASTER_PORT
Connect_Retry 1
Connect_Retry 60
Master_Log_File master-bin.000001
Read_Master_Log_Pos 280
Relay_Log_File #
......
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 mysqltest;
drop database if exists mysqltest2;
drop database if exists mysqltest3;
drop database if exists mysqltest;
drop database if exists mysqltest2;
drop database if exists mysqltest3;
create database mysqltest2;
create database mysqltest;
create database mysqltest2;
create table mysqltest2.foo (n int)ENGINE=MyISAM;
insert into mysqltest2.foo values(4);
create table mysqltest2.foo (n int)ENGINE=MyISAM;
insert into mysqltest2.foo values(5);
create table mysqltest.bar (m int)ENGINE=MyISAM;
insert into mysqltest.bar values(15);
select mysqltest2.foo.n,mysqltest.bar.m from mysqltest2.foo,mysqltest.bar;
n m
4 15
drop database mysqltest;
drop database if exists mysqltest2;
drop database mysqltest;
ERROR HY000: Can't drop database 'mysqltest'; database doesn't exist
drop database mysqltest2;
set sql_log_bin = 0;
create database mysqltest2;
create database mysqltest;
show databases like 'mysql%';
Database (mysql%)
mysql
mysqltest
mysqltest2
create table mysqltest2.t1(n int, s char(20))ENGINE=MyISAM;
create table mysqltest2.t2(n int, s text)ENGINE=MyISAM;
insert into mysqltest2.t1 values (1, 'one'), (2, 'two'), (3, 'three');
insert into mysqltest2.t2 values (11, 'eleven'), (12, 'twelve'), (13, 'thirteen');
create table mysqltest.t1(n int, s char(20))ENGINE=MyISAM;
create table mysqltest.t2(n int, s text)ENGINE=MyISAM;
insert into mysqltest.t1 values (1, 'one test'), (2, 'two test'), (3, 'three test');
insert into mysqltest.t2 values (11, 'eleven test'), (12, 'twelve test'),
(13, 'thirteen test');
set sql_log_bin = 1;
show databases like 'mysql%';
Database (mysql%)
mysql
create database mysqltest2;
create table mysqltest2.t1(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest2.t1 values (1, 'original foo.t1');
create table mysqltest2.t3(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest2.t3 values (1, 'original foo.t3');
create database mysqltest3;
create table mysqltest3.t1(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest3.t1 values (1, 'original foo2.t1');
create database mysqltest;
create table mysqltest.t1(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest.t1 values (1, 'original bar.t1');
create table mysqltest.t3(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest.t3 values (1, 'original bar.t3');
load data from master;
show databases like 'mysql%';
Database (mysql%)
mysql
mysqltest
mysqltest2
mysqltest3
use mysqltest2;
show tables;
Tables_in_mysqltest2
t1
t3
select * from t1;
n s
1 original foo.t1
use mysqltest3;
show tables;
Tables_in_mysqltest3
t1
select * from t1;
n s
1 original foo2.t1
use mysqltest;
show tables;
Tables_in_mysqltest
t1
t2
t3
select * from mysqltest.t1;
n s
1 one test
2 two test
3 three test
select * from mysqltest.t2;
n s
11 eleven test
12 twelve test
13 thirteen test
select * from mysqltest.t3;
n s
1 original bar.t3
insert into mysqltest.t1 values (4, 'four test');
select * from mysqltest.t1;
n s
1 one test
2 two test
3 three test
4 four test
stop slave;
reset slave;
load data from master;
start slave;
insert into mysqltest.t1 values (5, 'five bar');
select * from mysqltest.t1;
n s
1 one test
2 two test
3 three test
4 four test
5 five bar
load table mysqltest.t1 from master;
ERROR 42S01: Table 't1' already exists
drop table mysqltest.t1;
load table mysqltest.t1 from master;
load table bar.t1 from master;
ERROR HY000: Error from master: 'Table 'bar.t1' doesn't exist'
drop database mysqltest;
drop database mysqltest2;
drop database mysqltest2;
drop database mysqltest3;
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;
"******************** Test Requirment 1 *************"
SET SQL_LOG_BIN=0,timestamp=200006;
CREATE TABLE t1(t TIMESTAMP NOT NULL,a CHAR(1))ENGINE=MyISAM;
INSERT INTO t1 ( a) VALUE ('F');
select unix_timestamp(t) from t1;
unix_timestamp(t)
200006
load table t1 from master;
select unix_timestamp(t) from t1;
unix_timestamp(t)
200006
set SQL_LOG_BIN=1,timestamp=default;
drop table t1;
set SQL_LOG_BIN=0;
"******************** Test Requirment 2 *************"
CREATE TABLE t1 (a INT NOT NULL) ENGINE=MyISAM MAX_ROWS=4000 CHECKSUM=1;
INSERT INTO t1 VALUES (1);
load table t1 from master;
check table t1;
Table Op Msg_type Msg_text
test.t1 check status OK
drop table t1;
drop table t1;
set SQL_LOG_BIN=0;
create table t1 (word char(20) not null, index(word))ENGINE=MyISAM;
load data infile '../../std_data/words.dat' into table t1;
create table t2 (word char(20) not null)ENGINE=MyISAM;
load data infile '../../std_data/words.dat' into table t2;
create table t3 (word char(20) not null primary key)ENGINE=MyISAM;
load table t1 from master;
load table t2 from master;
load table t3 from master;
check table t1;
Table Op Msg_type Msg_text
test.t1 check status OK
select count(*) from t2;
count(*)
70
select count(*) from t3;
count(*)
0
set SQL_LOG_BIN=1;
drop table if exists t1,t2,t3;
create table t1(n int);
drop table t1;
......@@ -13,8 +13,8 @@ n
2001
2002
show slave hosts;
Server_id Host Port Rpl_recovery_rank Master_id
2 127.0.0.1 9999 0 1
Server_id Host Port Master_id
2 127.0.0.1 9999 1
drop table t1;
stop slave;
create table t2(id int auto_increment primary key, created datetime);
......
......@@ -92,7 +92,7 @@ reset slave;
SHOW SLAVE STATUS;
Slave_IO_State #
Master_Host 127.0.0.1
Master_User root
Master_User test
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File
......@@ -130,6 +130,7 @@ Last_SQL_Errno 0
Last_SQL_Error
Replicate_Ignore_Server_Ids
Master_Server_Id 1
change master to master_user='root';
start slave;
SHOW SLAVE STATUS;
Slave_IO_State #
......
......@@ -4,8 +4,14 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
SHOW SLAVE STATUS;
load table t1 from master;
ERROR 08S01: Error connecting to master: Master is not configured
load table t1 from master;
ERROR HY000: Error from master: 'Table 'test.t1' doesn't exist'
RESET SLAVE;
CHANGE MASTER TO master_host='127.0.0.1',master_port=MASTER_PORT,master_user='root';
START SLAVE IO_THREAD;
SHOW SLAVE HOSTS;
Server_id Host Port Master_id
3 slave2 DEFAULT_PORT 1
2 SLAVE_PORT 1
STOP SLAVE IO_THREAD;
SHOW SLAVE HOSTS;
Server_id Host Port Master_id
2 SLAVE_PORT 1
......@@ -191,14 +191,9 @@ begin
return unix_timestamp();
end|
ERROR HY000: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
set @old_log_bin_trust_routine_creators= @@global.log_bin_trust_routine_creators;
set @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators;
set global log_bin_trust_routine_creators=1;
Warnings:
Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
set global log_bin_trust_function_creators=0;
set global log_bin_trust_function_creators=1;
set @old_log_bin_trust_routine_creators= @@global.log_bin_trust_routine_creators;
set @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators;
set global log_bin_trust_function_creators=1;
create function fn2()
......@@ -557,13 +552,7 @@ insert into t values (1);
return 0;
end
master-bin.000001 # Query # # use `mysqltest`; SELECT `mysqltest2`.`f1`()
set @@global.log_bin_trust_routine_creators= @old_log_bin_trust_routine_creators;
Warnings:
Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
set @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators;
set @@global.log_bin_trust_routine_creators= @old_log_bin_trust_routine_creators;
Warnings:
Warning 1287 The syntax '@@log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 6.0. Please use '@@log_bin_trust_function_creators' instead
set @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators;
drop database mysqltest;
drop database mysqltest2;
......
......@@ -92,7 +92,7 @@ reset slave;
SHOW SLAVE STATUS;
Slave_IO_State #
Master_Host 127.0.0.1
Master_User root
Master_User test
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File
......@@ -130,6 +130,7 @@ Last_SQL_Errno 0
Last_SQL_Error
Replicate_Ignore_Server_Ids
Master_Server_Id 1
change master to master_user='root';
start slave;
SHOW SLAVE STATUS;
Slave_IO_State #
......
......@@ -10,6 +10,5 @@
#
##############################################################################
rpl_get_master_version_and_clock: # Bug#46931 2009-10-17 joro rpl.rpl_get_master_version_and_clock fails
rpl_cross_version : BUG#43913 2009-10-22 luis rpl_cross_version fails with symptom in described in bug report
rpl_spec_variables : BUG#47661 2009-10-27 jasonh rpl_spec_variables fails on PB2 hpux
......@@ -6,14 +6,10 @@ source include/master-slave.inc;
create table t1 (n int not null auto_increment primary key);
insert into t1 values(NULL);
insert into t1 values(2);
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
select n from t1;
connection master;
drop table t1;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
# End of 4.1 tests
......@@ -4,7 +4,9 @@ create table t1 (n int);
insert into t1 values(1);
sync_slave_with_master;
stop slave;
--source include/wait_for_slave_to_stop.inc
start slave;
--source include/wait_for_slave_to_start.inc
connection master;
insert into t1 values(2);
#let slave catch up
......
......@@ -9,9 +9,7 @@
--source include/have_binlog_format_mixed_or_statement.inc
source include/master-slave.inc;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
connection master;
create table t2(n int);
......@@ -46,8 +44,6 @@ connection master2;
# exist in this connection.
drop table if exists t1,t2;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
# End of 4.1 tests
File mode changed from 100755 to 100644
# The test manually replaces the relay-log.info file with connection
# information which the slave then should pick up. However, to avoid
# overwriting the file, no CHANGE MASTER TO nor RESET SLAVE statements
# should be executed.
#
# Starting replication before granting a replication user privileges
# to replicate will cause the start slave to fail, so we shouldn't do
# that.
let $no_change_master = 1;
let $skip_slave_start = 1;
source include/master-slave.inc;
connection slave;
stop slave;
connection master;
grant replication slave on *.* to replicate@localhost identified by 'aaaaaaaaaaaaaaab';
grant replication slave on *.* to replicate@127.0.0.1 identified by 'aaaaaaaaaaaaaaab';
connection slave;
start slave;
source include/wait_for_slave_to_start.inc;
connection master;
--disable_warnings
drop table if exists t1;
......
--server-id=22 --master-connect-retry=7
--server-id=22
......@@ -15,14 +15,12 @@ connection slave;
reset slave;
source include/show_slave_status2.inc;
change master to master_host='127.0.0.1';
# The following needs to be cleaned up when change master is fixed
source include/show_slave_status2.inc;
--replace_result $MASTER_MYPORT MASTER_PORT
eval change master to master_host='127.0.0.1',master_user='root',
master_password='',master_port=$MASTER_MYPORT;
master_password='',master_port=$MASTER_MYPORT, MASTER_CONNECT_RETRY=7;
source include/show_slave_status2.inc;
start slave;
--source include/wait_for_slave_to_start.inc
sync_with_master;
source include/show_slave_status2.inc;
connection master;
......
......@@ -10,15 +10,11 @@ insert into mysqltest.t1 values (1,2);
create table mysqltest.t2 (n int);
insert into mysqltest.t2 values (45);
rename table mysqltest.t2 to mysqltest.t3, mysqltest.t1 to mysqltest.t2;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
select * from mysqltest.t2;
select * from mysqltest.t3;
connection master;
drop database mysqltest;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
# End of 4.1 tests
......@@ -51,9 +51,7 @@ CALL simpleproc3();
select * from t1;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
use test1;
select * from t1;
......
......@@ -78,10 +78,8 @@ SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034 FROM test.t1;
SELECT hex(bit1) FROM test.t1 ORDER BY bit1;
SELECT hex(bit2) from test.t1 ORDER BY bit2;
SELECT hex(bit3) from test.t1 ORDER BY bit3;
save_master_pos;
sync_slave_with_master;
connection slave;
sync_with_master;
SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034 FROM test.t1;
SELECT hex(bit1) FROM test.t1 ORDER BY bit1;
SELECT hex(bit2) from test.t1 ORDER BY bit2;
......
......@@ -76,10 +76,8 @@ SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034
SELECT hex(bit1) from test.t1 ORDER BY bit1;
SELECT hex(bit2) from test.t1 ORDER BY bit2;
SELECT hex(bit3) from test.t1 ORDER BY bit3;
save_master_pos;
sync_slave_with_master;
connection slave;
sync_with_master;
SELECT oSupp, sSuppD, GSuppDf, VNotSupp, x034
FROM test.t1
ORDER BY oSupp, sSuppD, GSuppDf, VNotSupp, x034;
......@@ -100,10 +98,8 @@ UPDATE test.t3 SET a = 2 WHERE b = 0;
SELECT a, hex(b) FROM test.t2 ORDER BY a,b;
SELECT * FROM test.t3 ORDER BY a,b;
save_master_pos;
sync_slave_with_master;
connection slave;
sync_with_master;
SELECT a, hex(b) FROM test.t2 ORDER BY a,b;
SELECT * FROM test.t3 ORDER BY a,b;
......
......@@ -8,23 +8,25 @@ source include/have_log_bin.inc;
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT,);
connection master;
reset master;
connection slave;
reset slave;
# Add suppression for expected warnings in slaves error log
call mtr.add_suppression("Failed during slave I/O thread initialization");
--disable_warnings
stop slave;
--enable_warnings
reset slave;
# Set debug flags on slave to force errors to occur
SET GLOBAL debug="d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init";
--disable_query_log
eval CHANGE MASTER TO MASTER_USER='root',
MASTER_CONNECT_RETRY=1,
MASTER_HOST='127.0.0.1',
MASTER_PORT=$MASTER_MYPORT;
--enable_query_log
start slave;
connection master;
......
--loose-debug=-d,simulate_find_log_pos_error
# Test for Bug #41902 MYSQL_BIN_LOG::reset_logs() doesn't call my_error()
# in face of an error
#
source include/have_debug.inc;
source include/master-slave.inc;
#
# test checks that
# a. there is no crash when find_log_pos() returns with an error
# that tests expect to receive;
# b. in the case of multiple error messages the first error message is
# reported to the user and others are available as warnings.
#
connection slave;
stop slave;
SET @@debug="d,simulate_find_log_pos_error";
--error ER_UNKNOWN_TARGET_BINLOG
reset slave;
show warnings;
SET @@debug="";
reset slave;
change master to master_host='dummy';
SET @@debug="d,simulate_find_log_pos_error";
--error ER_UNKNOWN_TARGET_BINLOG
change master to master_host='dummy';
SET @@debug="";
reset slave;
change master to master_host='dummy';
connection master;
SET @@debug="d,simulate_find_log_pos_error";
--error ER_UNKNOWN_TARGET_BINLOG
reset master;
SET @@debug="";
reset master;
SET @@debug="d,simulate_find_log_pos_error";
--error ER_UNKNOWN_TARGET_BINLOG
purge binary logs to 'master-bin.000001';
SET @@debug="";
purge binary logs to 'master-bin.000001';
--disable_query_log
call mtr.add_suppression("Failed to locate old binlog or relay log files");
call mtr.add_suppression("MYSQL_LOG::purge_logs was called with file ./master-bin.000001 not listed in the index");
connection slave;
call mtr.add_suppression("Failed to locate old binlog or relay log files");
call mtr.add_suppression("MYSQL_LOG::purge_logs was called with file ./master-bin.000001 not listed in the index");
--enable_query_log
--echo End of the tests
......@@ -28,9 +28,7 @@ sync_with_master;
select * from t1;
connection master;
drop table t1;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
# End of 4.1 tests
......
......@@ -7,6 +7,9 @@
#############################################################
--source include/have_innodb.inc
# Use wait_for_slave_to_(start|stop) for current connections
let $keep_connection= 1;
# Set up circular ring and new names for servers
--echo *** Set up circular ring by schema A->B->C->D->A ***
--source include/circular_rpl_for_4_hosts_init.inc
......
......@@ -16,6 +16,7 @@ DROP TABLE IF EXISTS t1;
--echo *** Create "wider" table on slave ***
sync_slave_with_master;
STOP SLAVE;
--source include/wait_for_slave_to_stop.inc
RESET SLAVE;
eval CREATE TABLE t1 (
......@@ -69,6 +70,7 @@ RESET MASTER;
--echo *** Start replication ***
connection slave;
START SLAVE;
--source include/wait_for_slave_to_start.inc
--echo *** Insert data on master and display it. ***
connection master;
......
......@@ -8,9 +8,7 @@ connection master;
delete from mysql.user where user=_binary'rpl_do_grant';
delete from mysql.db where user=_binary'rpl_do_grant';
flush privileges;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
# if these DELETE did nothing on the master, we need to do them manually on the
# slave.
delete from mysql.user where user=_binary'rpl_ignore_grant';
......@@ -21,17 +19,13 @@ flush privileges;
connection master;
grant select on *.* to rpl_do_grant@localhost;
grant drop on test.* to rpl_do_grant@localhost;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
show grants for rpl_do_grant@localhost;
# test replication of SET PASSWORD
connection master;
set password for rpl_do_grant@localhost=password("does it work?");
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
select password<>_binary'' from mysql.user where user=_binary'rpl_do_grant';
#
......@@ -44,9 +38,7 @@ select password<>'' from mysql.user where user='rpl_do_grant';
set sql_mode='ANSI_QUOTES';
set password for rpl_do_grant@localhost=password('does it work?');
set sql_mode='';
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
select password<>'' from mysql.user where user='rpl_do_grant';
......
......@@ -7,10 +7,6 @@ drop table if exists t1, t2;
create table t1 (a int);
--error 1051
drop table t1, t2;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
# End of 4.1 tests
......@@ -20,9 +20,7 @@ drop view v1, not_exist_view;
--error 1146
select * from v1;
drop view v2, v3;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
--error 1146
select * from v1;
--error 1146
......
......@@ -22,6 +22,7 @@ connection master;
eval change master to master_host="127.0.0.1",master_port=$SLAVE_MYPORT,master_user="root";
start slave;
--source include/wait_for_slave_to_start.inc
# now we test it
......@@ -38,12 +39,11 @@ sync_with_master;
# log-slave-updates and circul repl
#
stop slave;
--source include/wait_for_slave_to_stop.inc
create table t2 (n int); # create one ignored event
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
connection slave;
......@@ -85,6 +85,7 @@ start slave until master_log_file="slave-bin.000001",master_log_pos=663;
select * from t3;
start slave;
--source include/wait_for_slave_to_start.inc
# BUG#13023 is that Exec_master_log_pos may stay too low "forever":
......@@ -94,9 +95,7 @@ create table t4 (n int); # create 3 ignored events
create table t5 (n int);
create table t6 (n int);
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
connection slave;
......@@ -114,11 +113,10 @@ show tables;
# cleanup
stop slave;
--source include/wait_for_slave_to_stop.inc
reset slave;
drop table t1,t2,t3,t4,t5,t6;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
# End of 4.1 tests
source include/master-slave.inc;
source include/show_slave_status.inc;
#
# Load table should not succeed on the master as this is not a slave
#
--error 1218
load table t1 from master;
connection slave;
--error 1188
load table t1 from master;
# End of 4.1 tests
......@@ -14,19 +14,15 @@ create table t4 (a int primary key);
--error 1022, ER_DUP_ENTRY
insert into t1 values (1),(1);
insert into t4 values (1),(2);
save_master_pos;
connection slave;
# as the t1 table is ignored on the slave, the slave should be able to sync
sync_with_master;
sync_slave_with_master;
# check that the table has been ignored, because otherwise the test is nonsense
show tables like 't1';
show tables like 't4';
SELECT * FROM test.t4 ORDER BY a;
connection master;
drop table t1;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
# Now test that even critical errors (connection killed)
# are ignored if rules allow it.
......@@ -53,15 +49,11 @@ connection master;
--error 0,1317,2013
reap;
connection master1;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
SELECT * FROM test.t4 ORDER BY a;
connection master1;
DROP TABLE test.t4;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
# End of 4.1 tests
# Adding comment for force manual merge 5.0 -> wl1012. delete me if needed
File mode changed from 100755 to 100644
File mode changed from 100755 to 100644
# Testing if "flush logs" command bouncing resulting in logs created in a loop
# in case of bi-directional replication
-- source include/master-slave.inc
# Use wait_for_slave_to_(start|stop) for current connections
let $keep_connection= 1;
let $MYSQLD_DATADIR= `select @@datadir`;
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR/
......@@ -9,18 +11,20 @@ show variables like 'relay_log%';
connection slave;
--disable_warnings
stop slave;
--source include/wait_for_slave_to_stop.inc
--enable_warnings
--replace_result $MASTER_MYPORT MASTER_PORT
eval change master to master_host='127.0.0.1',master_user='root',
master_password='',master_port=$MASTER_MYPORT;
start slave;
--source include/wait_for_slave_to_start.inc
#
# Start replication slave -> master
#
connection master;
--disable_warnings
stop slave;
--source include/wait_for_slave_to_stop.inc
--enable_warnings
--replace_result $SLAVE_MYPORT SLAVE_PORT
eval change master to master_host='127.0.0.1',master_user='root',
......
......@@ -34,12 +34,14 @@ SELECT * FROM t1;
# restart replication for the next testcase
stop slave;
--source include/wait_for_slave_to_stop.inc
reset slave;
connection master;
reset master;
drop table t1;
connection slave;
start slave;
--source include/wait_for_slave_to_start.inc
# testcase with INSERT SELECT
connection master;
......
# This one assumes we are ignoring updates on tables in database mysqltest2,
# but doing the ones in database mysqltest
#################################################################
# Change Author: JBM
# Change Date: 2006-02-02
# Change: Added ENGINE=MyISAM
# Reason: LOAD from master is only supported by MyISAM
#################################################################
source include/master-slave.inc;
--disable_warnings
drop database if exists mysqltest;
drop database if exists mysqltest2;
drop database if exists mysqltest3;
connection slave;
drop database if exists mysqltest;
drop database if exists mysqltest2;
drop database if exists mysqltest3;
connection master;
create database mysqltest2;
create database mysqltest;
--enable_warnings
save_master_pos;
connection slave;
sync_with_master;
create database mysqltest2;
create table mysqltest2.foo (n int)ENGINE=MyISAM;
insert into mysqltest2.foo values(4);
connection master;
create table mysqltest2.foo (n int)ENGINE=MyISAM;
insert into mysqltest2.foo values(5);
create table mysqltest.bar (m int)ENGINE=MyISAM;
insert into mysqltest.bar values(15);
save_master_pos;
connection slave;
sync_with_master;
select mysqltest2.foo.n,mysqltest.bar.m from mysqltest2.foo,mysqltest.bar;
connection master;
drop database mysqltest;
drop database if exists mysqltest2;
save_master_pos;
connection slave;
sync_with_master;
--error 1008
drop database mysqltest;
drop database mysqltest2;
# Now let's test load data from master
# First create some databases and tables on the master
connection master;
set sql_log_bin = 0;
create database mysqltest2;
create database mysqltest;
show databases like 'mysql%';
create table mysqltest2.t1(n int, s char(20))ENGINE=MyISAM;
create table mysqltest2.t2(n int, s text)ENGINE=MyISAM;
insert into mysqltest2.t1 values (1, 'one'), (2, 'two'), (3, 'three');
insert into mysqltest2.t2 values (11, 'eleven'), (12, 'twelve'), (13, 'thirteen');
create table mysqltest.t1(n int, s char(20))ENGINE=MyISAM;
create table mysqltest.t2(n int, s text)ENGINE=MyISAM;
insert into mysqltest.t1 values (1, 'one test'), (2, 'two test'), (3, 'three test');
insert into mysqltest.t2 values (11, 'eleven test'), (12, 'twelve test'),
(13, 'thirteen test');
set sql_log_bin = 1;
save_master_pos;
connection slave;
sync_with_master;
# This should show that the slave is empty at this point
show databases like 'mysql%';
# Create mysqltest2 and mysqltest3 on slave; we expect that LOAD DATA FROM
# MASTER will neither touch database mysqltest nor mysqltest3
create database mysqltest2;
create table mysqltest2.t1(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest2.t1 values (1, 'original foo.t1');
create table mysqltest2.t3(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest2.t3 values (1, 'original foo.t3');
create database mysqltest3;
create table mysqltest3.t1(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest3.t1 values (1, 'original foo2.t1');
# Create mysqltest, and mysqltest.t1, to check that it gets replaced,
# and mysqltest.t3 to check that it is not touched (there is no
# mysqltest.t3 on master)
create database mysqltest;
create table mysqltest.t1(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest.t1 values (1, 'original bar.t1');
create table mysqltest.t3(n int, s char(20))ENGINE=MyISAM;
insert into mysqltest.t3 values (1, 'original bar.t3');
load data from master;
# Now let's check if we have the right tables and the right data in them
show databases like 'mysql%';
use mysqltest2;
# LOAD DATA FROM MASTER uses only replicate_*_db rules to decide which
# databases have to be copied. So it thinks "mysqltest" has to be
# copied. Before 4.0.16 it would first drop "mysqltest", then create
# "mysqltest". This "drop" is a bug; in that case t3 would disappear. So
# here the effect of this bug (BUG#1248) would be to leave an empty
# "mysqltest" on the slave.
show tables; # should be t1 & t3
select * from t1; # should be slave's original
use mysqltest3;
show tables; # should be t1
select * from t1; # should be slave's original
use mysqltest;
show tables; # should contain master's copied t1&t2, slave's original t3
select * from mysqltest.t1;
select * from mysqltest.t2;
select * from mysqltest.t3;
# Now let's see if replication works
connection master;
insert into mysqltest.t1 values (4, 'four test');
save_master_pos;
connection slave;
sync_with_master;
select * from mysqltest.t1;
# Check that LOAD DATA FROM MASTER is able to create master.info
# if needed (if RESET SLAVE was used before), before writing to it (BUG#2922).
stop slave;
reset slave;
load data from master;
start slave;
# see if replication coordinates were restored fine
connection master;
insert into mysqltest.t1 values (5, 'five bar');
save_master_pos;
connection slave;
sync_with_master;
select * from mysqltest.t1;
# Check that LOAD DATA FROM MASTER reports the error if it can't drop a
# table to be overwritten.
# DISABLED FOR NOW AS chmod IS NOT PORTABLE ON NON-UNIX
# insert into mysqltest.t1 values(10, 'should be there');
# flush tables;
let $MYSQLD_SLAVE_DATADIR= `select @@datadir`;
# system chmod 500 $MYSQLD_SLAVE_DATADIR/mysqltest/;
# --error 6
# load data from master; # should fail (errno 13)
# system chmod 700 $MYSQLD_SLAVE_DATADIR/mysqltest/;
# select * from mysqltest.t1; # should contain the row (10, ...)
# Check that LOAD TABLE FROM MASTER fails if the table exists on slave
--error 1050
load table mysqltest.t1 from master;
drop table mysqltest.t1;
load table mysqltest.t1 from master;
# Check what happens when requestion not existing table
#
--error 1188
load table bar.t1 from master;
# as LOAD DATA FROM MASTER failed it did not restart slave threads
# DISABLED FOR NOW
# start slave;
# Now time for cleanup
connection master;
drop database mysqltest;
drop database mysqltest2;
save_master_pos;
connection slave;
sync_with_master;
# These have to be dropped on slave because they are not replicated
drop database mysqltest2;
drop database mysqltest3;
# End of 4.1 tests
###########################################################
# Change Author: JBM
# Change Date: 2006-2-2
# Change: Added ENGINE=$engine_type for first create table
# Reason: Only MyISAM supports load from master no need to
# run test case for other engines, in addition test will
# fail if other engines are set as default engine
###########################################################
# Change Author: JBM
# Change Date: 2006-2-3
# Change: removed ENGINE=$engine_type for first create table
# and renamed test file to rpl_load_table_from_master.test.
# In addition added test requirements.
# Reason: Request from review.
############################################################
# REQUIREMENT TEST 1:
# LOAD TABLE FROM MASTER must work with a forced timestamp.
############################################################
#
# Test forced timestamp
#
-- source include/master-slave.inc
-- echo "******************** Test Requirment 1 *************"
# Don't log table creating to the slave as we want to test LOAD TABLE
SET SQL_LOG_BIN=0,timestamp=200006;
eval CREATE TABLE t1(t TIMESTAMP NOT NULL,a CHAR(1))ENGINE=MyISAM;
INSERT INTO t1 ( a) VALUE ('F');
select unix_timestamp(t) from t1;
connection slave;
load table t1 from master;
select unix_timestamp(t) from t1;
# Delete the created table on master and slave
connection master;
set SQL_LOG_BIN=1,timestamp=default;
drop table t1;
save_master_pos;
connection slave;
sync_with_master;
connection master;
#
# Test copying table with checksum
#
# Don't log table creating to the slave as we want to test LOAD TABLE
set SQL_LOG_BIN=0;
#######################################################
# REQUIREMENTi TEST 2:
#LOAD TABLE FROM MASTER must work with table checksum
#######################################################
-- echo "******************** Test Requirment 2 *************"
eval CREATE TABLE t1 (a INT NOT NULL) ENGINE=MyISAM MAX_ROWS=4000 CHECKSUM=1;
INSERT INTO t1 VALUES (1);
save_master_pos;
connection slave;
sync_with_master;
load table t1 from master;
check table t1;
drop table t1;
connection master;
drop table t1;
save_master_pos;
connection slave;
sync_with_master;
connection master;
set SQL_LOG_BIN=0;
create table t1 (word char(20) not null, index(word))ENGINE=MyISAM;
load data infile '../../std_data/words.dat' into table t1;
create table t2 (word char(20) not null)ENGINE=MyISAM;
load data infile '../../std_data/words.dat' into table t2;
create table t3 (word char(20) not null primary key)ENGINE=MyISAM;
connection slave;
load table t1 from master;
load table t2 from master;
load table t3 from master;
check table t1;
select count(*) from t2;
select count(*) from t3;
connection master;
set SQL_LOG_BIN=1;
drop table if exists t1,t2,t3;
save_master_pos;
connection slave;
sync_with_master;
create table t1(n int);
drop table t1;
# End of 4.1 tests
......@@ -23,9 +23,7 @@ load data infile '../../std_data/loaddata6.dat' into table t1 character set koi8
select hex(a) from t1;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
select hex(a) from t1;
connection master;
......
......@@ -16,7 +16,7 @@ connection master;
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE t1;
connection slave;
wait_for_slave_to_stop;
--source include/wait_for_slave_sql_to_stop.inc
source include/show_slave_status.inc;
connection slave;
......
......@@ -28,9 +28,7 @@ LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE mysqltest.t1;
SELECT COUNT(*) FROM mysqltest.t1;
# Now lets check the slave to see what we have :-)
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
SHOW DATABASES;
......
......@@ -16,9 +16,7 @@ load data infile '../../std_data/rpl_loaddata.dat' into table test.t1;
# Test logging on slave;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
select count(*) from test.t1; # check that LOAD was replicated
source include/show_binlog_events.inc;
......
......@@ -27,15 +27,11 @@ truncate table t1;
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
eval load data local infile '$MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile' into table t1;
--remove_file $MYSQLD_DATADIR/rpl_loaddatalocal.select_outfile
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
select a,count(*) from t1 group by a;
connection master;
drop table t1;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
# End of 4.1 tests
......
# See if master_pos_wait(,,timeout)
# Terminates with "timeout expired" (-1)
source include/master-slave.inc;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
# Ask for a master log that has certainly not been reached yet
# timeout= 2 seconds
select master_pos_wait('master-bin.999999',0,2);
......
File mode changed from 100755 to 100644
......@@ -18,6 +18,7 @@ show slave hosts;
drop table t1;
sync_slave_with_master;
stop slave;
--source include/wait_for_slave_to_stop.inc
connection master;
# Test replication of timestamp
......@@ -35,6 +36,7 @@ create table t5 select * from t4;
save_master_pos;
connection slave;
start slave;
--source include/wait_for_slave_to_start.inc
sync_with_master;
select * from t2;
show create table t3;
......
......@@ -19,8 +19,6 @@ select * from t2;
connection master;
drop table t1,t2;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
# End of 4.1 tests
......@@ -27,11 +27,9 @@ SELECT * FROM a;
insert into a values(2),(3);
delete alias FROM a alias where alias.i=2;
select * from a;
save_master_pos;
connection slave;
sync_slave_with_master;
use mysqltest_to;
sync_with_master;
select * from a;
# BUG#3461
......
......@@ -47,8 +47,7 @@ sync_with_master; # won't work if slave SQL thread stopped
connection master; # cleanup
drop table t1;
connection slave;
sync_with_master;
sync_slave_with_master;
# If the machine is so fast that slave syncs before OPTIMIZE
# starts, this test wil demonstrate nothing but will pass.
......
......@@ -38,20 +38,15 @@ select @@net_buffer_length, @@max_allowed_packet;
create table `t1` (`f1` LONGTEXT) ENGINE=MyISAM;
INSERT INTO `t1`(`f1`) VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1023');
save_master_pos;
sync_slave_with_master;
connection slave;
sync_with_master;
eval select count(*) from `$db`.`t1` /* must be 1 */;
SHOW STATUS LIKE 'Slave_running';
select * from information_schema.session_status where variable_name= 'SLAVE_RUNNING';
connection master;
eval drop database $db;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
#
# Bug #23755: Replicated event larger that max_allowed_packet infinitely re-transmits
......
......@@ -6,9 +6,7 @@
###########################################################
source include/master-slave.inc;
#save_master_pos;
#connection slave;
#sync_with_master;
#sync_slave_with_master;
#reset master;
#connection master;
......@@ -30,20 +28,16 @@ prepare stmt2 from @var2;
set @var1='from-master-3';
execute stmt2 using @var1;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
SELECT * FROM t1 ORDER BY n;
connection master;
drop table t1;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
stop slave;
source include/wait_for_slave_to_stop.inc;
# End of 4.1 tests
#
......@@ -102,13 +96,12 @@ use mysqltest1;
EXECUTE stmt_d_1;
--echo
--save_master_pos
--sync_slave_with_master
--echo
--echo # Connection: slave
--echo
--connection slave
--sync_with_master
--echo
SELECT * FROM t1;
......@@ -125,13 +118,12 @@ DROP DATABASE mysqltest1;
use test;
DROP TABLE t1;
--echo
--save_master_pos
--sync_slave_with_master
--echo
--echo # Connection: slave
--echo
--connection slave
--sync_with_master
--echo
STOP SLAVE;
......
......@@ -4,6 +4,7 @@
source include/master-slave.inc;
connection slave;
stop slave;
--source include/wait_for_slave_to_stop.inc
connection master;
# This will generate a master's binlog > 10 bytes
create table t1 (a int);
......
......@@ -18,18 +18,14 @@ insert into t1 values(15),(16),(17);
update t1 set m=20 where m=16;
delete from t1 where m=17;
create table t11 select * from t1;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
select * from t1 ORDER BY m;
select * from t2;
--error 1146
select * from t11;
connection master;
drop table if exists t1,t2,t11;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
# show slave status, just to see of it prints replicate-do-table
--replace_result $MASTER_MYPORT MASTER_PORT
--replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
......
File mode changed from 100755 to 100644
......@@ -56,6 +56,7 @@ connection master;
reset master;
connection slave;
start slave;
--source include/wait_for_slave_to_start.inc
connection master;
#
......@@ -100,6 +101,7 @@ connection slave;
#restart slave skipping one event
set global sql_slave_skip_counter=1;
start slave;
--source include/wait_for_slave_to_start.inc
connection master;
......@@ -161,9 +163,7 @@ select count(*) from t3 where n >= 4;
create table t4 select * from temp_table;
source include/show_binary_logs.inc;
source include/show_master_status.inc;
save_master_pos;
connection slave;
sync_with_master;
sync_slave_with_master;
select * from t4;
source include/show_slave_status2.inc;
......
......@@ -25,8 +25,10 @@ sync_slave_with_master;
--disable_query_log
set @storage_engine = @@global.storage_engine;
STOP SLAVE;
--source include/wait_for_slave_to_stop.inc
SET GLOBAL storage_engine=memory;
START SLAVE;
--source include/wait_for_slave_to_start.inc
--enable_query_log
--source include/reset_master_and_slave.inc
......@@ -129,8 +131,10 @@ DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9;
sync_slave_with_master;
# Here we reset the value of the default storage engine
STOP SLAVE;
--source include/wait_for_slave_to_stop.inc
SET GLOBAL storage_engine=@storage_engine;
START SLAVE;
--source include/wait_for_slave_to_start.inc
--enable_ps_protocol
# BUG#22864 (Rollback following CREATE ... SELECT discards 'CREATE
......@@ -138,11 +142,13 @@ START SLAVE;
--echo ================ BUG#22864 ================
connection slave;
STOP SLAVE;
--source include/wait_for_slave_to_stop.inc
RESET SLAVE;
connection master;
RESET MASTER;
connection slave;
START SLAVE;
--source include/wait_for_slave_to_start.inc
connection master;
SET AUTOCOMMIT=0;
CREATE TABLE t1 (a INT);
......@@ -190,6 +196,7 @@ sync_slave_with_master;
# Some tests with temporary tables
connection slave;
STOP SLAVE;
--source include/wait_for_slave_to_stop.inc
RESET SLAVE;
connection master;
......@@ -197,6 +204,7 @@ RESET MASTER;
connection slave;
START SLAVE;
--source include/wait_for_slave_to_start.inc
connection master;
CREATE TABLE t1 (a INT);
......
......@@ -116,16 +116,14 @@ sync_slave_with_master;
#(the server was started with skip-slave-start)
--disable_warnings
stop slave;
--source include/wait_for_slave_to_stop.inc
--enable_warnings
--require r/slave-stopped.result
show status like 'Slave_running';
connection master;
reset master;
connection slave;
reset slave;
start slave;
--require r/slave-running.result
show status like 'Slave_running';
--source include/wait_for_slave_to_start.inc
connection master;
# We should be clean at this point, now we will run in the file from above.
......@@ -164,7 +162,7 @@ remove_file $MYSQLTEST_VARDIR/tmp/master.sql;
# this test for position option
# By setting this position to 417, we should only get the create of t3
# By setting this position to 416, we should only get the create of t3
--disable_query_log
select "--- Test 2 position test --" as "";
--enable_query_log
......@@ -181,9 +179,7 @@ select "--- Test 3 First Remote test --" as "";
# This is broken now
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --stop-position=570 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
# This part is disabled due to bug #17654
--exec $MYSQL_BINLOG --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --stop-position=569 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
--disable_query_log
select "--- Test 4 Second Remote test --" as "";
......@@ -206,16 +202,14 @@ sync_slave_with_master;
--disable_warnings
stop slave;
--source include/wait_for_slave_to_stop.inc
--enable_warnings
--require r/slave-stopped.result
show status like 'Slave_running';
connection master;
reset master;
connection slave;
reset slave;
start slave;
--require r/slave-running.result
show status like 'Slave_running';
--source include/wait_for_slave_to_start.inc
connection master;
# We should be clean at this point, now we will run in the file from above.
......@@ -272,7 +266,7 @@ let $MYSQLD_DATADIR= `select @@datadir;`;
select "--- Test 7 reading stdin w/position --" as "";
--enable_query_log
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
--exec $MYSQL_BINLOG --short-form --position=417 --stop-position=569 - < $MYSQLD_DATADIR/master-bin.000001
--exec $MYSQL_BINLOG --short-form --position=417 --stop-position=570 - < $MYSQLD_DATADIR/master-bin.000001
# Bug#16217 (mysql client did not know how not switch its internal charset)
--disable_query_log
......@@ -285,16 +279,14 @@ sync_slave_with_master;
--disable_warnings
stop slave;
--source include/wait_for_slave_to_stop.inc
--enable_warnings
--require r/slave-stopped.result
show status like 'Slave_running';
connection master;
reset master;
connection slave;
reset slave;
start slave;
--require r/slave-running.result
show status like 'Slave_running';
--source include/wait_for_slave_to_start.inc
connection master;
create table t4 (f text character set utf8);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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