1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206
|
#
# Test of --lower-case-table-names
#
show variables like "lower_case_table_names";
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);
--disable_service_connection
select T1.a from MYSQLTEST.T1;
select t1.a from MYSQLTEST.T1;
--enable_service_connection
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 ER_NONUNIQ_TABLE
select * from t1 c, t2 C;
--error ER_NONUNIQ_TABLE
select C.a, c.a from t1 c, t2 C;
drop table t1, t2;
--echo #
--echo # Bug #9761: CREATE TABLE ... LIKE ... not handled correctly when lower_case_table_names is set
--echo #
create table t1 (a int);
create table t2 like T1;
drop table t1, t2;
show tables;
--echo #
--echo # End of 4.1 tests
--echo #
--echo #
--echo # Bug#20404: SHOW CREATE TABLE fails with Turkish I
--echo #
set names utf8;
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 #
--echo # End of 5.0 tests
--echo #
--echo #
--echo # Bug#21317: SHOW CREATE DATABASE does not obey to lower_case_table_names
--echo #
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 #
--echo # End of 10.0 tests
--echo #
--echo #
--echo # MDEV-17148 DROP DATABASE throw "Directory not empty" after changed lower_case_table_names.
--echo #
let $datadir=`select @@datadir`;
create database db1;
create table t1 (a int);
copy_file $datadir/test/t1.frm $datadir/db1/T1.frm;
drop database db1;
drop table t1;
--echo #
--echo # End of 10.2 tests
--echo #
--echo #
--echo # MDEV-25109 Server crashes in sp_name::sp_name upon invalid data in mysql.proc
--echo #
call mtr.add_suppression("Stored routine ''.'': invalid value in column");
insert ignore into mysql.proc () values ();
--error ER_SP_WRONG_NAME
show function status;
delete from mysql.proc where name = '';
--echo #
--echo # End of 10.3 tests
--echo #
--echo #
--echo # Start of 11.3 tests
--echo #
--echo #
--echo # MDEV-31948 Add class DBNameBuffer, split check_db_name() into stages
--echo #
SET NAMES utf8;
# U+FFED HALFWIDTH BLACK SQUARE
SET @mb3char= _utf8 0xEFBFAD;
# Database names fitting into the NAME_CHAR_LEN characters limit
--error ER_BAD_DB_ERROR
EXECUTE IMMEDIATE CONCAT('use `', REPEAT(@mb3char, 64), '`');
--error ER_BAD_DB_ERROR
EXECUTE IMMEDIATE CONCAT('use `#mysql50#', REPEAT(@mb3char, 64), '`');
--error ER_BAD_DB_ERROR
EXECUTE IMMEDIATE CONCAT('SHOW CREATE DATABASE `', REPEAT(@mb3char, 64), '`');
--error ER_BAD_DB_ERROR
EXECUTE IMMEDIATE CONCAT('SHOW CREATE DATABASE `#mysql50#', REPEAT(@mb3char, 64), '`');
# Database names longer than NAME_CHAR_LEN characters
--error ER_WRONG_DB_NAME
EXECUTE IMMEDIATE CONCAT('use `', REPEAT(@mb3char, 65), '`');
--error ER_WRONG_DB_NAME
EXECUTE IMMEDIATE CONCAT('use `#mysql50#', REPEAT(@mb3char, 65), '`');
--error ER_WRONG_DB_NAME
EXECUTE IMMEDIATE CONCAT('SHOW CREATE DATABASE `', REPEAT(@mb3char, 65), '`');
--error ER_WRONG_DB_NAME
EXECUTE IMMEDIATE CONCAT('SHOW CREATE DATABASE `#mysql50#', REPEAT(@mb3char, 65), '`');
--echo #
--echo # End of 11.3 tests
--echo #
--echo #
--echo # Start of 11.4 tests
--echo #
--echo #
--echo # MDEV-33110 HANDLER commands are case insensitive with lower-case-table-names=0
--echo #
SET sql_mode=ORACLE;
DELIMITER $$;
CREATE OR REPLACE PACKAGE test.pkg AS
END TEST.PKG;
$$
DELIMITER ;$$
DROP PACKAGE test.pkg;
--echo #
--echo # End of 11.4 tests
--echo #
|