summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormats@mysql.com <>2005-07-05 16:02:03 +0200
committermats@mysql.com <>2005-07-05 16:02:03 +0200
commit0449ee1ca8030909ed9a6d319aa37851476731b2 (patch)
treeb455f1d05e9596838abc1ffd33e0ca47bc236d6e
parent4bc6bd38ec113ffa8682ee7d52c9b84d52de7534 (diff)
parent3c427341749963ada8666eaf24a206c17ef29d56 (diff)
downloadmariadb-git-0449ee1ca8030909ed9a6d319aa37851476731b2.tar.gz
Merging 4.1 into 5.0
-rw-r--r--client/mysqldump.c9
-rw-r--r--mysql-test/r/rpl_innodb.result37
-rw-r--r--mysql-test/std_data/loaddata_pair.dat2
-rw-r--r--mysql-test/t/rpl_innodb.test46
-rw-r--r--sql/log_event.cc2
5 files changed, 96 insertions, 0 deletions
diff --git a/client/mysqldump.c b/client/mysqldump.c
index b2bf23c3e3a..5705571777a 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -2561,6 +2561,7 @@ static int do_show_master_status(MYSQL *mysql_con)
row = mysql_fetch_row(master);
if (row && row[0] && row[1])
{
+ /* SHOW MASTER STATUS reports file and position */
if (opt_comments)
fprintf(md_result_file,
"\n--\n-- Position to start replication or point-in-time "
@@ -2570,6 +2571,14 @@ static int do_show_master_status(MYSQL *mysql_con)
comment_prefix, row[0], row[1]);
check_io(md_result_file);
}
+ else if (!ignore_errors)
+ {
+ /* SHOW MASTER STATUS reports nothing and --force is not enabled */
+ my_printf_error(0, "Error: Binlogging on server not active",
+ MYF(0), mysql_error(mysql_con));
+ mysql_free_result(master);
+ return 1;
+ }
mysql_free_result(master);
}
return 0;
diff --git a/mysql-test/r/rpl_innodb.result b/mysql-test/r/rpl_innodb.result
new file mode 100644
index 00000000000..ebf1d79c4d0
--- /dev/null
+++ b/mysql-test/r/rpl_innodb.result
@@ -0,0 +1,37 @@
+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;
+CREATE TABLE t4 (
+id INT(5) unsigned NOT NULL auto_increment,
+name varchar(15) NOT NULL default '',
+number varchar(35) NOT NULL default 'default',
+PRIMARY KEY (id),
+UNIQUE KEY unique_rec (name,number)
+) ENGINE=InnoDB;
+LOAD DATA
+INFILE '../../std_data/loaddata_pair.dat'
+REPLACE INTO TABLE t4
+(name,number);
+SELECT * FROM t4;
+id name number
+1 XXX 12345
+2 XXY 12345
+SELECT * FROM t4;
+id name number
+1 XXX 12345
+2 XXY 12345
+LOAD DATA
+INFILE '../../std_data/loaddata_pair.dat'
+REPLACE INTO TABLE t4
+(name,number);
+SELECT * FROM t4;
+id name number
+3 XXX 12345
+4 XXY 12345
+SELECT * FROM t4;
+id name number
+3 XXX 12345
+4 XXY 12345
diff --git a/mysql-test/std_data/loaddata_pair.dat b/mysql-test/std_data/loaddata_pair.dat
new file mode 100644
index 00000000000..5a4f6b57af8
--- /dev/null
+++ b/mysql-test/std_data/loaddata_pair.dat
@@ -0,0 +1,2 @@
+XXX 12345
+XXY 12345
diff --git a/mysql-test/t/rpl_innodb.test b/mysql-test/t/rpl_innodb.test
new file mode 100644
index 00000000000..b171dced26e
--- /dev/null
+++ b/mysql-test/t/rpl_innodb.test
@@ -0,0 +1,46 @@
+# File for specialities regarding replication from or to InnoDB
+# tables.
+
+source include/master-slave.inc;
+source include/have_innodb.inc;
+
+#
+# Bug#11401: Load data infile 'REPLACE INTO' fails on slave.
+#
+connection master;
+CREATE TABLE t4 (
+ id INT(5) unsigned NOT NULL auto_increment,
+ name varchar(15) NOT NULL default '',
+ number varchar(35) NOT NULL default 'default',
+ PRIMARY KEY (id),
+ UNIQUE KEY unique_rec (name,number)
+) ENGINE=InnoDB;
+
+--disable_warnings
+LOAD DATA
+ INFILE '../../std_data/loaddata_pair.dat'
+ REPLACE INTO TABLE t4
+ (name,number);
+--enable_warnings
+SELECT * FROM t4;
+
+sync_slave_with_master;
+SELECT * FROM t4;
+
+connection master;
+--disable_warnings
+LOAD DATA
+ INFILE '../../std_data/loaddata_pair.dat'
+ REPLACE INTO TABLE t4
+ (name,number);
+--enable_warnings
+SELECT * FROM t4;
+
+sync_slave_with_master;
+SELECT * FROM t4;
+
+connection master;
+--disable_query_log
+DROP TABLE t4;
+--enable_query_log
+sync_slave_with_master;
diff --git a/sql/log_event.cc b/sql/log_event.cc
index 5a612791cdd..0873ee50743 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -2749,7 +2749,9 @@ int Load_log_event::exec_event(NET* net, struct st_relay_log_info* rli,
thd->query= load_data_query;
if (sql_ex.opt_flags & REPLACE_FLAG)
+ {
handle_dup= DUP_REPLACE;
+ }
else if (sql_ex.opt_flags & IGNORE_FLAG)
{
ignore= 1;