mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
3e1a470705
returns nothing When looking for table or database names inside INFORMATION_SCHEMA we must convert the table and database names to lowercase (just as it's done in the rest of the server) when lowercase_table_names is non-zero. This will allow us to find the same tables that we would find if there is no condition. Fixed by converting to lower case when extracting the database and table name conditions. Test case added.
167 lines
10 KiB
Text
167 lines
10 KiB
Text
drop table if exists t1Aa,t2Aa,v1Aa,v2Aa;
|
|
drop view if exists t1Aa,t2Aa,v1Aa,v2Aa;
|
|
drop database if exists MySQLTest;
|
|
create database MySQLTest;
|
|
use MySQLTest;
|
|
create table TaB (Field int);
|
|
create view ViE as select * from TAb;
|
|
show create table VIe;
|
|
View Create View character_set_client collation_connection
|
|
vie CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vie` AS select `tab`.`Field` AS `Field` from `tab` latin1 latin1_swedish_ci
|
|
drop database MySQLTest;
|
|
use test;
|
|
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;
|
|
update v2aA set col1 = (select max(col1) from v1Aa);
|
|
ERROR HY000: The definition of table 'v1Aa' prevents operation UPDATE on table 'v2aA'.
|
|
update v2Aa set col1 = (select max(col1) from t1Aa);
|
|
ERROR HY000: The definition of table 'v2Aa' prevents operation UPDATE on table 'v2Aa'.
|
|
update v2aA set col1 = (select max(col1) from v2Aa);
|
|
ERROR HY000: You can't specify target table 'v2aA' for update in FROM clause
|
|
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from v1aA) where v2aA.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v1aA' prevents operation UPDATE on table 'v2aA'.
|
|
update t1aA,t2Aa set t1Aa.col1 = (select max(col1) from v1Aa) where t1aA.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v1Aa' prevents operation UPDATE on table 't1aA'.
|
|
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from v1aA) where v1Aa.col1 = t2aA.col1;
|
|
ERROR HY000: You can't specify target table 'v1aA' for update in FROM clause
|
|
update t2Aa,v2Aa set v2aA.col1 = (select max(col1) from v1aA) where v2Aa.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v1aA' prevents operation UPDATE on table 't2Aa'.
|
|
update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from v1Aa) where t1Aa.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v1Aa' prevents operation UPDATE on table 't2Aa'.
|
|
update t2Aa,v1aA set v1Aa.col1 = (select max(col1) from v1aA) where v1Aa.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v1aA' prevents operation UPDATE on table 't2Aa'.
|
|
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from t1aA) where v2aA.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v2aA' prevents operation UPDATE on table 'v2aA'.
|
|
update t1Aa,t2Aa set t1aA.col1 = (select max(col1) from t1Aa) where t1aA.col1 = t2aA.col1;
|
|
ERROR HY000: You can't specify target table 't1Aa' for update in FROM clause
|
|
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from t1Aa) where v1aA.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v1aA' prevents operation UPDATE on table 'v1aA'.
|
|
update t2Aa,v2Aa set v2aA.col1 = (select max(col1) from t1aA) where v2Aa.col1 = t2aA.col1;
|
|
ERROR HY000: You can't specify target table 't2Aa' for update in FROM clause
|
|
update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from t1Aa) where t1aA.col1 = t2aA.col1;
|
|
ERROR HY000: You can't specify target table 't2Aa' for update in FROM clause
|
|
update t2Aa,v1Aa set v1aA.col1 = (select max(col1) from t1Aa) where v1Aa.col1 = t2aA.col1;
|
|
ERROR HY000: You can't specify target table 't2Aa' for update in FROM clause
|
|
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from v2aA) where v2Aa.col1 = t2aA.col1;
|
|
ERROR HY000: You can't specify target table 'v2aA' for update in FROM clause
|
|
update t1aA,t2Aa set t1Aa.col1 = (select max(col1) from v2aA) where t1aA.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v2aA' prevents operation UPDATE on table 't1aA'.
|
|
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from v2Aa) where v1aA.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v2Aa' prevents operation UPDATE on table 'v1aA'.
|
|
update t2Aa,v2aA set v2Aa.col1 = (select max(col1) from v2aA) where v2Aa.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v2aA' prevents operation UPDATE on table 't2Aa'.
|
|
update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from v2aA) where t1Aa.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v2aA' prevents operation UPDATE on table 't2Aa'.
|
|
update t2Aa,v1Aa set v1aA.col1 = (select max(col1) from v2Aa) where v1Aa.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v2Aa' prevents operation UPDATE on table 't2Aa'.
|
|
update v3aA set v3Aa.col1 = (select max(col1) from v1aA);
|
|
ERROR HY000: The definition of table 'v1aA' prevents operation UPDATE on table 'v3aA'.
|
|
update v3aA set v3Aa.col1 = (select max(col1) from t1aA);
|
|
ERROR HY000: The definition of table 'v3aA' prevents operation UPDATE on table 'v3aA'.
|
|
update v3aA set v3Aa.col1 = (select max(col1) from v2aA);
|
|
ERROR HY000: The definition of table 'v2aA' prevents operation UPDATE on table 'v3aA'.
|
|
update v3aA set v3Aa.col1 = (select max(col1) from v3aA);
|
|
ERROR HY000: You can't specify target table 'v3aA' for update in FROM clause
|
|
delete from v2Aa where col1 = (select max(col1) from v1Aa);
|
|
ERROR HY000: The definition of table 'v1Aa' prevents operation DELETE on table 'v2Aa'.
|
|
delete from v2aA where col1 = (select max(col1) from t1Aa);
|
|
ERROR HY000: The definition of table 'v2aA' prevents operation DELETE on table 'v2aA'.
|
|
delete from v2Aa where col1 = (select max(col1) from v2aA);
|
|
ERROR HY000: You can't specify target table 'v2Aa' for update in FROM clause
|
|
delete v2Aa from v2aA,t2Aa where (select max(col1) from v1aA) > 0 and v2Aa.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v1aA' prevents operation DELETE on table 'v2aA'.
|
|
delete t1aA from t1Aa,t2Aa where (select max(col1) from v1Aa) > 0 and t1aA.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v1Aa' prevents operation DELETE on table 't1Aa'.
|
|
delete v1aA from v1Aa,t2Aa where (select max(col1) from v1aA) > 0 and v1Aa.col1 = t2aA.col1;
|
|
ERROR HY000: You can't specify target table 'v1Aa' for update in FROM clause
|
|
delete v2aA from v2Aa,t2Aa where (select max(col1) from t1Aa) > 0 and v2aA.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v2Aa' prevents operation DELETE on table 'v2Aa'.
|
|
delete t1aA from t1Aa,t2Aa where (select max(col1) from t1aA) > 0 and t1Aa.col1 = t2aA.col1;
|
|
ERROR HY000: You can't specify target table 't1Aa' for update in FROM clause
|
|
delete v1aA from v1Aa,t2Aa where (select max(col1) from t1aA) > 0 and v1aA.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v1Aa' prevents operation DELETE on table 'v1Aa'.
|
|
delete v2Aa from v2aA,t2Aa where (select max(col1) from v2Aa) > 0 and v2aA.col1 = t2aA.col1;
|
|
ERROR HY000: You can't specify target table 'v2aA' for update in FROM clause
|
|
delete t1Aa from t1aA,t2Aa where (select max(col1) from v2Aa) > 0 and t1Aa.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v2Aa' prevents operation DELETE on table 't1aA'.
|
|
delete v1Aa from v1aA,t2Aa where (select max(col1) from v2aA) > 0 and v1Aa.col1 = t2aA.col1;
|
|
ERROR HY000: The definition of table 'v2aA' prevents operation DELETE on table 'v1aA'.
|
|
insert into v2Aa values ((select max(col1) from v1aA));
|
|
ERROR HY000: The definition of table 'v1aA' prevents operation INSERT on table 'v2Aa'.
|
|
insert into t1aA values ((select max(col1) from v1Aa));
|
|
ERROR HY000: The definition of table 'v1Aa' prevents operation INSERT on table 't1aA'.
|
|
insert into v2aA values ((select max(col1) from v1aA));
|
|
ERROR HY000: The definition of table 'v1aA' prevents operation INSERT on table 'v2aA'.
|
|
insert into v2Aa values ((select max(col1) from t1Aa));
|
|
ERROR HY000: The definition of table 'v2Aa' prevents operation INSERT on table 'v2Aa'.
|
|
insert into t1aA values ((select max(col1) from t1Aa));
|
|
ERROR HY000: You can't specify target table 't1aA' for update in FROM clause
|
|
insert into v2aA values ((select max(col1) from t1aA));
|
|
ERROR HY000: The definition of table 'v2aA' prevents operation INSERT on table 'v2aA'.
|
|
insert into v2Aa values ((select max(col1) from v2aA));
|
|
ERROR HY000: You can't specify target table 'v2Aa' for update in FROM clause
|
|
insert into t1Aa values ((select max(col1) from v2Aa));
|
|
ERROR HY000: The definition of table 'v2Aa' prevents operation INSERT on table 't1Aa'.
|
|
insert into v2aA values ((select max(col1) from v2Aa));
|
|
ERROR HY000: You can't specify target table 'v2aA' for update in FROM clause
|
|
insert into v3Aa (col1) values ((select max(col1) from v1Aa));
|
|
ERROR HY000: The definition of table 'v1Aa' prevents operation INSERT on table 'v3Aa'.
|
|
insert into v3aA (col1) values ((select max(col1) from t1aA));
|
|
ERROR HY000: The definition of table 'v3aA' prevents operation INSERT on table 'v3aA'.
|
|
insert into v3Aa (col1) values ((select max(col1) from v2aA));
|
|
ERROR HY000: The definition of table 'v2aA' prevents operation INSERT on table 'v3Aa'.
|
|
drop view v3aA,v2Aa,v1aA;
|
|
drop table t1Aa,t2Aa;
|
|
create table t1Aa (col1 int);
|
|
create view v1Aa as select col1 from t1Aa as AaA;
|
|
show create view v1AA;
|
|
View Create View character_set_client collation_connection
|
|
v1aa CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1aa` AS select `aaa`.`col1` AS `col1` from `t1aa` `aaa` latin1 latin1_swedish_ci
|
|
drop view v1AA;
|
|
select Aaa.col1 from t1Aa as AaA;
|
|
col1
|
|
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;
|
|
View Create View character_set_client collation_connection
|
|
v1aa CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1aa` AS select `aaa`.`col1` AS `col1` from `t1aa` `aaa` latin1 latin1_swedish_ci
|
|
drop view v1AA;
|
|
drop table t1Aa;
|
|
CREATE TABLE t1 (a int, b int);
|
|
select X.a from t1 AS X group by X.b having (X.a = 1);
|
|
a
|
|
select X.a from t1 AS X group by X.b having (x.a = 1);
|
|
a
|
|
select X.a from t1 AS X group by X.b having (x.b = 1);
|
|
a
|
|
CREATE OR REPLACE VIEW v1 AS
|
|
select X.a from t1 AS X group by X.b having (X.a = 1);
|
|
SHOW CREATE VIEW v1;
|
|
View Create View character_set_client collation_connection
|
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `x`.`a` AS `a` from `t1` `x` group by `x`.`b` having (`x`.`a` = 1) latin1 latin1_swedish_ci
|
|
SELECT * FROM v1;
|
|
a
|
|
DROP VIEW v1;
|
|
DROP TABLE t1;
|
|
End of 5.0 tests.
|
|
#
|
|
# Bug #53095: SELECT column_name FROM INFORMATION_SCHEMA.STATISTICS
|
|
# returns nothing
|
|
#
|
|
CREATE TABLE `ttt` (
|
|
`f1` char(3) NOT NULL,
|
|
PRIMARY KEY (`f1`)
|
|
) ENGINE=myisam DEFAULT CHARSET=latin1;
|
|
SELECT count(COLUMN_NAME) FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME =
|
|
'TTT';
|
|
count(COLUMN_NAME)
|
|
1
|
|
SELECT count(*) FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 'TTT';
|
|
count(*)
|
|
1
|
|
DROP TABLE `ttt`;
|
|
End of 5.0 tests.
|