mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
daddf263e5
(BUG##9398, BUG#8703) fixed wrong join view detection in multi-delete which lead to server crash mysql-test/r/lowercase_view.result: added new tests of updation and selection from the same table mysql-test/r/view.result: added new tests of updation and selection from the same table added test of multidelete command over join view which lead to server crash test suite from bugs #9398 and #8703 mysql-test/t/lowercase_view.test: added new tests of updation and selection from the same table mysql-test/t/view.test: added new tests of updation and selection from the same table added test of multidelete command over join view which lead to server crash test suite from bugs #9398 and #8703 sql/sql_base.cc: changed procedure of finding tables sql/sql_class.cc: added derived table procession detection sql/sql_class.h: added derived table procession detection sql/sql_delete.cc: fixed detection of selection from table which update for multidelete sql/sql_derived.cc: added derived table procession detection sql/sql_lex.cc: added detection os SELECTs processed inside derived tables removed old mechanism of multidelete/multiupdate table duplication detection (which can't work with views) sql/sql_lex.h: added detection os SELECTs processed inside derived tables removed old mechanism of multidelete/multiupdate table duplication detection (which can't work with views) sql/sql_parse.cc: removed wrong test of join view (for multidelete in can be not only first table) sql/sql_prepare.cc: added detection os SELECTs processed inside derived tables (reset it for reusing in PS/SP) sql/sql_select.cc: added detection os SELECTs processed inside derived tables sql/sql_update.cc: fixed detection of selection from table which update for multiupdate
140 lines
5.3 KiB
Text
140 lines
5.3 KiB
Text
--disable_warnings
|
|
drop table if exists t1Aa,t2Aa,v1Aa,v2Aa;
|
|
drop view if exists t1Aa,t2Aa,v1Aa,v2Aa;
|
|
drop database if exists MySQLTest;
|
|
--enable_warnings
|
|
|
|
#
|
|
# different cases in VIEW
|
|
#
|
|
create database MySQLTest;
|
|
use MySQLTest;
|
|
create table TaB (Field int);
|
|
create view ViE as select * from TAb;
|
|
show create table VIe;
|
|
drop database MySQLTest;
|
|
use test;
|
|
|
|
#
|
|
# test of updating and fetching from the same table check
|
|
#
|
|
create table t1Aa (col1 int);
|
|
create table t2aA (col1 int);
|
|
create view v1Aa as select * from t1aA;
|
|
create view v2aA as select * from v1aA;
|
|
create view v3Aa as select v2Aa.col1 from v2aA,t2Aa where v2Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update v2aA set col1 = (select max(col1) from v1Aa);
|
|
-- error 1093
|
|
update v2Aa set col1 = (select max(col1) from t1Aa);
|
|
-- error 1093
|
|
update v2aA set col1 = (select max(col1) from v2Aa);
|
|
-- error 1093
|
|
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from v1aA) where v2aA.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update t1aA,t2Aa set t1Aa.col1 = (select max(col1) from v1Aa) where t1aA.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from v1aA) where v1Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update t2Aa,v2Aa set v2aA.col1 = (select max(col1) from v1aA) where v2Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from v1Aa) where t1Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update t2Aa,v1aA set v1Aa.col1 = (select max(col1) from v1aA) where v1Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from t1aA) where v2aA.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update t1Aa,t2Aa set t1aA.col1 = (select max(col1) from t1Aa) where t1aA.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from t1Aa) where v1aA.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update t2Aa,v2Aa set v2aA.col1 = (select max(col1) from t1aA) where v2Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from t1Aa) where t1aA.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update t2Aa,v1Aa set v1aA.col1 = (select max(col1) from t1Aa) where v1Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from v2aA) where v2Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update t1aA,t2Aa set t1Aa.col1 = (select max(col1) from v2aA) where t1aA.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from v2Aa) where v1aA.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update t2Aa,v2aA set v2Aa.col1 = (select max(col1) from v2aA) where v2Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from v2aA) where t1Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update t2Aa,v1Aa set v1aA.col1 = (select max(col1) from v2Aa) where v1Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
update v3aA set v3Aa.col1 = (select max(col1) from v1aA);
|
|
-- error 1093
|
|
update v3aA set v3Aa.col1 = (select max(col1) from t1aA);
|
|
-- error 1093
|
|
update v3aA set v3Aa.col1 = (select max(col1) from v2aA);
|
|
-- error 1093
|
|
update v3aA set v3Aa.col1 = (select max(col1) from v3aA);
|
|
-- error 1093
|
|
delete from v2Aa where col1 = (select max(col1) from v1Aa);
|
|
-- error 1093
|
|
delete from v2aA where col1 = (select max(col1) from t1Aa);
|
|
-- error 1093
|
|
delete from v2Aa where col1 = (select max(col1) from v2aA);
|
|
-- error 1093
|
|
delete v2Aa from v2aA,t2Aa where (select max(col1) from v1aA) > 0 and v2Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
delete t1aA from t1Aa,t2Aa where (select max(col1) from v1Aa) > 0 and t1aA.col1 = t2aA.col1;
|
|
-- error 1093
|
|
delete v1aA from v1Aa,t2Aa where (select max(col1) from v1aA) > 0 and v1Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
delete v2aA from v2Aa,t2Aa where (select max(col1) from t1Aa) > 0 and v2aA.col1 = t2aA.col1;
|
|
-- error 1093
|
|
delete t1aA from t1Aa,t2Aa where (select max(col1) from t1aA) > 0 and t1Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
delete v1aA from v1Aa,t2Aa where (select max(col1) from t1aA) > 0 and v1aA.col1 = t2aA.col1;
|
|
-- error 1093
|
|
delete v2Aa from v2aA,t2Aa where (select max(col1) from v2Aa) > 0 and v2aA.col1 = t2aA.col1;
|
|
-- error 1093
|
|
delete t1Aa from t1aA,t2Aa where (select max(col1) from v2Aa) > 0 and t1Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
delete v1Aa from v1aA,t2Aa where (select max(col1) from v2aA) > 0 and v1Aa.col1 = t2aA.col1;
|
|
-- error 1093
|
|
insert into v2Aa values ((select max(col1) from v1aA));
|
|
-- error 1093
|
|
insert into t1aA values ((select max(col1) from v1Aa));
|
|
-- error 1093
|
|
insert into v2aA values ((select max(col1) from v1aA));
|
|
-- error 1093
|
|
insert into v2Aa values ((select max(col1) from t1Aa));
|
|
-- error 1093
|
|
insert into t1aA values ((select max(col1) from t1Aa));
|
|
-- error 1093
|
|
insert into v2aA values ((select max(col1) from t1aA));
|
|
-- error 1093
|
|
insert into v2Aa values ((select max(col1) from v2aA));
|
|
-- error 1093
|
|
insert into t1Aa values ((select max(col1) from v2Aa));
|
|
-- error 1093
|
|
insert into v2aA values ((select max(col1) from v2Aa));
|
|
-- error 1093
|
|
insert into v3Aa (col1) values ((select max(col1) from v1Aa));
|
|
-- error 1093
|
|
insert into v3aA (col1) values ((select max(col1) from t1aA));
|
|
-- error 1093
|
|
insert into v3Aa (col1) values ((select max(col1) from v2aA));
|
|
drop view v3aA,v2Aa,v1aA;
|
|
drop table t1Aa,t2Aa;
|
|
|
|
#
|
|
# aliases in VIEWs
|
|
#
|
|
create table t1Aa (col1 int);
|
|
create view v1Aa as select col1 from t1Aa as AaA;
|
|
show create view v1AA;
|
|
drop view v1AA;
|
|
select Aaa.col1 from t1Aa as AaA;
|
|
create view v1Aa as select Aaa.col1 from t1Aa as AaA;
|
|
drop view v1AA;
|
|
create view v1Aa as select AaA.col1 from t1Aa as AaA;
|
|
show create view v1AA;
|
|
drop view v1AA;
|
|
drop table t1Aa;
|