mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
a302953bf7
The problem was that RENAME TABLE caused an assert if the system variable lower_case_table_names was 2 (default on Mac OS X) and the old table name was given in upper case. This caused lowercase_table2.test to fail. The assert checks that an exclusive metadata lock is held by the connection trying to do RENAME TABLE - specificially during updates of table triggers. The assert was triggered since the check is case sensitive and the lock was held on the normalized (lower case) version of the table name. This patch fixes the problem by making sure a normalized version of the table name is used for the metadata lock check, while using a non-normalized version of the table name for the rename of trigger files. The same is done for ALTER TABLE ... RENAME. Regression testing for the bug itself is already covered by lowercase_table2.test. Additional coverage added to lowercase_fs_off.test.
104 lines
2.4 KiB
Text
104 lines
2.4 KiB
Text
#
|
|
# Specific tests for case sensitive file systems
|
|
# i.e. lower_case_filesystem=OFF
|
|
#
|
|
-- source include/have_case_sensitive_file_system.inc
|
|
-- source include/not_embedded.inc
|
|
|
|
connect (master,localhost,root,,);
|
|
connection master;
|
|
create database d1;
|
|
grant all on d1.* to 'sample'@'localhost' identified by 'password';
|
|
flush privileges;
|
|
|
|
connect (sample,localhost,sample,password,d1);
|
|
connection sample;
|
|
select database();
|
|
--error ER_DBACCESS_DENIED_ERROR
|
|
create database d2;
|
|
--error ER_DBACCESS_DENIED_ERROR
|
|
create database D1;
|
|
disconnect sample;
|
|
--source include/wait_until_disconnected.inc
|
|
|
|
connection master;
|
|
drop user 'sample'@'localhost';
|
|
drop database if exists d1;
|
|
disconnect master;
|
|
--source include/wait_until_disconnected.inc
|
|
connection default;
|
|
|
|
# End of 4.1 tests
|
|
|
|
#
|
|
# Bug#41049 does syntax "grant" case insensitive?
|
|
#
|
|
CREATE DATABASE d1;
|
|
USE d1;
|
|
CREATE TABLE T1(f1 INT);
|
|
CREATE TABLE t1(f1 INT);
|
|
GRANT SELECT ON T1 to user_1@localhost;
|
|
|
|
connect (con1,localhost,user_1,,d1);
|
|
--error ER_TABLEACCESS_DENIED_ERROR
|
|
select * from t1;
|
|
select * from T1;
|
|
connection default;
|
|
GRANT SELECT ON t1 to user_1@localhost;
|
|
connection con1;
|
|
select * from information_schema.table_privileges;
|
|
connection default;
|
|
disconnect con1;
|
|
|
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user_1@localhost;
|
|
DROP USER user_1@localhost;
|
|
DROP DATABASE d1;
|
|
USE test;
|
|
|
|
CREATE DATABASE db1;
|
|
USE db1;
|
|
CREATE PROCEDURE p1() BEGIN END;
|
|
CREATE FUNCTION f1(i INT) RETURNS INT RETURN i+1;
|
|
|
|
GRANT USAGE ON db1.* to user_1@localhost;
|
|
GRANT EXECUTE ON PROCEDURE db1.P1 to user_1@localhost;
|
|
GRANT EXECUTE ON FUNCTION db1.f1 to user_1@localhost;
|
|
GRANT UPDATE ON db1.* to USER_1@localhost;
|
|
|
|
connect (con1,localhost,user_1,,db1);
|
|
call p1();
|
|
call P1();
|
|
select f1(1);
|
|
connect (con2,localhost,USER_1,,db1);
|
|
--error ER_PROCACCESS_DENIED_ERROR
|
|
call p1();
|
|
--error ER_PROCACCESS_DENIED_ERROR
|
|
call P1();
|
|
--error ER_PROCACCESS_DENIED_ERROR
|
|
select f1(1);
|
|
|
|
connection default;
|
|
disconnect con1;
|
|
disconnect con2;
|
|
|
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user_1@localhost;
|
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM USER_1@localhost;
|
|
DROP FUNCTION f1;
|
|
DROP PROCEDURE p1;
|
|
DROP USER user_1@localhost;
|
|
DROP USER USER_1@localhost;
|
|
DROP DATABASE db1;
|
|
use test;
|
|
|
|
# End of 5.0 tests
|
|
|
|
|
|
--echo #
|
|
--echo # Extra test coverage for Bug#56595 RENAME TABLE causes assert on OS X
|
|
--echo #
|
|
|
|
CREATE TABLE t1(a INT);
|
|
CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW SET new.a= 1;
|
|
RENAME TABLE t1 TO T1;
|
|
ALTER TABLE T1 RENAME t1;
|
|
DROP TABLE t1;
|