mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug#25123: ON DUPLICATE KEY clause allows fields not from the insert table.
When inserting into a join-based view the update fields from the ON DUPLICATE KEY UPDATE wasn't checked to be from the table being inserted into and were silently ignored. The new check_view_single_update() function is added to check that insert/update fields are being from the same single table of the view.
This commit is contained in:
@ -325,3 +325,24 @@ select row_count();
|
||||
row_count()
|
||||
1
|
||||
drop table t1;
|
||||
create table t1 (f1 int unique, f2 int);
|
||||
create table t2 (f3 int, f4 int);
|
||||
create view v1 as select * from t1, t2 where f1= f3;
|
||||
insert into t1 values (1,11), (2,22);
|
||||
insert into t2 values (1,12), (2,24);
|
||||
insert into v1 (f1) values (3) on duplicate key update f3= f3 + 10;
|
||||
ERROR HY000: Can not modify more than one base table through a join view 'test.v1'
|
||||
insert into v1 (f1) values (3) on duplicate key update f1= f3 + 10;
|
||||
select * from t1;
|
||||
f1 f2
|
||||
1 11
|
||||
2 22
|
||||
3 NULL
|
||||
insert into v1 (f1) values (3) on duplicate key update f1= f3 + 10;
|
||||
select * from t1;
|
||||
f1 f2
|
||||
1 11
|
||||
2 22
|
||||
12 NULL
|
||||
drop view v1;
|
||||
drop table t1,t2;
|
||||
|
Reference in New Issue
Block a user