mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
IB: assertion failure on delete with foreign [#366]
This commit is contained in:
@@ -170,3 +170,19 @@ update parent set id=2;
|
|||||||
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))
|
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))
|
||||||
drop table child;
|
drop table child;
|
||||||
drop table parent;
|
drop table parent;
|
||||||
|
create or replace table a (
|
||||||
|
cola int(10) primary key,
|
||||||
|
v_cola int(10) as (cola mod 10) virtual
|
||||||
|
) engine=innodb with system versioning;
|
||||||
|
create index v_cola on a (v_cola);
|
||||||
|
create or replace table b(
|
||||||
|
cola int(10),
|
||||||
|
v_cola int(10)
|
||||||
|
) engine=innodb with system versioning;
|
||||||
|
alter table b add constraint `v_cola_fk`
|
||||||
|
foreign key (v_cola) references a (v_cola);
|
||||||
|
insert into a(cola) values (12);
|
||||||
|
insert into b(cola, v_cola) values (10,2);
|
||||||
|
delete from a;
|
||||||
|
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`b`, CONSTRAINT `v_cola_fk` FOREIGN KEY (`v_cola`) REFERENCES `a` (`v_cola`))
|
||||||
|
drop table b, a;
|
||||||
|
@@ -203,3 +203,29 @@ update parent set id=2;
|
|||||||
|
|
||||||
drop table child;
|
drop table child;
|
||||||
drop table parent;
|
drop table parent;
|
||||||
|
|
||||||
|
|
||||||
|
###################
|
||||||
|
# crash on DELETE #
|
||||||
|
###################
|
||||||
|
create or replace table a (
|
||||||
|
cola int(10) primary key,
|
||||||
|
v_cola int(10) as (cola mod 10) virtual
|
||||||
|
) engine=innodb with system versioning;
|
||||||
|
|
||||||
|
create index v_cola on a (v_cola);
|
||||||
|
|
||||||
|
create or replace table b(
|
||||||
|
cola int(10),
|
||||||
|
v_cola int(10)
|
||||||
|
) engine=innodb with system versioning;
|
||||||
|
|
||||||
|
alter table b add constraint `v_cola_fk`
|
||||||
|
foreign key (v_cola) references a (v_cola);
|
||||||
|
|
||||||
|
insert into a(cola) values (12);
|
||||||
|
insert into b(cola, v_cola) values (10,2);
|
||||||
|
--error ER_ROW_IS_REFERENCED_2
|
||||||
|
delete from a;
|
||||||
|
|
||||||
|
drop table b, a;
|
||||||
|
@@ -2227,10 +2227,8 @@ row_upd_store_row(
|
|||||||
NULL, NULL, NULL, ext, node->heap);
|
NULL, NULL, NULL, ext, node->heap);
|
||||||
|
|
||||||
if (node->table->n_v_cols) {
|
if (node->table->n_v_cols) {
|
||||||
row_upd_store_v_row(
|
row_upd_store_v_row(node, node->is_delete ? NULL : node->update,
|
||||||
node,
|
thd, mysql_table);
|
||||||
node->is_delete == PLAIN_DELETE ? NULL : node->update,
|
|
||||||
thd, mysql_table);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (node->is_delete == PLAIN_DELETE) {
|
if (node->is_delete == PLAIN_DELETE) {
|
||||||
|
Reference in New Issue
Block a user