summaryrefslogtreecommitdiff
path: root/mysql-test/r/lowercase_table2.result
diff options
context:
space:
mode:
authorMichael Widenius <monty@mariadb.org>2014-03-23 15:43:57 +0200
committerMichael Widenius <monty@askmonty.org>2014-03-23 15:43:57 +0200
commitb18a1b0e6ccc326ced01620edd842d899139feec (patch)
tree1c2d5fab29f5064c7050861aede99c526cc6dfd2 /mysql-test/r/lowercase_table2.result
parent797a44a9ec5a601a4745b9520c2dea321f96d155 (diff)
downloadmariadb-git-b18a1b0e6ccc326ced01620edd842d899139feec.tar.gz
MDEV-5850: MySQL Bug#21317: SHOW CREATE DATABASE does not obey to lower_case_table_names
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
Diffstat (limited to 'mysql-test/r/lowercase_table2.result')
-rw-r--r--mysql-test/r/lowercase_table2.result55
1 files changed, 55 insertions, 0 deletions
diff --git a/mysql-test/r/lowercase_table2.result b/mysql-test/r/lowercase_table2.result
index f75eed41d9f..7491334907e 100644
--- a/mysql-test/r/lowercase_table2.result
+++ b/mysql-test/r/lowercase_table2.result
@@ -108,6 +108,14 @@ SELECT * from T1;
a
1
DROP TABLE T1;
+create database mysqltest_UPPERCASE;
+CREATE TABLE mysqltest_UPPERCASE.T1 (a int) engine=innodb;
+CREATE TABLE mysqltest_uppercase.t2 (a int) engine=innodb;
+CREATE TABLE mysqltest_UPPERCASE.t3 (a int) engine=innodb;
+drop table mysqltest_UPPERCASE.T1;
+drop table mysqltest_UPPERCASE.T2;
+drop table mysqltest_uppercase.t3;
+drop database mysqltest_UPPERCASE;
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;
@@ -148,6 +156,9 @@ drop table T1;
create database mysqltest_LC2;
use mysqltest_LC2;
create table myUC (i int);
+show tables;
+Tables_in_mysqltest_LC2
+myUC
insert into myUC values (1),(2),(3);
select * from myUC;
i
@@ -224,16 +235,25 @@ drop database if exists mysqltest_UPPERCASE;
drop table if exists t_bug44738_UPPERCASE;
create database mysqltest_UPPERCASE;
use mysqltest_UPPERCASE;
+select database();
+database()
+mysqltest_UPPERCASE
create table t_bug44738_UPPERCASE (i int) comment='Old comment';
create table t_bug44738_lowercase (i int) comment='Old comment';
+create table t_bug44738_UPPERCASE2 (i int) comment='Old comment';
+create table t_bug44738_lowercase2 (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;
table_schema table_name table_comment
mysqltest_UPPERCASE t_bug44738_lowercase Old comment
+mysqltest_UPPERCASE t_bug44738_lowercase2 Old comment
mysqltest_UPPERCASE t_bug44738_UPPERCASE Old comment
+mysqltest_UPPERCASE t_bug44738_UPPERCASE2 Old comment
alter table t_bug44738_UPPERCASE comment='New comment';
alter table t_bug44738_lowercase comment='New comment';
+alter table mysqltest_uppercase.t_bug44738_UPPERCASE2 comment='New comment';
+alter table mysqltest_UPPERCASE.t_bug44738_lowercase2 comment='New comment';
# There should be no stale entries in TDC for our tables after the
# above ALTER TABLE statements so new version of comments should be
# returned by the below query to I_S.
@@ -242,7 +262,9 @@ where table_schema like 'mysqltest_%' and table_name like 't_bug44738_%'
order by table_name;
table_schema table_name table_comment
mysqltest_UPPERCASE t_bug44738_lowercase New comment
+mysqltest_UPPERCASE t_bug44738_lowercase2 New comment
mysqltest_UPPERCASE t_bug44738_UPPERCASE New comment
+mysqltest_UPPERCASE t_bug44738_UPPERCASE2 New comment
drop database mysqltest_UPPERCASE;
use test;
# Let us check that the original test case which led to discovery
@@ -279,3 +301,36 @@ ERROR 42S01: Table 't_bug44738_uppercase' already exists
flush tables;
create table t_bug44738_UPPERCASE (i int);
drop table t_bug44738_UPPERCASE;
+#
+# Bug #21317 SHOW CREATE DATABASE does not obey to
+# lower_case_table_names
+#
+create database mysql_TEST;
+create table mysql_TEST.T1(a int);
+show databases like 'mysql%';
+Database (mysql%)
+mysql
+mysql_TEST
+show databases like 'mysql_T%';
+Database (mysql_T%)
+mysql_TEST
+show databases like 'mysql_t%';
+Database (mysql_t%)
+mysql_TEST
+show create database mysql_test;
+Database Create Database
+mysql_test CREATE DATABASE `mysql_test` /*!40100 DEFAULT CHARACTER SET latin1 */
+show create database mysql_TEST;
+Database Create Database
+mysql_TEST CREATE DATABASE `mysql_TEST` /*!40100 DEFAULT CHARACTER SET latin1 */
+show create table mysql_TEST.T1;
+Table Create Table
+T1 CREATE TABLE `T1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+show create table mysql_test.t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+drop database mysql_TEST;