mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-02 02:53:04 +03:00 
			
		
		
		
	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
		
			
				
	
	
		
			130 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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
 |