mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
170ae2d252
The columns in HAVING can reference the GROUP BY and SELECT columns. There can be "table" prefixes when referencing these columns. And these "table" prefixes in HAVING use the table alias if available. This means that table aliases are subject to the same storage rules as table names and are dependent on lower_case_table_names in the same way as the table names are. Fixed by : 1. Treating table aliases as table names and make them lowercase when printing out the SQL statement for view persistence. 2. Using case insensitive comparison for table aliases when requested by lower_case_table_names mysql-test/r/lowercase_view.result: Bug #31562: test case mysql-test/t/lowercase_view.test: Bug #31562: test case sql/item.cc: Bug #31562: lower_case_table_name contious comparison when searching in GROUP BY sql/sql_base.cc: Bug #31562: lower_case_table_name contious comparison when searching in SELECT sql/sql_select.cc: Bug #31562: treat table aliases as table names and make them lowercase when printing
163 lines
5.8 KiB
Text
163 lines
5.8 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 1443
|
|
update v2aA set col1 = (select max(col1) from v1Aa);
|
|
-- error 1443
|
|
update v2Aa set col1 = (select max(col1) from t1Aa);
|
|
-- error 1093
|
|
update v2aA set col1 = (select max(col1) from v2Aa);
|
|
-- error 1443
|
|
update v2aA,t2Aa set v2Aa.col1 = (select max(col1) from v1aA) where v2aA.col1 = t2aA.col1;
|
|
-- error 1443
|
|
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 1443
|
|
update t2Aa,v2Aa set v2aA.col1 = (select max(col1) from v1aA) where v2Aa.col1 = t2aA.col1;
|
|
-- error 1443
|
|
update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from v1Aa) where t1Aa.col1 = t2aA.col1;
|
|
-- error 1443
|
|
update t2Aa,v1aA set v1Aa.col1 = (select max(col1) from v1aA) where v1Aa.col1 = t2aA.col1;
|
|
-- error 1443
|
|
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 1443
|
|
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 1443
|
|
update t1aA,t2Aa set t1Aa.col1 = (select max(col1) from v2aA) where t1aA.col1 = t2aA.col1;
|
|
-- error 1443
|
|
update v1aA,t2Aa set v1Aa.col1 = (select max(col1) from v2Aa) where v1aA.col1 = t2aA.col1;
|
|
-- error 1443
|
|
update t2Aa,v2aA set v2Aa.col1 = (select max(col1) from v2aA) where v2Aa.col1 = t2aA.col1;
|
|
-- error 1443
|
|
update t2Aa,t1Aa set t1aA.col1 = (select max(col1) from v2aA) where t1Aa.col1 = t2aA.col1;
|
|
-- error 1443
|
|
update t2Aa,v1Aa set v1aA.col1 = (select max(col1) from v2Aa) where v1Aa.col1 = t2aA.col1;
|
|
-- error 1443
|
|
update v3aA set v3Aa.col1 = (select max(col1) from v1aA);
|
|
-- error 1443
|
|
update v3aA set v3Aa.col1 = (select max(col1) from t1aA);
|
|
-- error 1443
|
|
update v3aA set v3Aa.col1 = (select max(col1) from v2aA);
|
|
-- error 1093
|
|
update v3aA set v3Aa.col1 = (select max(col1) from v3aA);
|
|
-- error 1443
|
|
delete from v2Aa where col1 = (select max(col1) from v1Aa);
|
|
-- error 1443
|
|
delete from v2aA where col1 = (select max(col1) from t1Aa);
|
|
-- error 1093
|
|
delete from v2Aa where col1 = (select max(col1) from v2aA);
|
|
-- error 1443
|
|
delete v2Aa from v2aA,t2Aa where (select max(col1) from v1aA) > 0 and v2Aa.col1 = t2aA.col1;
|
|
-- error 1443
|
|
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 1443
|
|
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 1443
|
|
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 1443
|
|
delete t1Aa from t1aA,t2Aa where (select max(col1) from v2Aa) > 0 and t1Aa.col1 = t2aA.col1;
|
|
-- error 1443
|
|
delete v1Aa from v1aA,t2Aa where (select max(col1) from v2aA) > 0 and v1Aa.col1 = t2aA.col1;
|
|
-- error 1443
|
|
insert into v2Aa values ((select max(col1) from v1aA));
|
|
-- error 1443
|
|
insert into t1aA values ((select max(col1) from v1Aa));
|
|
-- error 1443
|
|
insert into v2aA values ((select max(col1) from v1aA));
|
|
-- error 1443
|
|
insert into v2Aa values ((select max(col1) from t1Aa));
|
|
-- error 1093
|
|
insert into t1aA values ((select max(col1) from t1Aa));
|
|
-- error 1443
|
|
insert into v2aA values ((select max(col1) from t1aA));
|
|
-- error 1093
|
|
insert into v2Aa values ((select max(col1) from v2aA));
|
|
-- error 1443
|
|
insert into t1Aa values ((select max(col1) from v2Aa));
|
|
-- error 1093
|
|
insert into v2aA values ((select max(col1) from v2Aa));
|
|
-- error 1443
|
|
insert into v3Aa (col1) values ((select max(col1) from v1Aa));
|
|
-- error 1443
|
|
insert into v3aA (col1) values ((select max(col1) from t1aA));
|
|
-- error 1443
|
|
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;
|
|
|
|
|
|
#
|
|
# Bug #31562: HAVING and lower case
|
|
#
|
|
|
|
CREATE TABLE t1 (a int, b int);
|
|
|
|
select X.a from t1 AS X group by X.b having (X.a = 1);
|
|
select X.a from t1 AS X group by X.b having (x.a = 1);
|
|
select X.a from t1 AS X group by X.b having (x.b = 1);
|
|
|
|
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;
|
|
|
|
SELECT * FROM v1;
|
|
|
|
DROP VIEW v1;
|
|
DROP TABLE t1;
|
|
|
|
--echo End of 5.0 tests.
|