mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
b18a1b0e6c
Bug #3329 Incomplete lower_case_table_names=2 implementation The problem was that check_db_name() converted database names to lower case also in case of lower_case_table_names=2. Fixed by removing the conversion in check_db_name for lower_case_table_names = 2 and instead converting db name to lower case at same places as table names are converted. Fixed bug that SHOW CREATE DATABASE FOO showed information for database 'foo'. I also removed some checks of lower_case_table_names when it was enough to use table_alias_charset. mysql-test/mysql-test-run.pl: Added --use-copy argument to force mysql-test-run to copy files instead of doing symlinks. This is needed when you run with test directory on another file system mysql-test/r/lowercase_table.result: Updated results mysql-test/r/lowercase_table2.result: Updated results mysql-test/suite/parts/r/partition_mgm_lc2_innodb.result: Updated results mysql-test/suite/parts/r/partition_mgm_lc2_memory.result: Updated results mysql-test/suite/parts/r/partition_mgm_lc2_myisam.result: Updated results mysql-test/t/lowercase_table.test: Added tests with mixed case databases mysql-test/t/lowercase_table2.test: Added tests with mixed case databases sql/log.cc: Don't check lower_case_table_names when we can use table_alias_charset sql/sql_base.cc: Don't check lower_case_table_names when we can use table_alias_charset sql/sql_db.cc: Use cmp_db_names() for checking if current database changed. mysql_rm_db() now converts db to lower case if lower_case_table_names was used. Changed database options cache to use table_alias_charset. This fixed a bug where SHOW CREATE DATABASE showed wrong information. sql/sql_parse.cc: Change also db name to lower case when file names are changed. Don't need to story copy of database name anymore when lower_case_table_names == 2 as check_db_name() don't convert in this case. Updated arguments to mysqld_show_create_db(). When adding table to TABLE_LIST also convert db name to lower case if needed (same way as we do with table names). sql/sql_show.cc: mysqld_show_create_db() now also takes original name as argument for output to user. sql/sql_show.h: Updated prototype for mysqld_show_create_db() sql/sql_table.cc: In mysql_rename_table(), do same conversions to database name as we do for the file name
129 lines
3 KiB
Text
129 lines
3 KiB
Text
drop table if exists t1,t2,t3,t4;
|
|
drop table if exists t0,t5,t6,t7,t8,t9;
|
|
drop database if exists mysqltest;
|
|
drop view if exists v0, v1, v2, v3, v4;
|
|
create table T1 (id int primary key, Word varchar(40) not null, Index(Word));
|
|
create table t4 (id int primary key, Word varchar(40) not null);
|
|
INSERT INTO T1 VALUES (1, 'a'), (2, 'b'), (3, 'c');
|
|
INSERT INTO T4 VALUES(1,'match');
|
|
SELECT * FROM t1;
|
|
id Word
|
|
1 a
|
|
2 b
|
|
3 c
|
|
SELECT T1.id from T1 LIMIT 1;
|
|
id
|
|
1
|
|
SELECT T2.id from t1 as T2 LIMIT 1;
|
|
id
|
|
1
|
|
SELECT * from t1 left join t4 on (test.t1.id= TEST.t4.id) where TEST.t1.id >= test.t4.id;
|
|
id Word id Word
|
|
1 a 1 match
|
|
SELECT T2.id from t1 as t2 LIMIT 1;
|
|
id
|
|
1
|
|
RENAME TABLE T1 TO T2;
|
|
ALTER TABLE T2 ADD new_col int not null;
|
|
ALTER TABLE T2 RENAME T3;
|
|
show tables like 't_';
|
|
Tables_in_test (t_)
|
|
t3
|
|
t4
|
|
drop table t3,t4;
|
|
create table t1 (a int);
|
|
select count(*) from T1;
|
|
count(*)
|
|
0
|
|
select count(*) from t1;
|
|
count(*)
|
|
0
|
|
select count(T1.a) from t1;
|
|
count(T1.a)
|
|
0
|
|
select count(bags.a) from t1 as Bags;
|
|
count(bags.a)
|
|
0
|
|
drop table t1;
|
|
create database mysqltest;
|
|
use MYSQLTEST;
|
|
create table t1 (a int);
|
|
select T1.a from MYSQLTEST.T1;
|
|
a
|
|
select t1.a from MYSQLTEST.T1;
|
|
a
|
|
select mysqltest.t1.* from MYSQLTEST.t1;
|
|
a
|
|
select MYSQLTEST.t1.* from MYSQLTEST.t1;
|
|
a
|
|
select MYSQLTEST.T1.* from MYSQLTEST.T1;
|
|
a
|
|
select MYSQLTEST.T1.* from T1;
|
|
a
|
|
alter table t1 rename to T1;
|
|
select MYSQLTEST.t1.* from MYSQLTEST.t1;
|
|
a
|
|
drop database mysqltest;
|
|
use test;
|
|
create table t1 (a int);
|
|
create table t2 (a int);
|
|
delete p1.*,P2.* from t1 as p1, t2 as p2 where p1.a=P2.a;
|
|
delete P1.*,p2.* from t1 as P1, t2 as P2 where P1.a=p2.a;
|
|
update t1 as p1, t2 as p2 SET p1.a=1,P2.a=1 where p1.a=P2.a;
|
|
update t1 as P1, t2 as P2 SET P1.a=1,p2.a=1 where P1.a=p2.a;
|
|
drop table t1,t2;
|
|
create table t1 (a int);
|
|
create table t2 (a int);
|
|
select * from t1 c, t2 C;
|
|
ERROR 42000: Not unique table/alias: 'C'
|
|
select C.a, c.a from t1 c, t2 C;
|
|
ERROR 42000: Not unique table/alias: 'C'
|
|
drop table t1, t2;
|
|
create table t1 (a int);
|
|
create table t2 like T1;
|
|
drop table t1, t2;
|
|
show tables;
|
|
Tables_in_test
|
|
set names utf8;
|
|
drop table if exists İ,İİ;
|
|
create table İ (s1 int);
|
|
show create table İ;
|
|
Table Create Table
|
|
İ CREATE TABLE `i` (
|
|
`s1` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
show tables;
|
|
Tables_in_test
|
|
i
|
|
drop table İ;
|
|
create table İİ (s1 int);
|
|
show create table İİ;
|
|
Table Create Table
|
|
İİ CREATE TABLE `ii` (
|
|
`s1` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
show tables;
|
|
Tables_in_test
|
|
ii
|
|
drop table İİ;
|
|
set names latin1;
|
|
End of 5.0 tests
|
|
create database mysql_TEST character set latin2;
|
|
create table mysql_TEST.T1 (a int);
|
|
show create database mysql_TEST;
|
|
Database Create Database
|
|
mysql_TEST CREATE DATABASE `mysql_test` /*!40100 DEFAULT CHARACTER SET latin2 */
|
|
show create table mysql_TEST.T1;
|
|
Table Create Table
|
|
T1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin2
|
|
show databases like "mysql%";
|
|
Database (mysql%)
|
|
mysql
|
|
mysql_test
|
|
show databases like "mysql_TE%";
|
|
Database (mysql_TE%)
|
|
mysql_test
|
|
drop database mysql_TEST;
|
|
End of 10.0 tests
|