mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
MDEV-28802 DROP DATABASE in InnoDB still is case-insensitive
innodb_drop_database(): Use explicit TO_BINARY casts on SYS_TABLES.NAME, which for historical reasons uses the wrong collation latin1_swedish_ci instead of BINARY.
This commit is contained in:
parent
65dd31088a
commit
1f3f457193
3 changed files with 35 additions and 1 deletions
16
mysql-test/suite/innodb/r/dropdb_cs.result
Normal file
16
mysql-test/suite/innodb/r/dropdb_cs.result
Normal file
|
@ -0,0 +1,16 @@
|
|||
#
|
||||
# MDEV-28802 DROP DATABASE in InnoDB still is case-insensitive
|
||||
#
|
||||
SET @save_fpt=@@GLOBAL.innodb_file_per_table;
|
||||
SET GLOBAL innodb_file_per_table=0;
|
||||
CREATE DATABASE Db;
|
||||
CREATE TABLE Db.t1 (c1 INT KEY) ENGINE=InnoDB;
|
||||
CREATE DATABASE DB;
|
||||
DROP DATABASE DB;
|
||||
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'D%';
|
||||
NAME
|
||||
Db/t1
|
||||
DROP DATABASE Db;
|
||||
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'D%';
|
||||
TABLE_ID NAME FLAG N_COLS SPACE ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
|
||||
SET GLOBAL innodb_file_per_table=@save_fpt;
|
17
mysql-test/suite/innodb/t/dropdb_cs.test
Normal file
17
mysql-test/suite/innodb/t/dropdb_cs.test
Normal file
|
@ -0,0 +1,17 @@
|
|||
--source include/have_innodb.inc
|
||||
--source include/have_case_sensitive_file_system.inc
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-28802 DROP DATABASE in InnoDB still is case-insensitive
|
||||
--echo #
|
||||
|
||||
SET @save_fpt=@@GLOBAL.innodb_file_per_table;
|
||||
SET GLOBAL innodb_file_per_table=0;
|
||||
CREATE DATABASE Db;
|
||||
CREATE TABLE Db.t1 (c1 INT KEY) ENGINE=InnoDB;
|
||||
CREATE DATABASE DB;
|
||||
DROP DATABASE DB;
|
||||
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'D%';
|
||||
DROP DATABASE Db;
|
||||
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'D%';
|
||||
SET GLOBAL innodb_file_per_table=@save_fpt;
|
|
@ -1476,7 +1476,8 @@ static void innodb_drop_database(handlerton*, char *path)
|
|||
"WHILE 1 = 1 LOOP\n"
|
||||
" FETCH tab INTO tid,name;\n"
|
||||
" IF (SQL % NOTFOUND) THEN EXIT; END IF;\n"
|
||||
" IF SUBSTR(name, 0, LENGTH(:db)) <> :db THEN EXIT; END IF;\n"
|
||||
" IF TO_BINARY(SUBSTR(name, 0, LENGTH(:db))) <> TO_BINARY(:db)"
|
||||
" THEN EXIT; END IF;\n"
|
||||
" DELETE FROM SYS_COLUMNS WHERE TABLE_ID=tid;\n"
|
||||
" DELETE FROM SYS_TABLES WHERE ID=tid;\n"
|
||||
" OPEN idx;\n"
|
||||
|
|
Loading…
Reference in a new issue