Commit 7e269592 authored by Michael Widenius's avatar Michael Widenius

Automatic merge

parents 3e32ba3f 77afc2be
drop table if exists t1; drop table if exists t1,t2;
create table t1 ( create table t1 (
a int not null references t2, a int not null references t2,
b int not null references t2 (c), b int not null references t2 (c),
...@@ -13,3 +13,30 @@ foreign key (a,b) references t3 (c,d) on update set null); ...@@ -13,3 +13,30 @@ foreign key (a,b) references t3 (c,d) on update set null);
create index a on t1 (a); create index a on t1 (a);
create unique index b on t1 (a,b); create unique index b on t1 (a,b);
drop table t1; drop table t1;
create table t1 (id int primary key) engine = innodb;
create table t2 (id int PRIMARY KEY, FOREIGN KEY (id) REFERENCES t1(id)) engine=innodb;
insert into t1 values (1), (2), (3), (4), (5), (6);
insert into t2 values (3), (5);
delete from t1;
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`id`) REFERENCES `t1` (`id`))
select * from t1;
id
1
2
3
4
5
6
delete ignore from t1;
Warnings:
Error 1451 Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`id`) REFERENCES `t1` (`id`))
Error 1451 Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`id`) REFERENCES `t1` (`id`))
select row_count();
row_count()
-1
select * from t1;
id
3
5
drop table t2;
drop table t1;
...@@ -2,8 +2,10 @@ ...@@ -2,8 +2,10 @@
# Test syntax of foreign keys # Test syntax of foreign keys
# #
-- source include/have_innodb.inc
--disable_warnings --disable_warnings
drop table if exists t1; drop table if exists t1,t2;
--enable_warnings --enable_warnings
create table t1 ( create table t1 (
...@@ -23,3 +25,23 @@ create unique index b on t1 (a,b); ...@@ -23,3 +25,23 @@ create unique index b on t1 (a,b);
drop table t1; drop table t1;
# End of 4.1 tests # End of 4.1 tests
#
# Test DELETE IGNORE
# Bug#44987 DELETE IGNORE and FK constraint
#
create table t1 (id int primary key) engine = innodb;
create table t2 (id int PRIMARY KEY, FOREIGN KEY (id) REFERENCES t1(id)) engine=innodb;
insert into t1 values (1), (2), (3), (4), (5), (6);
insert into t2 values (3), (5);
--error 1451
delete from t1;
select * from t1;
delete ignore from t1;
select row_count();
select * from t1;
drop table t2;
drop table t1;
...@@ -335,10 +335,13 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, ...@@ -335,10 +335,13 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
InnoDB it can fail in a FOREIGN KEY error or an InnoDB it can fail in a FOREIGN KEY error or an
out-of-tablespace error. out-of-tablespace error.
*/ */
if (!select_lex->no_error)
{
error= 1; error= 1;
break; break;
} }
} }
}
else else
table->file->unlock_row(); // Row failed selection, release lock on it table->file->unlock_row(); // Row failed selection, release lock on it
} }
......
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