Details
Description
When working with a case sensitive file-system, MariaDB (it also fails in MySQL) allows you to have
a database with the same name in different cases (example TEST/test).
This works correctly.
However, procedures that are related to that database are stored inside
information_schema.routines associated with ROUTINE_SCHEMA which is a
case insensitive column.
This brings a problem, for example, when using mysqldump since when
listing routines to dump in the line "SHOW %s STATUS WHERE Db = '%s'"
it would bring procedures from other databases that have the same name
with different case.
mysqldump could be modified to use mysql.proc instead which correctly
has utf8_bin in the Db column, but I'm not sure that would be the best
to go since this affects anyone using SHOW <P/F> STATUS.
CREATE DATABASE A;
USE A;
delimiter //
CREATE PROCEDURE simpleproc()
BEGIN
SELECT 1;
END//
delimiter ;
CREATE DATABASE a;
USE a;
SHOW PROCEDURE STATUS WHERE Db = 'a';
-- Incorrectly shows procedure from A
SELECT count(*) FROM mysql.proc WHERE Db='a';
-- Correctly show 0 results
DROP DATABASE A;
DROP DATABASE a;
Gliffy Diagrams
Attachments
Issue Links
Activity
- All
- Comments
- Work Log
- History
- Activity
- Transitions
This shows a worse scenario where SHOW CREATE PROCEDURE shows the incorrect procedure.
Note that I also reported this on MySQL: http://bugs.mysql.com/?id=72029