mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Merge mariadb-10.5.3 into 10.5
This commit is contained in:
@@ -200,9 +200,9 @@ add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL
|
||||
check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.global_priv; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||
check_warnings def mtr check_warnings PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE `pos` bigint unsigned; SET SQL_LOG_BIN=0, SQL_SAFE_UPDATES=0; UPDATE error_log el, global_suppressions gs SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP gs.pattern; UPDATE error_log el, test_suppressions ts SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP ts.pattern; SELECT COUNT(*) INTO @num_warnings FROM error_log WHERE suspicious=1; IF @num_warnings > 0 THEN SELECT line FROM error_log WHERE suspicious=1; SELECT 2 INTO result; ELSE SELECT 0 INTO RESULT; END IF; TRUNCATE test_suppressions; DROP TABLE error_log; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||
AddGeometryColumn def mysql AddGeometryColumn PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL begin
|
||||
set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' ADD ', geometry_column,' GEOMETRY REF_SYSTEM_ID=', t_srid); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end NULL NULL SQL NO CONTAINS SQL NULL INVOKER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' ADD ', geometry_column,' GEOMETRY REF_SYSTEM_ID=', t_srid); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end NULL NULL SQL NO CONTAINS SQL NULL INVOKER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss mariadb.sys@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
DropGeometryColumn def mysql DropGeometryColumn PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL begin
|
||||
set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' DROP ', geometry_column); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end NULL NULL SQL NO CONTAINS SQL NULL INVOKER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' DROP ', geometry_column); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end NULL NULL SQL NO CONTAINS SQL NULL INVOKER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss mariadb.sys@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
connect testuser2, localhost, testuser2, , db_datadict;
|
||||
SELECT * FROM information_schema.routines;
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
@@ -216,9 +216,9 @@ add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL
|
||||
check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.global_priv; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||
check_warnings def mtr check_warnings PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE `pos` bigint unsigned; SET SQL_LOG_BIN=0, SQL_SAFE_UPDATES=0; UPDATE error_log el, global_suppressions gs SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP gs.pattern; UPDATE error_log el, test_suppressions ts SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP ts.pattern; SELECT COUNT(*) INTO @num_warnings FROM error_log WHERE suspicious=1; IF @num_warnings > 0 THEN SELECT line FROM error_log WHERE suspicious=1; SELECT 2 INTO result; ELSE SELECT 0 INTO RESULT; END IF; TRUNCATE test_suppressions; DROP TABLE error_log; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||
AddGeometryColumn def mysql AddGeometryColumn PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL begin
|
||||
set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' ADD ', geometry_column,' GEOMETRY REF_SYSTEM_ID=', t_srid); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end NULL NULL SQL NO CONTAINS SQL NULL INVOKER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' ADD ', geometry_column,' GEOMETRY REF_SYSTEM_ID=', t_srid); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end NULL NULL SQL NO CONTAINS SQL NULL INVOKER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss mariadb.sys@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
DropGeometryColumn def mysql DropGeometryColumn PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL begin
|
||||
set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' DROP ', geometry_column); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end NULL NULL SQL NO CONTAINS SQL NULL INVOKER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' DROP ', geometry_column); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end NULL NULL SQL NO CONTAINS SQL NULL INVOKER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss mariadb.sys@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
connect testuser3, localhost, testuser3, , test;
|
||||
SELECT * FROM information_schema.routines;
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||
@@ -232,9 +232,9 @@ add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL
|
||||
check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.global_priv; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||
check_warnings def mtr check_warnings PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE `pos` bigint unsigned; SET SQL_LOG_BIN=0, SQL_SAFE_UPDATES=0; UPDATE error_log el, global_suppressions gs SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP gs.pattern; UPDATE error_log el, test_suppressions ts SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP ts.pattern; SELECT COUNT(*) INTO @num_warnings FROM error_log WHERE suspicious=1; IF @num_warnings > 0 THEN SELECT line FROM error_log WHERE suspicious=1; SELECT 2 INTO result; ELSE SELECT 0 INTO RESULT; END IF; TRUNCATE test_suppressions; DROP TABLE error_log; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||
AddGeometryColumn def mysql AddGeometryColumn PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL begin
|
||||
set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' ADD ', geometry_column,' GEOMETRY REF_SYSTEM_ID=', t_srid); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end NULL NULL SQL NO CONTAINS SQL NULL INVOKER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' ADD ', geometry_column,' GEOMETRY REF_SYSTEM_ID=', t_srid); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end NULL NULL SQL NO CONTAINS SQL NULL INVOKER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss mariadb.sys@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
DropGeometryColumn def mysql DropGeometryColumn PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL begin
|
||||
set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' DROP ', geometry_column); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end NULL NULL SQL NO CONTAINS SQL NULL INVOKER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' DROP ', geometry_column); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end NULL NULL SQL NO CONTAINS SQL NULL INVOKER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss mariadb.sys@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
connection default;
|
||||
disconnect testuser1;
|
||||
disconnect testuser2;
|
||||
|
||||
@@ -239,8 +239,8 @@ def db_datadict_2 t4 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO `testuser1`@`localhost`
|
||||
GRANT SELECT ON `db_datadict`.`t1` TO `testuser1`@`localhost` WITH GRANT OPTION
|
||||
GRANT SELECT (f5, f1) ON `db_datadict_2`.`t3` TO `testuser1`@`localhost`
|
||||
GRANT SELECT ON `db_datadict`.`t1` TO `testuser1`@`localhost` WITH GRANT OPTION
|
||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||
Grants for testuser2@localhost
|
||||
GRANT USAGE ON *.* TO `testuser2`@`localhost`
|
||||
@@ -258,8 +258,8 @@ def db_datadict_2 t3 0 db_datadict_2 PRIMARY 1 f1 NULL 0 NULL NULL HASH
|
||||
SHOW GRANTS FOR 'testuser1'@'localhost';
|
||||
Grants for testuser1@localhost
|
||||
GRANT USAGE ON *.* TO `testuser1`@`localhost`
|
||||
GRANT SELECT ON `db_datadict`.`t1` TO `testuser1`@`localhost` WITH GRANT OPTION
|
||||
GRANT SELECT (f5, f1) ON `db_datadict_2`.`t3` TO `testuser1`@`localhost`
|
||||
GRANT SELECT ON `db_datadict`.`t1` TO `testuser1`@`localhost` WITH GRANT OPTION
|
||||
SHOW GRANTS FOR 'testuser2'@'localhost';
|
||||
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'mysql'
|
||||
connection testuser2;
|
||||
|
||||
@@ -55,6 +55,9 @@ IS_GRANTABLE varchar(3) NO
|
||||
SELECT table_catalog, table_schema, table_name, privilege_type
|
||||
FROM information_schema.table_privileges WHERE table_catalog IS NOT NULL;
|
||||
table_catalog table_schema table_name privilege_type
|
||||
def mysql global_priv SELECT
|
||||
def mysql global_priv UPDATE
|
||||
def mysql global_priv DELETE
|
||||
######################################################################
|
||||
# Testcase 3.2.11.2+3.2.11.3+3.2.11.4:
|
||||
# INFORMATION_SCHEMA.TABLE_PRIVILEGES accessible information
|
||||
@@ -227,8 +230,8 @@ ERROR 42000: There is no such grant defined for user 'testuser1' on host 'localh
|
||||
SHOW GRANTS FOR 'the_user'@'localhost';
|
||||
Grants for the_user@localhost
|
||||
GRANT USAGE ON *.* TO `the_user`@`localhost`
|
||||
GRANT ALL PRIVILEGES ON `test`.`t1_view` TO `the_user`@`localhost`
|
||||
GRANT ALL PRIVILEGES ON `test`.`t1_table` TO `the_user`@`localhost`
|
||||
GRANT ALL PRIVILEGES ON `test`.`t1_view` TO `the_user`@`localhost`
|
||||
SELECT DISTINCT table_schema,table_name FROM information_schema.table_privileges
|
||||
WHERE table_name LIKE 't1_%'
|
||||
ORDER BY table_schema,table_name;
|
||||
@@ -247,8 +250,8 @@ test t1_view
|
||||
SHOW GRANTS FOR 'the_user'@'localhost';
|
||||
Grants for the_user@localhost
|
||||
GRANT USAGE ON *.* TO `the_user`@`localhost`
|
||||
GRANT ALL PRIVILEGES ON `test`.`t1_view` TO `the_user`@`localhost`
|
||||
GRANT ALL PRIVILEGES ON `test`.`t1_table` TO `the_user`@`localhost`
|
||||
GRANT ALL PRIVILEGES ON `test`.`t1_view` TO `the_user`@`localhost`
|
||||
REVOKE ALL PRIVILEGES ON test.t1_table FROM 'the_user'@'localhost';
|
||||
REVOKE ALL PRIVILEGES ON test.t1_view FROM 'the_user'@'localhost';
|
||||
DROP VIEW test.t1_view;
|
||||
|
||||
@@ -210,6 +210,7 @@ ERROR 70100: Query execution was interrupted
|
||||
connection con1;
|
||||
ROLLBACK;
|
||||
connection default;
|
||||
disconnect con1;
|
||||
DROP TABLE t3,t1;
|
||||
#
|
||||
# MDEV-18222 InnoDB: Failing assertion: heap->magic_n == MEM_BLOCK_MAGIC_N
|
||||
@@ -287,6 +288,121 @@ ALTER TABLE t1 DROP f3;
|
||||
ALTER TABLE t1 CHANGE f f3 INT;
|
||||
DROP TABLE t1;
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
#
|
||||
# Bug #19471516 SERVER CRASHES WHEN EXECUTING ALTER TABLE
|
||||
# ADD FOREIGN KEY
|
||||
#
|
||||
CREATE TABLE `department` (`department_id` INT, `department_people_fk` INT,
|
||||
PRIMARY KEY (`department_id`)) engine=innodb;
|
||||
CREATE TABLE `title` (`title_id` INT, `title_manager_fk` INT,
|
||||
`title_reporter_fk` INT, PRIMARY KEY (`title_id`)) engine=innodb;
|
||||
CREATE TABLE `people` (`people_id` INT, PRIMARY KEY (`people_id`)) engine=innodb;
|
||||
ALTER TABLE `department` ADD FOREIGN KEY (`department_people_fk`) REFERENCES
|
||||
`people` (`people_id`);
|
||||
ALTER TABLE `title` ADD FOREIGN KEY (`title_manager_fk`) REFERENCES `people`
|
||||
(`people_id`);
|
||||
ALTER TABLE `title` ADD FOREIGN KEY (`title_reporter_fk`) REFERENCES `people`
|
||||
(`people_id`);
|
||||
drop table title, department, people;
|
||||
create table t1 (a int primary key, b int) engine=innodb;
|
||||
create table t2 (c int primary key, d int,
|
||||
foreign key (d) references t1 (a) on update cascade) engine=innodb;
|
||||
insert t1 values (1,1),(2,2),(3,3);
|
||||
insert t2 values (4,1),(5,2),(6,3);
|
||||
flush table t2 with read lock;
|
||||
connect con1,localhost,root;
|
||||
delete from t1 where a=2;
|
||||
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`d`) REFERENCES `t1` (`a`) ON UPDATE CASCADE)
|
||||
update t1 set a=10 where a=1;
|
||||
connection default;
|
||||
unlock tables;
|
||||
connection con1;
|
||||
connection default;
|
||||
lock table t2 write;
|
||||
connection con1;
|
||||
delete from t1 where a=2;
|
||||
connection default;
|
||||
unlock tables;
|
||||
connection con1;
|
||||
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`d`) REFERENCES `t1` (`a`) ON UPDATE CASCADE)
|
||||
connection default;
|
||||
unlock tables;
|
||||
disconnect con1;
|
||||
create user foo;
|
||||
grant select,update on test.t1 to foo;
|
||||
connect foo,localhost,foo;
|
||||
update t1 set a=30 where a=3;
|
||||
disconnect foo;
|
||||
connection default;
|
||||
select * from t2;
|
||||
c d
|
||||
5 2
|
||||
4 10
|
||||
6 30
|
||||
drop table t2, t1;
|
||||
drop user foo;
|
||||
#
|
||||
# MDEV-17595 - Server crashes in copy_data_between_tables or
|
||||
# Assertion `thd->transaction.stmt.is_empty() ||
|
||||
# (thd->state_flags & Open_tables_state::BACKUPS_AVAIL)'
|
||||
# fails in close_tables_for_reopen upon concurrent
|
||||
# ALTER TABLE and FLUSH
|
||||
#
|
||||
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(1),(2);
|
||||
CREATE TABLE t2 (b INT, KEY(b)) ENGINE=InnoDB;
|
||||
INSERT INTO t2 VALUES(2);
|
||||
ALTER TABLE t2 ADD FOREIGN KEY(b) REFERENCES t1(a), LOCK=EXCLUSIVE;
|
||||
DROP TABLE t2, t1;
|
||||
create table t1 (pk int primary key, data int) engine=innodb;
|
||||
insert t1 values (1,1),(2,2),(3,3);
|
||||
create table t2 (t1_pk int, foreign key (t1_pk) references t1 (pk)) engine=innodb;
|
||||
insert t2 values (1),(2);
|
||||
insert t2 values (10);
|
||||
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`t1_pk`) REFERENCES `t1` (`pk`))
|
||||
flush tables;
|
||||
flush status;
|
||||
update t1 set data=10 where pk+1>10;
|
||||
show status like '%opened_tab%';
|
||||
Variable_name Value
|
||||
Opened_table_definitions 4
|
||||
Opened_tables 4
|
||||
flush tables;
|
||||
flush status;
|
||||
update t2 set t1_pk=11 where t1_pk+1>10;
|
||||
show status like '%opened_tab%';
|
||||
Variable_name Value
|
||||
Opened_table_definitions 4
|
||||
Opened_tables 4
|
||||
flush tables;
|
||||
flush status;
|
||||
lock tables t1 write;
|
||||
show status like '%opened_tab%';
|
||||
Variable_name Value
|
||||
Opened_table_definitions 2
|
||||
Opened_tables 2
|
||||
insert t1 values (4,4);
|
||||
show status like '%opened_tab%';
|
||||
Variable_name Value
|
||||
Opened_table_definitions 5
|
||||
Opened_tables 5
|
||||
unlock tables;
|
||||
create function foo() returns int
|
||||
begin
|
||||
insert t1 values (5,5);
|
||||
return 5;
|
||||
end|
|
||||
flush tables;
|
||||
flush status;
|
||||
select foo();
|
||||
foo()
|
||||
5
|
||||
show status like '%opened_tab%';
|
||||
Variable_name Value
|
||||
Opened_table_definitions 5
|
||||
Opened_tables 5
|
||||
drop function foo;
|
||||
drop table t2, t1;
|
||||
# Start of 10.2 tests
|
||||
#
|
||||
# MDEV-13246 Stale rows despite ON DELETE CASCADE constraint
|
||||
@@ -324,6 +440,7 @@ INSERT INTO matchmaking_group_users VALUES (10,1),(11,2);
|
||||
INSERT INTO matchmaking_group_maps VALUES (10,55),(11,66);
|
||||
BEGIN;
|
||||
UPDATE users SET name = 'qux' WHERE id = 1;
|
||||
connect con1,localhost,root;
|
||||
connection con1;
|
||||
SET innodb_lock_wait_timeout= 1;
|
||||
DELETE FROM matchmaking_groups WHERE id = 10;
|
||||
@@ -534,6 +651,65 @@ Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
DROP TABLE t1;
|
||||
SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency;
|
||||
#
|
||||
# MDEV-17187 table doesn't exist in engine after ALTER other tables
|
||||
# with CONSTRAINTs
|
||||
#
|
||||
set foreign_key_checks=on;
|
||||
create table t1 (id int not null primary key) engine=innodb;
|
||||
create table t2 (id int not null primary key, fid int not null,
|
||||
CONSTRAINT fk_fid FOREIGN KEY (fid) REFERENCES t1 (id))engine=innodb;
|
||||
insert into t1 values (1), (2), (3);
|
||||
insert into t2 values (1, 1), (2, 1), (3, 2);
|
||||
set foreign_key_checks=off;
|
||||
alter table t2 drop index fk_fid;
|
||||
set foreign_key_checks=on;
|
||||
delete from t1 where id=2;
|
||||
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `fk_fid` FOREIGN KEY (`fid`) REFERENCES `t1` (`id`))
|
||||
insert into t2 values(4, 99);
|
||||
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `fk_fid` FOREIGN KEY (`fid`) REFERENCES `t1` (`id`))
|
||||
select * from t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
3
|
||||
select * from t2;
|
||||
id fid
|
||||
1 1
|
||||
2 1
|
||||
3 2
|
||||
set foreign_key_checks=off;
|
||||
delete from t1 where id=2;
|
||||
insert into t2 values(4, 99);
|
||||
set foreign_key_checks=on;
|
||||
select * from t1;
|
||||
id
|
||||
1
|
||||
3
|
||||
select * from t2;
|
||||
id fid
|
||||
1 1
|
||||
2 1
|
||||
3 2
|
||||
4 99
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
show create table t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`id` int(11) NOT NULL,
|
||||
`fid` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
CONSTRAINT `fk_fid` FOREIGN KEY (`fid`) REFERENCES `t1` (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
drop table t1,t2;
|
||||
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails
|
||||
drop table t1,t2;
|
||||
ERROR 42S02: Unknown table 'test.t2'
|
||||
# End of 10.2 tests
|
||||
CREATE TABLE t1 (a GEOMETRY, INDEX(a(8)),
|
||||
FOREIGN KEY (a) REFERENCES x (xx)) ENGINE=InnoDB;
|
||||
|
||||
60
mysql-test/suite/innodb/r/foreign_key_debug.result
Normal file
60
mysql-test/suite/innodb/r/foreign_key_debug.result
Normal file
@@ -0,0 +1,60 @@
|
||||
create table t1 (f1 int primary key) engine=innodb;
|
||||
create table t2 (f2 int primary key) engine=innodb;
|
||||
create table t3 (f3 int primary key, foreign key (f3) references t2(f2)) engine=innodb;
|
||||
insert into t1 values (1),(2),(3),(4),(5);
|
||||
insert into t2 values (1),(2),(3),(4),(5);
|
||||
insert into t3 values (1),(2),(3),(4),(5);
|
||||
connect con1,localhost,root;
|
||||
set debug_sync='alter_table_before_rename_result_table signal g1 wait_for g2';
|
||||
alter table t2 add constraint foreign key (f2) references t1(f1) on delete cascade on update cascade;
|
||||
connection default;
|
||||
set debug_sync='before_execute_sql_command wait_for g1';
|
||||
update t1 set f1 = f1 + 100000 limit 2;
|
||||
connect con2,localhost,root;
|
||||
kill query UPDATE;
|
||||
disconnect con2;
|
||||
connection default;
|
||||
ERROR 70100: Query execution was interrupted
|
||||
set debug_sync='now signal g2';
|
||||
connection con1;
|
||||
show create table t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`f2` int(11) NOT NULL,
|
||||
PRIMARY KEY (`f2`),
|
||||
CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`f2`) REFERENCES `t1` (`f1`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
disconnect con1;
|
||||
connection default;
|
||||
select * from t2 where f2 not in (select f1 from t1);
|
||||
f2
|
||||
select * from t3 where f3 not in (select f2 from t2);
|
||||
f3
|
||||
drop table t3;
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
set debug_sync='reset';
|
||||
#
|
||||
# MDEV-16060 - InnoDB: Failing assertion: ut_strcmp(index->name, key->name)
|
||||
#
|
||||
CREATE TABLE t1 (`pk` INT PRIMARY KEY) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
FLUSH TABLES;
|
||||
SET debug_sync='alter_table_intermediate_table_created SIGNAL ready WAIT_FOR go';
|
||||
ALTER TABLE t1 ADD FOREIGN KEY(pk) REFERENCES t2(pk) ON UPDATE CASCADE;
|
||||
connect con1, localhost, root;
|
||||
SET debug_sync='now WAIT_FOR ready';
|
||||
SET lock_wait_timeout=0;
|
||||
UPDATE t2 SET pk=10 WHERE pk=1;
|
||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||
PREPARE stmt FROM 'UPDATE t2 SET pk=10 WHERE pk=1';
|
||||
DEALLOCATE PREPARE stmt;
|
||||
SET debug_sync='now SIGNAL go';
|
||||
connection default;
|
||||
disconnect con1;
|
||||
connection default;
|
||||
SET debug_sync='reset';
|
||||
SHOW OPEN TABLES FROM test;
|
||||
Database Table In_use Name_locked
|
||||
test t2 0 0
|
||||
DROP TABLE t1, t2;
|
||||
@@ -195,6 +195,7 @@ reap;
|
||||
connection con1;
|
||||
ROLLBACK;
|
||||
connection default;
|
||||
disconnect con1;
|
||||
|
||||
DROP TABLE t3,t1;
|
||||
|
||||
@@ -281,6 +282,136 @@ DROP TABLE t1;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #19471516 SERVER CRASHES WHEN EXECUTING ALTER TABLE
|
||||
--echo # ADD FOREIGN KEY
|
||||
--echo #
|
||||
|
||||
CREATE TABLE `department` (`department_id` INT, `department_people_fk` INT,
|
||||
PRIMARY KEY (`department_id`)) engine=innodb;
|
||||
|
||||
CREATE TABLE `title` (`title_id` INT, `title_manager_fk` INT,
|
||||
`title_reporter_fk` INT, PRIMARY KEY (`title_id`)) engine=innodb;
|
||||
|
||||
CREATE TABLE `people` (`people_id` INT, PRIMARY KEY (`people_id`)) engine=innodb;
|
||||
|
||||
ALTER TABLE `department` ADD FOREIGN KEY (`department_people_fk`) REFERENCES
|
||||
`people` (`people_id`);
|
||||
|
||||
ALTER TABLE `title` ADD FOREIGN KEY (`title_manager_fk`) REFERENCES `people`
|
||||
(`people_id`);
|
||||
|
||||
ALTER TABLE `title` ADD FOREIGN KEY (`title_reporter_fk`) REFERENCES `people`
|
||||
(`people_id`);
|
||||
|
||||
drop table title, department, people;
|
||||
|
||||
#
|
||||
# FK and prelocking:
|
||||
# child table accesses (reads and writes) wait for locks.
|
||||
#
|
||||
create table t1 (a int primary key, b int) engine=innodb;
|
||||
create table t2 (c int primary key, d int,
|
||||
foreign key (d) references t1 (a) on update cascade) engine=innodb;
|
||||
insert t1 values (1,1),(2,2),(3,3);
|
||||
insert t2 values (4,1),(5,2),(6,3);
|
||||
flush table t2 with read lock; # this takes MDL_SHARED_NO_WRITE
|
||||
connect (con1,localhost,root);
|
||||
--error ER_ROW_IS_REFERENCED_2
|
||||
delete from t1 where a=2;
|
||||
send update t1 set a=10 where a=1;
|
||||
connection default;
|
||||
let $wait_condition= select 1 from information_schema.processlist where state='Waiting for table metadata lock';
|
||||
source include/wait_condition.inc;
|
||||
unlock tables;
|
||||
connection con1;
|
||||
reap;
|
||||
connection default;
|
||||
lock table t2 write; # this takes MDL_SHARED_NO_READ_WRITE
|
||||
connection con1;
|
||||
send delete from t1 where a=2;
|
||||
connection default;
|
||||
let $wait_condition= select 1 from information_schema.processlist where state='Waiting for table metadata lock';
|
||||
source include/wait_condition.inc;
|
||||
unlock tables;
|
||||
connection con1;
|
||||
--error ER_ROW_IS_REFERENCED_2
|
||||
reap;
|
||||
connection default;
|
||||
unlock tables;
|
||||
disconnect con1;
|
||||
|
||||
# but privileges should not be checked
|
||||
create user foo;
|
||||
grant select,update on test.t1 to foo;
|
||||
connect(foo,localhost,foo);
|
||||
update t1 set a=30 where a=3;
|
||||
disconnect foo;
|
||||
connection default;
|
||||
select * from t2;
|
||||
drop table t2, t1;
|
||||
drop user foo;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-17595 - Server crashes in copy_data_between_tables or
|
||||
--echo # Assertion `thd->transaction.stmt.is_empty() ||
|
||||
--echo # (thd->state_flags & Open_tables_state::BACKUPS_AVAIL)'
|
||||
--echo # fails in close_tables_for_reopen upon concurrent
|
||||
--echo # ALTER TABLE and FLUSH
|
||||
--echo #
|
||||
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(1),(2);
|
||||
CREATE TABLE t2 (b INT, KEY(b)) ENGINE=InnoDB;
|
||||
INSERT INTO t2 VALUES(2);
|
||||
ALTER TABLE t2 ADD FOREIGN KEY(b) REFERENCES t1(a), LOCK=EXCLUSIVE;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
#
|
||||
# MDEV-22180 Planner opens unnecessary tables when updated table is referenced by foreign keys
|
||||
#
|
||||
|
||||
create table t1 (pk int primary key, data int) engine=innodb;
|
||||
insert t1 values (1,1),(2,2),(3,3);
|
||||
create table t2 (t1_pk int, foreign key (t1_pk) references t1 (pk)) engine=innodb;
|
||||
insert t2 values (1),(2);
|
||||
error ER_NO_REFERENCED_ROW_2;
|
||||
insert t2 values (10);
|
||||
flush tables;
|
||||
flush status;
|
||||
# with ON UPDATE RESTRICT child tables are not opened
|
||||
update t1 set data=10 where pk+1>10;
|
||||
show status like '%opened_tab%';
|
||||
flush tables;
|
||||
flush status;
|
||||
# neither are parent tables
|
||||
update t2 set t1_pk=11 where t1_pk+1>10;
|
||||
show status like '%opened_tab%';
|
||||
# under LOCK TABLES
|
||||
flush tables;
|
||||
flush status;
|
||||
lock tables t1 write;
|
||||
show status like '%opened_tab%';
|
||||
insert t1 values (4,4);
|
||||
show status like '%opened_tab%';
|
||||
unlock tables;
|
||||
delimiter |;
|
||||
create function foo() returns int
|
||||
begin
|
||||
insert t1 values (5,5);
|
||||
return 5;
|
||||
end|
|
||||
delimiter ;|
|
||||
flush tables;
|
||||
flush status;
|
||||
select foo();
|
||||
show status like '%opened_tab%';
|
||||
drop function foo;
|
||||
drop table t2, t1;
|
||||
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
|
||||
--echo # Start of 10.2 tests
|
||||
|
||||
--echo #
|
||||
@@ -326,6 +457,7 @@ INSERT INTO matchmaking_group_maps VALUES (10,55),(11,66);
|
||||
BEGIN;
|
||||
UPDATE users SET name = 'qux' WHERE id = 1;
|
||||
|
||||
connect (con1,localhost,root);
|
||||
--connection con1
|
||||
SET innodb_lock_wait_timeout= 1;
|
||||
DELETE FROM matchmaking_groups WHERE id = 10;
|
||||
@@ -520,6 +652,52 @@ CHECK TABLE t1;
|
||||
DROP TABLE t1;
|
||||
SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-17187 table doesn't exist in engine after ALTER other tables
|
||||
--echo # with CONSTRAINTs
|
||||
--echo #
|
||||
|
||||
set foreign_key_checks=on;
|
||||
create table t1 (id int not null primary key) engine=innodb;
|
||||
create table t2 (id int not null primary key, fid int not null,
|
||||
CONSTRAINT fk_fid FOREIGN KEY (fid) REFERENCES t1 (id))engine=innodb;
|
||||
|
||||
insert into t1 values (1), (2), (3);
|
||||
insert into t2 values (1, 1), (2, 1), (3, 2);
|
||||
|
||||
set foreign_key_checks=off;
|
||||
alter table t2 drop index fk_fid;
|
||||
set foreign_key_checks=on;
|
||||
|
||||
--error ER_ROW_IS_REFERENCED_2
|
||||
delete from t1 where id=2;
|
||||
--error ER_NO_REFERENCED_ROW_2
|
||||
insert into t2 values(4, 99);
|
||||
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
|
||||
set foreign_key_checks=off;
|
||||
delete from t1 where id=2;
|
||||
insert into t2 values(4, 99);
|
||||
set foreign_key_checks=on;
|
||||
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
|
||||
show create table t1;
|
||||
show create table t2;
|
||||
|
||||
# Optional: test DROP TABLE without any prior ha_innobase::open().
|
||||
# This was tested manually, but it would cause --embedded to skip the test,
|
||||
# and the restart would significantly increase the running time.
|
||||
# --source include/restart_mysqld.inc
|
||||
|
||||
--error ER_ROW_IS_REFERENCED_2
|
||||
drop table t1,t2;
|
||||
--error ER_BAD_TABLE_ERROR
|
||||
drop table t1,t2;
|
||||
|
||||
--echo # End of 10.2 tests
|
||||
|
||||
# MDEV-21792 Server aborts upon attempt to create foreign key on spatial field
|
||||
|
||||
77
mysql-test/suite/innodb/t/foreign_key_debug.test
Normal file
77
mysql-test/suite/innodb/t/foreign_key_debug.test
Normal file
@@ -0,0 +1,77 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_debug.inc
|
||||
--source include/have_debug_sync.inc
|
||||
|
||||
--enable_connect_log
|
||||
|
||||
#
|
||||
# MDEV-16465 Invalid (old?) table or database name or hang in ha_innobase::delete_table and log semaphore wait upon concurrent DDL with foreign keys
|
||||
#
|
||||
create table t1 (f1 int primary key) engine=innodb;
|
||||
create table t2 (f2 int primary key) engine=innodb;
|
||||
create table t3 (f3 int primary key, foreign key (f3) references t2(f2)) engine=innodb;
|
||||
insert into t1 values (1),(2),(3),(4),(5);
|
||||
insert into t2 values (1),(2),(3),(4),(5);
|
||||
insert into t3 values (1),(2),(3),(4),(5);
|
||||
connect con1,localhost,root;
|
||||
set debug_sync='alter_table_before_rename_result_table signal g1 wait_for g2';
|
||||
send alter table t2 add constraint foreign key (f2) references t1(f1) on delete cascade on update cascade;
|
||||
connection default;
|
||||
let $conn=`select connection_id()`;
|
||||
set debug_sync='before_execute_sql_command wait_for g1';
|
||||
send update t1 set f1 = f1 + 100000 limit 2;
|
||||
connect con2,localhost,root;
|
||||
let $wait_condition= select 1 from information_schema.processlist where state='Waiting for table metadata lock' and info like 'update t1 %';
|
||||
source include/wait_condition.inc;
|
||||
--replace_result $conn UPDATE
|
||||
eval kill query $conn;
|
||||
disconnect con2;
|
||||
connection default;
|
||||
error ER_QUERY_INTERRUPTED;
|
||||
reap;
|
||||
set debug_sync='now signal g2';
|
||||
connection con1;
|
||||
reap;
|
||||
show create table t2;
|
||||
disconnect con1;
|
||||
connection default;
|
||||
select * from t2 where f2 not in (select f1 from t1);
|
||||
select * from t3 where f3 not in (select f2 from t2);
|
||||
drop table t3;
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
set debug_sync='reset';
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-16060 - InnoDB: Failing assertion: ut_strcmp(index->name, key->name)
|
||||
--echo #
|
||||
CREATE TABLE t1 (`pk` INT PRIMARY KEY) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
FLUSH TABLES;
|
||||
|
||||
SET debug_sync='alter_table_intermediate_table_created SIGNAL ready WAIT_FOR go';
|
||||
send ALTER TABLE t1 ADD FOREIGN KEY(pk) REFERENCES t2(pk) ON UPDATE CASCADE;
|
||||
|
||||
connect con1, localhost, root;
|
||||
SET debug_sync='now WAIT_FOR ready';
|
||||
SET lock_wait_timeout=0;
|
||||
--error ER_LOCK_WAIT_TIMEOUT
|
||||
UPDATE t2 SET pk=10 WHERE pk=1;
|
||||
PREPARE stmt FROM 'UPDATE t2 SET pk=10 WHERE pk=1';
|
||||
DEALLOCATE PREPARE stmt;
|
||||
SET debug_sync='now SIGNAL go';
|
||||
|
||||
connection default;
|
||||
reap;
|
||||
|
||||
# Cleanup
|
||||
disconnect con1;
|
||||
|
||||
connection default;
|
||||
SET debug_sync='reset';
|
||||
SHOW OPEN TABLES FROM test;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
@@ -117,6 +117,7 @@ wait/io/table/sql/handler TABLE mysql global_priv fetch 1
|
||||
wait/io/table/sql/handler TABLE mysql global_priv fetch 1
|
||||
wait/io/table/sql/handler TABLE mysql global_priv fetch 1
|
||||
wait/io/table/sql/handler TABLE mysql global_priv fetch 1
|
||||
wait/io/table/sql/handler TABLE mysql global_priv fetch 1
|
||||
wait/io/table/sql/handler TABLE mysql db fetch 1
|
||||
wait/io/table/sql/handler TABLE mysql db fetch 1
|
||||
wait/io/table/sql/handler TABLE mysql db fetch 1
|
||||
@@ -125,6 +126,7 @@ wait/io/table/sql/handler TABLE mysql proxies_priv fetch 1
|
||||
wait/io/table/sql/handler TABLE mysql proxies_priv fetch 1
|
||||
wait/io/table/sql/handler TABLE mysql roles_mapping fetch 1
|
||||
wait/io/table/sql/handler TABLE mysql tables_priv fetch 1
|
||||
wait/io/table/sql/handler TABLE mysql tables_priv fetch 1
|
||||
wait/io/table/sql/handler TABLE mysql procs_priv fetch 1
|
||||
wait/io/table/sql/handler TABLE mysql servers fetch 1
|
||||
wait/io/table/sql/handler TABLE mysql table_stats fetch 1
|
||||
|
||||
@@ -9,8 +9,8 @@ Acl_package_body_grants 0
|
||||
Acl_proxy_users 2
|
||||
Acl_role_grants 0
|
||||
Acl_roles 0
|
||||
Acl_table_grants 0
|
||||
Acl_users 4
|
||||
Acl_table_grants 1
|
||||
Acl_users 5
|
||||
SELECT count(*) COLUMN_GRANTS from mysql.columns_priv;
|
||||
COLUMN_GRANTS
|
||||
0
|
||||
@@ -34,10 +34,10 @@ ROLES
|
||||
0
|
||||
SELECT count(*) TABLE_GRANTS from mysql.tables_priv;
|
||||
TABLE_GRANTS
|
||||
0
|
||||
1
|
||||
SELECT count(*) USERS from mysql.user where is_role='N';
|
||||
USERS
|
||||
4
|
||||
5
|
||||
CREATE USER u1;
|
||||
CREATE ROLE r1;
|
||||
CREATE ROLE r2;
|
||||
@@ -74,8 +74,8 @@ Acl_package_body_grants 0
|
||||
Acl_proxy_users 3
|
||||
Acl_role_grants 4
|
||||
Acl_roles 2
|
||||
Acl_table_grants 2
|
||||
Acl_users 5
|
||||
Acl_table_grants 3
|
||||
Acl_users 6
|
||||
SELECT count(*) COLUMN_GRANTS from mysql.columns_priv;
|
||||
COLUMN_GRANTS
|
||||
2
|
||||
@@ -99,10 +99,10 @@ ROLES
|
||||
2
|
||||
SELECT count(*) TABLE_GRANTS from mysql.tables_priv;
|
||||
TABLE_GRANTS
|
||||
2
|
||||
3
|
||||
SELECT count(*) USERS from mysql.user where is_role='N';
|
||||
USERS
|
||||
5
|
||||
6
|
||||
DROP PROCEDURE mysql.test_proc;
|
||||
DROP FUNCTION mysql.test_func;
|
||||
DROP ROLE r2;
|
||||
|
||||
@@ -41,4 +41,4 @@ GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION
|
||||
GRANT USAGE ON *.* TO `r1`
|
||||
set password='';
|
||||
drop role r1;
|
||||
update mysql.global_priv set priv=@root_priv;
|
||||
update mysql.global_priv set priv=@root_priv where user='root' and host='localhost';
|
||||
|
||||
@@ -29,4 +29,4 @@ set password='';
|
||||
|
||||
#cleanup
|
||||
drop role r1;
|
||||
update mysql.global_priv set priv=@root_priv;
|
||||
update mysql.global_priv set priv=@root_priv where user='root' and host='localhost';
|
||||
|
||||
@@ -6,6 +6,7 @@ grant test_role2 to test_user@localhost;
|
||||
grant test_role2 to test_role1;
|
||||
select user, host from mysql.user where user not like 'root';
|
||||
User Host
|
||||
mariadb.sys localhost
|
||||
test_role1
|
||||
test_role2
|
||||
test_user localhost
|
||||
|
||||
@@ -3,6 +3,7 @@ create role test_role1;
|
||||
grant test_role1 to test_user@localhost;
|
||||
select user, host from mysql.user where user not like 'root';
|
||||
User Host
|
||||
mariadb.sys localhost
|
||||
test_role1
|
||||
test_user localhost
|
||||
select * from mysql.roles_mapping;
|
||||
|
||||
@@ -5,6 +5,7 @@ create role test_role2;
|
||||
grant test_role2 to test_role1;
|
||||
select user, host from mysql.user where user not like 'root';
|
||||
User Host
|
||||
mariadb.sys localhost
|
||||
test_role1
|
||||
test_role2
|
||||
test_user localhost
|
||||
|
||||
@@ -7,6 +7,7 @@ grant test_role3 to test_user@localhost;
|
||||
grant test_role2 to test_role1;
|
||||
select user, host from mysql.user where user not like 'root';
|
||||
User Host
|
||||
mariadb.sys localhost
|
||||
test_role1
|
||||
test_role2
|
||||
test_role3
|
||||
|
||||
@@ -3,6 +3,7 @@ create role test_role1;
|
||||
grant test_role1 to test_user@localhost;
|
||||
select user, host from mysql.user where user not like 'root';
|
||||
User Host
|
||||
mariadb.sys localhost
|
||||
test_role1
|
||||
test_user localhost
|
||||
select * from mysql.roles_mapping;
|
||||
|
||||
@@ -5,6 +5,7 @@ grant test_role1 to test_user@localhost;
|
||||
grant test_role2 to test_role1;
|
||||
select user, host from mysql.user where user not like 'root';
|
||||
User Host
|
||||
mariadb.sys localhost
|
||||
test_role1
|
||||
test_role2
|
||||
test_user localhost
|
||||
@@ -62,6 +63,7 @@ ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'ro
|
||||
drop user 'test_user'@'localhost';
|
||||
select * from mysql.tables_priv;
|
||||
Host Db User Table_name Grantor Timestamp Table_priv Column_priv
|
||||
localhost mysql mariadb.sys global_priv root@localhost 0000-00-00 00:00:00 Select,Update,Delete
|
||||
mysql test_role2 roles_mapping root@localhost 0000-00-00 00:00:00 Select
|
||||
revoke select on mysql.roles_mapping from test_role2;
|
||||
delete from mysql.user where user like'test_%';
|
||||
|
||||
@@ -5,6 +5,7 @@ grant test_role1 to test_user@localhost;
|
||||
grant test_role2 to test_role1;
|
||||
select user, host from mysql.user where user not like 'root';
|
||||
User Host
|
||||
mariadb.sys localhost
|
||||
test_role1
|
||||
test_role2
|
||||
test_user localhost
|
||||
@@ -60,6 +61,7 @@ ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'ro
|
||||
drop user 'test_user'@'localhost';
|
||||
select * from mysql.tables_priv;
|
||||
Host Db User Table_name Grantor Timestamp Table_priv Column_priv
|
||||
localhost mysql mariadb.sys global_priv root@localhost 0000-00-00 00:00:00 Select,Update,Delete
|
||||
mysql test_role2 roles_mapping root@localhost 0000-00-00 00:00:00 Select
|
||||
revoke select on mysql.roles_mapping from test_role2;
|
||||
delete from mysql.user where user like'test_%';
|
||||
|
||||
@@ -6,6 +6,7 @@ grant test_role2 to test_user@localhost;
|
||||
grant test_role2 to test_role1;
|
||||
select user, host from mysql.user where user not like 'root';
|
||||
User Host
|
||||
mariadb.sys localhost
|
||||
test_role1
|
||||
test_role2
|
||||
test_user localhost
|
||||
|
||||
@@ -19,3 +19,4 @@ rpl_parallel2 : fails after MDEV-16172
|
||||
rpl_semi_sync_after_sync : fails after MDEV-16172
|
||||
rpl_slave_grp_exec: MDEV-10514
|
||||
rpl_auto_increment_update_failure : disabled for now
|
||||
rpl_current_user : waits for MDEV-22374 fix
|
||||
|
||||
@@ -39,27 +39,27 @@ GRANT INSERT ON test.* TO mysqltest6@localhost;
|
||||
GRANT INSERT ON test.t1 TO mysqltest6@localhost;
|
||||
show grants for mysqltest1@localhost;
|
||||
Grants for mysqltest1@localhost
|
||||
GRANT USAGE ON *.* TO `mysqltest1`@`localhost`
|
||||
GRANT SELECT ON `test`.`t1` TO `mysqltest1`@`localhost`
|
||||
GRANT USAGE ON *.* TO `mysqltest1`@`localhost`
|
||||
show grants for mysqltest2@localhost;
|
||||
Grants for mysqltest2@localhost
|
||||
GRANT USAGE ON *.* TO `mysqltest2`@`localhost`
|
||||
GRANT SELECT, INSERT, UPDATE, REFERENCES ON `test`.`t1` TO `mysqltest2`@`localhost`
|
||||
GRANT INSERT ON `test`.`t4` TO `mysqltest2`@`localhost`
|
||||
GRANT SELECT, INSERT, UPDATE, REFERENCES ON `test`.`t1` TO `mysqltest2`@`localhost`
|
||||
GRANT USAGE ON *.* TO `mysqltest2`@`localhost`
|
||||
show grants for mysqltest3@localhost;
|
||||
Grants for mysqltest3@localhost
|
||||
GRANT USAGE ON *.* TO `mysqltest3`@`localhost`
|
||||
GRANT SELECT ON `test`.* TO `mysqltest3`@`localhost`
|
||||
GRANT SELECT (a), INSERT, INSERT (a), UPDATE (a), REFERENCES (a) ON `test`.`t4` TO `mysqltest3`@`localhost`
|
||||
GRANT SELECT ON `test`.* TO `mysqltest3`@`localhost`
|
||||
GRANT USAGE ON *.* TO `mysqltest3`@`localhost`
|
||||
show grants for mysqltest4@localhost;
|
||||
Grants for mysqltest4@localhost
|
||||
GRANT USAGE ON *.* TO `mysqltest4`@`localhost` IDENTIFIED BY PASSWORD '*196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7'
|
||||
GRANT SELECT ON `mysqltest2`.`t2` TO `mysqltest4`@`localhost`
|
||||
GRANT USAGE ON *.* TO `mysqltest4`@`localhost` IDENTIFIED BY PASSWORD '*196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7'
|
||||
show grants for mysqltest6@localhost;
|
||||
Grants for mysqltest6@localhost
|
||||
GRANT SELECT, INSERT ON *.* TO `mysqltest6`@`localhost`
|
||||
GRANT INSERT ON `test`.* TO `mysqltest6`@`localhost`
|
||||
GRANT INSERT ON `test`.`t1` TO `mysqltest6`@`localhost`
|
||||
GRANT SELECT, INSERT ON *.* TO `mysqltest6`@`localhost`
|
||||
flush privileges;
|
||||
show grants for mysqltest5@somehost;
|
||||
Grants for mysqltest5@somehost
|
||||
@@ -69,24 +69,24 @@ connection slave;
|
||||
**** Checking grants on slave ****
|
||||
show grants for mysqltest2@localhost;
|
||||
Grants for mysqltest2@localhost
|
||||
GRANT USAGE ON *.* TO `mysqltest2`@`localhost`
|
||||
GRANT INSERT ON `test`.`t4` TO `mysqltest2`@`localhost`
|
||||
GRANT USAGE ON *.* TO `mysqltest2`@`localhost`
|
||||
show grants for mysqltest3@localhost;
|
||||
Grants for mysqltest3@localhost
|
||||
GRANT USAGE ON *.* TO `mysqltest3`@`localhost`
|
||||
GRANT SELECT ON `test`.* TO `mysqltest3`@`localhost`
|
||||
GRANT SELECT (a), INSERT, INSERT (a), UPDATE (a), REFERENCES (a) ON `test`.`t4` TO `mysqltest3`@`localhost`
|
||||
GRANT SELECT ON `test`.* TO `mysqltest3`@`localhost`
|
||||
GRANT USAGE ON *.* TO `mysqltest3`@`localhost`
|
||||
show grants for mysqltest4@localhost;
|
||||
Grants for mysqltest4@localhost
|
||||
GRANT USAGE ON *.* TO `mysqltest4`@`localhost` IDENTIFIED BY PASSWORD '*196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7'
|
||||
GRANT SELECT ON `mysqltest2`.`t2` TO `mysqltest4`@`localhost`
|
||||
GRANT USAGE ON *.* TO `mysqltest4`@`localhost` IDENTIFIED BY PASSWORD '*196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7'
|
||||
show grants for mysqltest5@somehost;
|
||||
Grants for mysqltest5@somehost
|
||||
GRANT USAGE ON *.* TO `mysqltest5`@`somehost`
|
||||
show grants for mysqltest6@localhost;
|
||||
Grants for mysqltest6@localhost
|
||||
GRANT SELECT, INSERT ON *.* TO `mysqltest6`@`localhost`
|
||||
GRANT INSERT ON `test`.* TO `mysqltest6`@`localhost`
|
||||
GRANT SELECT, INSERT ON *.* TO `mysqltest6`@`localhost`
|
||||
show grants for mysqltest1@localhost;
|
||||
ERROR 42000: There is no such grant defined for user 'mysqltest1' on host 'localhost'
|
||||
**** Revoking grants on master ****
|
||||
@@ -100,9 +100,9 @@ Grants for mysqltest1@localhost
|
||||
GRANT USAGE ON *.* TO `mysqltest1`@`localhost`
|
||||
show grants for mysqltest3@localhost;
|
||||
Grants for mysqltest3@localhost
|
||||
GRANT USAGE ON *.* TO `mysqltest3`@`localhost`
|
||||
GRANT SELECT ON `test`.* TO `mysqltest3`@`localhost`
|
||||
GRANT INSERT, INSERT (a), UPDATE (a), REFERENCES (a) ON `test`.`t4` TO `mysqltest3`@`localhost`
|
||||
GRANT SELECT ON `test`.* TO `mysqltest3`@`localhost`
|
||||
GRANT USAGE ON *.* TO `mysqltest3`@`localhost`
|
||||
show grants for mysqltest4@localhost;
|
||||
Grants for mysqltest4@localhost
|
||||
GRANT USAGE ON *.* TO `mysqltest4`@`localhost` IDENTIFIED BY PASSWORD '*196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7'
|
||||
|
||||
@@ -77,10 +77,15 @@ GRANT INSERT ON *.* TO mysqltest6@localhost;
|
||||
GRANT INSERT ON test.* TO mysqltest6@localhost;
|
||||
GRANT INSERT ON test.t1 TO mysqltest6@localhost;
|
||||
|
||||
--sorted_result
|
||||
show grants for mysqltest1@localhost;
|
||||
--sorted_result
|
||||
show grants for mysqltest2@localhost;
|
||||
--sorted_result
|
||||
show grants for mysqltest3@localhost;
|
||||
--sorted_result
|
||||
show grants for mysqltest4@localhost;
|
||||
--sorted_result
|
||||
show grants for mysqltest6@localhost;
|
||||
|
||||
flush privileges;
|
||||
@@ -92,10 +97,15 @@ sync_slave_with_master;
|
||||
--echo **** Checking grants on slave ****
|
||||
|
||||
# Check that grants are replicated to slave
|
||||
--sorted_result
|
||||
show grants for mysqltest2@localhost;
|
||||
--sorted_result
|
||||
show grants for mysqltest3@localhost;
|
||||
--sorted_result
|
||||
show grants for mysqltest4@localhost;
|
||||
--sorted_result
|
||||
show grants for mysqltest5@somehost;
|
||||
--sorted_result
|
||||
show grants for mysqltest6@localhost;
|
||||
|
||||
# mysqltest1 should not be on slave
|
||||
@@ -109,8 +119,11 @@ REVOKE SELECT ON mysqltest2.t2 FROM mysqltest4@localhost;
|
||||
REVOKE select(a) on t4
|
||||
from mysqltest3@localhost;
|
||||
|
||||
--sorted_result
|
||||
show grants for mysqltest1@localhost;
|
||||
--sorted_result
|
||||
show grants for mysqltest3@localhost;
|
||||
--sorted_result
|
||||
show grants for mysqltest4@localhost;
|
||||
|
||||
sync_slave_with_master;
|
||||
|
||||
Reference in New Issue
Block a user