mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 04:26:45 +03:00 
			
		
		
		
	This bug is a consequence of WL#5349, as the default storage engine was changed. The fix was to explicitly add an ENGINE clause to a CREATE TABLE statement, to ensure that we test case preservement on MyISAM.
		
			
				
	
	
		
			225 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			225 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #
 | |
| # Test of --lower-case-table-names=2
 | |
| # (User has case insensitive file system and wants to preserve case of
 | |
| # table names)
 | |
| #
 | |
| --source include/have_innodb.inc
 | |
| --require r/lowercase2.require
 | |
| disable_query_log;
 | |
| show variables like "lower_case_table_names";
 | |
| enable_query_log;
 | |
| 
 | |
| --disable_warnings
 | |
| DROP TABLE IF EXISTS t1,t2,t3,t2aA,t1Aa;
 | |
| DROP DATABASE IF EXISTS `TEST_$1`;
 | |
| DROP DATABASE IF EXISTS `test_$1`;
 | |
| DROP DATABASE IF EXISTS mysqltest_LC2;
 | |
| --enable_warnings
 | |
| 
 | |
| CREATE TABLE T1 (a int) ENGINE=MyISAM;
 | |
| INSERT INTO T1 VALUES (1);
 | |
| SHOW TABLES LIKE "T1";
 | |
| SHOW TABLES LIKE "t1";
 | |
| SHOW CREATE TABLE T1;
 | |
| RENAME TABLE T1 TO T2;
 | |
| SHOW TABLES LIKE "T2";
 | |
| SELECT * FROM t2;
 | |
| RENAME TABLE T2 TO t3;
 | |
| SHOW TABLES LIKE "T3";
 | |
| RENAME TABLE T3 TO T1;
 | |
| SHOW TABLES LIKE "T1";
 | |
| ALTER TABLE T1 add b int;
 | |
| SHOW TABLES LIKE "T1";
 | |
| ALTER TABLE T1 RENAME T2;
 | |
| SHOW TABLES LIKE "T2";
 | |
| 
 | |
| LOCK TABLE T2 WRITE;
 | |
| ALTER TABLE T2 drop b;
 | |
| SHOW TABLES LIKE "T2";
 | |
| UNLOCK TABLES;
 | |
| RENAME TABLE T2 TO T1;
 | |
| SHOW TABLES LIKE "T1";
 | |
| SELECT * from T1;
 | |
| DROP TABLE T1;
 | |
| 
 | |
| #
 | |
| # Test database level
 | |
| #
 | |
| 
 | |
| CREATE DATABASE `TEST_$1`;
 | |
| SHOW DATABASES LIKE "TEST%";
 | |
| DROP DATABASE `test_$1`;
 | |
| 
 | |
| #
 | |
| # Test of innodb tables with lower_case_table_names=2
 | |
| #
 | |
| 
 | |
| CREATE TABLE T1 (a int) engine=innodb;
 | |
| INSERT INTO T1 VALUES (1);
 | |
| SHOW TABLES LIKE "T1";
 | |
| SHOW TABLES LIKE "t1";
 | |
| SHOW CREATE TABLE T1;
 | |
| RENAME TABLE T1 TO T2;
 | |
| SHOW TABLES LIKE "T2";
 | |
| SELECT * FROM t2;
 | |
| RENAME TABLE T2 TO t3;
 | |
| SHOW TABLES LIKE "T3";
 | |
| RENAME TABLE T3 TO T1;
 | |
| SHOW TABLES LIKE "T1";
 | |
| ALTER TABLE T1 add b int;
 | |
| SHOW TABLES LIKE "T1";
 | |
| ALTER TABLE T1 RENAME T2;
 | |
| SHOW TABLES LIKE "T2";
 | |
| 
 | |
| LOCK TABLE T2 WRITE;
 | |
| ALTER TABLE T2 drop b;
 | |
| SHOW TABLES LIKE "T2";
 | |
| UNLOCK TABLES;
 | |
| RENAME TABLE T2 TO T1;
 | |
| SHOW TABLES LIKE "T1";
 | |
| SELECT * from T1;
 | |
| DROP TABLE T1;
 | |
| 
 | |
| #
 | |
| # Test problem with temporary tables (Bug #2858)
 | |
| #
 | |
| 
 | |
| create table T1 (EVENT_ID int auto_increment primary key,  LOCATION char(20));
 | |
| insert into T1 values (NULL,"Mic-4"),(NULL,"Mic-5"),(NULL,"Mic-6");
 | |
| SELECT LOCATION FROM T1 WHERE EVENT_ID=2 UNION ALL  SELECT LOCATION FROM T1 WHERE EVENT_ID=3;
 | |
| SELECT LOCATION FROM T1 WHERE EVENT_ID=2 UNION ALL  SELECT LOCATION FROM T1 WHERE EVENT_ID=3;
 | |
| SELECT LOCATION FROM T1 WHERE EVENT_ID=2 UNION ALL  SELECT LOCATION FROM T1 WHERE EVENT_ID=3;
 | |
| drop table T1;
 | |
| 
 | |
| #
 | |
| # Test name conversion with ALTER TABLE / CREATE INDEX (Bug #3109)
 | |
| #
 | |
| 
 | |
| create table T1 (A int);
 | |
| alter table T1 add index (A);
 | |
| show tables like 'T1%';
 | |
| alter table t1 add index (A);
 | |
| show tables like 't1%';
 | |
| drop table t1;
 | |
| 
 | |
| #
 | |
| # Bug #7261: Alter table loses temp table
 | |
| #
 | |
| 
 | |
| create temporary table T1(a int(11), b varchar(8));
 | |
| insert into T1 values (1, 'abc');
 | |
| select * from T1;
 | |
| alter table T1 add index (a);
 | |
| select * from T1;
 | |
| drop table T1;
 | |
| 
 | |
| #
 | |
| # Bug #8355: Tables not dropped from table cache on drop db
 | |
| #
 | |
| create database mysqltest_LC2;
 | |
| use mysqltest_LC2;
 | |
| create table myUC (i int);
 | |
| insert into myUC values (1),(2),(3);
 | |
| select * from myUC;
 | |
| use test;
 | |
| drop database mysqltest_LC2;
 | |
| create database mysqltest_LC2;
 | |
| use mysqltest_LC2;
 | |
| create table myUC (i int);
 | |
| select * from myUC;
 | |
| use test;
 | |
| drop database mysqltest_LC2;
 | |
| 
 | |
| #
 | |
| # Bug #9500: Problem with WHERE clause
 | |
| #
 | |
| create table t2aA (col1 int);
 | |
| create table t1Aa (col1 int);
 | |
| select t1Aa.col1 from t1aA,t2Aa where t1Aa.col1 = t2aA.col1;
 | |
| drop table t2aA, t1Aa;
 | |
| 
 | |
| # End of 4.1 tests
 | |
| 
 | |
| #
 | |
| # Bug#17661 information_schema.SCHEMATA returns uppercase with lower_case_table_names = 1
 | |
| #
 | |
| create database mysqltest_LC2;
 | |
| use mysqltest_LC2;
 | |
| create table myUC (i int);
 | |
| select TABLE_SCHEMA,TABLE_NAME FROM information_schema.TABLES
 | |
| where TABLE_SCHEMA ='mysqltest_LC2';
 | |
| use test;
 | |
| drop database mysqltest_LC2;
 | |
| 
 | |
| --echo # End of 5.1 tests
 | |
| 
 | |
| 
 | |
| --echo #
 | |
| --echo # Test for bug #44738 "fill_schema_table_from_frm() opens tables without
 | |
| --echo # lowercasing table name". Due to not properly normalizing table names
 | |
| --echo # in lower_case_table_names modes in this function queries to I_S which
 | |
| --echo # were executed through it left entries with incorrect key in table
 | |
| --echo # definition cache. As result further queries to I_S that used this
 | |
| --echo # function produced stale results in cases when table definition was
 | |
| --echo # changed by a DDL statement. Also combination of this issue and a
 | |
| --echo # similar problem in CREATE TABLE (it also has peeked into table
 | |
| --echo # definition cache using non-normalized key) led to spurious
 | |
| --echo # ER_TABLE_EXISTS_ERROR errors when one tried to create table with the
 | |
| --echo # same name as a previously existing but dropped table.
 | |
| --echo #
 | |
| --disable_warnings
 | |
| drop database if exists mysqltest_UPPERCASE;
 | |
| drop table if exists t_bug44738_UPPERCASE;
 | |
| --enable_warnings
 | |
| create database mysqltest_UPPERCASE;
 | |
| use mysqltest_UPPERCASE;
 | |
| create table t_bug44738_UPPERCASE (i int) comment='Old comment';
 | |
| create table t_bug44738_lowercase (i int) comment='Old comment';
 | |
| select table_schema, table_name, table_comment from information_schema.tables
 | |
|   where table_schema like 'mysqltest_%' and table_name like 't_bug44738_%'
 | |
|   order by table_name;
 | |
| alter table t_bug44738_UPPERCASE comment='New comment';
 | |
| alter table t_bug44738_lowercase comment='New comment';
 | |
| --echo # There should be no stale entries in TDC for our tables after the
 | |
| --echo # above ALTER TABLE statements so new version of comments should be
 | |
| --echo # returned by the below query to I_S.
 | |
| select table_schema, table_name, table_comment from information_schema.tables
 | |
|   where table_schema like 'mysqltest_%' and table_name like 't_bug44738_%'
 | |
|   order by table_name;
 | |
| drop database mysqltest_UPPERCASE;
 | |
| use test;
 | |
| 
 | |
| --echo # Let us check that the original test case which led to discovery
 | |
| --echo # of this problem also works.
 | |
| create table t_bug44738_UPPERCASE (i int);
 | |
| select table_schema, table_name, table_comment from information_schema.tables
 | |
|   where table_schema = 'test' and table_name like 't_bug44738_%';
 | |
| drop table t_bug44738_UPPERCASE;
 | |
| --echo # After the above DROP TABLE there are no entries in TDC which correspond
 | |
| --echo # to our table and therefore the below statement should succeed.
 | |
| create table t_bug44738_UPPERCASE (i int);
 | |
| drop table t_bug44738_UPPERCASE;
 | |
| 
 | |
| --echo # Finally, let us check that another issue which was exposed by
 | |
| --echo # the original test case is solved. I.e. that the table is not 
 | |
| --echo # created if there is an entry for it in TDC even though it was 
 | |
| --echo # removed from disk.
 | |
| create table t_bug44738_UPPERCASE (i int) engine = myisam;
 | |
| --echo # Load table definition in TDC.
 | |
| select table_schema, table_name, table_comment from information_schema.tables
 | |
|   where table_schema = 'test' and table_name like 't_bug44738_%';
 | |
| --echo # Simulate manual removal of the table.
 | |
| let $MYSQLD_DATADIR= `select @@datadir`;
 | |
| --remove_file $MYSQLD_DATADIR/test/t_bug44738_UPPERCASE.frm
 | |
| --remove_file $MYSQLD_DATADIR/test/t_bug44738_UPPERCASE.MYD
 | |
| --remove_file $MYSQLD_DATADIR/test/t_bug44738_UPPERCASE.MYI
 | |
| --echo # Check that still there is an entry for table in TDC.
 | |
| show open tables like 't_bug44738_%';
 | |
| --echo # So attempt to create table with the same name should fail.
 | |
| --error ER_FILE_NOT_FOUND
 | |
| create table t_bug44738_UPPERCASE (i int);
 | |
| --echo # And should succeed after FLUSH TABLES.
 | |
| flush tables;
 | |
| create table t_bug44738_UPPERCASE (i int);
 | |
| drop table t_bug44738_UPPERCASE;
 |