mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 04:26:45 +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
		
			
				
	
	
		
			121 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #
 | |
| # Test of --lower-case-table-names
 | |
| #
 | |
| 
 | |
| --disable_warnings
 | |
| drop table if exists t1,t2,t3,t4;
 | |
| # Clear up from other tests (to ensure that SHOW TABLES below is right)
 | |
| drop table if exists t0,t5,t6,t7,t8,t9;
 | |
| drop database if exists mysqltest;
 | |
| drop view if exists v0, v1, v2, v3, v4;
 | |
| --enable_warnings
 | |
| 
 | |
| 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;
 | |
| SELECT T1.id from T1 LIMIT 1;
 | |
| SELECT T2.id from t1 as T2 LIMIT 1;
 | |
| SELECT * from t1 left join t4 on (test.t1.id= TEST.t4.id) where TEST.t1.id >= test.t4.id;
 | |
| # This gave an error in 4.0, but it's fixed in 4.1
 | |
| SELECT T2.id from t1 as t2 LIMIT 1;
 | |
| RENAME TABLE T1 TO T2;
 | |
| ALTER TABLE T2 ADD new_col int not null;
 | |
| ALTER TABLE T2 RENAME T3;
 | |
| show tables like 't_';
 | |
| drop table t3,t4;
 | |
| #
 | |
| # Test alias
 | |
| #
 | |
| create table t1 (a int);
 | |
| select count(*) from T1;
 | |
| select count(*) from t1;
 | |
| select count(T1.a) from t1;
 | |
| select count(bags.a) from t1 as Bags;
 | |
| drop table t1;
 | |
| 
 | |
| #
 | |
| # Test all caps database name
 | |
| #
 | |
| create database mysqltest;
 | |
| use MYSQLTEST;
 | |
| create table t1 (a int);
 | |
| select T1.a from MYSQLTEST.T1;
 | |
| select t1.a from MYSQLTEST.T1;
 | |
| select mysqltest.t1.* from MYSQLTEST.t1;
 | |
| select MYSQLTEST.t1.* from MYSQLTEST.t1;
 | |
| select MYSQLTEST.T1.* from MYSQLTEST.T1;
 | |
| select MYSQLTEST.T1.* from T1;
 | |
| alter table t1 rename to T1;
 | |
| select MYSQLTEST.t1.* from MYSQLTEST.t1;
 | |
| drop database mysqltest;
 | |
| use test;
 | |
| 
 | |
| #
 | |
| # multiupdate/delete & --lower-case-table-names
 | |
| #
 | |
| 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;
 | |
| 
 | |
| #
 | |
| # aliases case insensitive
 | |
| #
 | |
| create table t1 (a int);
 | |
| create table t2 (a int);
 | |
| -- error 1066
 | |
| select * from t1 c, t2 C;
 | |
| -- error 1066
 | |
| select C.a, c.a from t1 c, t2 C;
 | |
| drop table t1, t2;
 | |
| 
 | |
| #
 | |
| # Bug #9761: CREATE TABLE ... LIKE ... not handled correctly when
 | |
| # lower_case_table_names is set
 | |
| 
 | |
| create table t1 (a int);
 | |
| create table t2 like T1;
 | |
| drop table t1, t2;
 | |
| 
 | |
| show tables;
 | |
| 
 | |
| # End of 4.1 tests
 | |
| 
 | |
| 
 | |
| #
 | |
| # Bug#20404: SHOW CREATE TABLE fails with Turkish I
 | |
| #
 | |
| set names utf8;
 | |
| --disable_warnings
 | |
| drop table if exists İ,İİ;
 | |
| --enable_warnings
 | |
| create table İ (s1 int);
 | |
| show create table İ;
 | |
| show tables;
 | |
| drop table İ;
 | |
| create table İİ (s1 int);
 | |
| show create table İİ;
 | |
| show tables;
 | |
| drop table İİ;
 | |
| set names latin1;
 | |
| 
 | |
| --echo End of 5.0 tests
 | |
| 
 | |
| #
 | |
| # Bug#21317: SHOW CREATE DATABASE does not obey to lower_case_table_names
 | |
| #
 | |
| create database mysql_TEST character set latin2;
 | |
| create table mysql_TEST.T1 (a int);
 | |
| show create database mysql_TEST;
 | |
| show create table mysql_TEST.T1;
 | |
| show databases like "mysql%";
 | |
| show databases like "mysql_TE%";
 | |
| drop database mysql_TEST;
 | |
| 
 | |
| --echo End of 10.0 tests
 |