MDEV-18241 Downgrade from 10.4 to 10.3 crashes
privilege tables can never be views or temporary tables, don't even try to open them, if they are.
This commit is contained in:
parent
66099b8f2d
commit
822071ca5b
@ -121,3 +121,14 @@ View Create View character_set_client collation_connection
|
|||||||
v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v3` AS select `t_select_priv`.`a` AS `a`,`t_select_priv`.`b` AS `b` from `t_select_priv` latin1 latin1_swedish_ci
|
v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v3` AS select `t_select_priv`.`a` AS `a`,`t_select_priv`.`b` AS `b` from `t_select_priv` latin1 latin1_swedish_ci
|
||||||
drop database mysqltest_db1;
|
drop database mysqltest_db1;
|
||||||
drop user mysqltest_u1@localhost;
|
drop user mysqltest_u1@localhost;
|
||||||
|
call mtr.add_suppression("Table 'mysql.user' doesn't exist");
|
||||||
|
rename table mysql.user to mysql.user1;
|
||||||
|
create view mysql.user as select * from mysql.user1;
|
||||||
|
flush privileges;
|
||||||
|
ERROR 42S02: Table 'mysql.user' doesn't exist
|
||||||
|
drop view mysql.user;
|
||||||
|
create temporary table mysql.user select * from mysql.user1 limit 0;
|
||||||
|
flush privileges;
|
||||||
|
ERROR 42S02: Table 'mysql.user' doesn't exist
|
||||||
|
drop temporary table mysql.user;
|
||||||
|
rename table mysql.user1 to mysql.user;
|
||||||
|
@ -144,3 +144,18 @@ connection default;
|
|||||||
disconnect con1;
|
disconnect con1;
|
||||||
drop database mysqltest_db1;
|
drop database mysqltest_db1;
|
||||||
drop user mysqltest_u1@localhost;
|
drop user mysqltest_u1@localhost;
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-18241 Downgrade from 10.4 to 10.3 crashes
|
||||||
|
#
|
||||||
|
call mtr.add_suppression("Table 'mysql.user' doesn't exist");
|
||||||
|
rename table mysql.user to mysql.user1;
|
||||||
|
create view mysql.user as select * from mysql.user1;
|
||||||
|
--error ER_NO_SUCH_TABLE
|
||||||
|
flush privileges;
|
||||||
|
drop view mysql.user;
|
||||||
|
create temporary table mysql.user select * from mysql.user1 limit 0;
|
||||||
|
--error ER_NO_SUCH_TABLE
|
||||||
|
flush privileges;
|
||||||
|
drop temporary table mysql.user;
|
||||||
|
rename table mysql.user1 to mysql.user;
|
||||||
|
@ -1155,8 +1155,12 @@ static void fix_table_list(TABLE_LIST *tl, uint n)
|
|||||||
TABLE_LIST *end;
|
TABLE_LIST *end;
|
||||||
for (end= tl + n - 1; tl < end; tl++)
|
for (end= tl + n - 1; tl < end; tl++)
|
||||||
{
|
{
|
||||||
|
tl->i_s_requested_object= OPEN_TABLE_ONLY;
|
||||||
|
tl->open_type= OT_BASE_ONLY;
|
||||||
tl->next_local= tl->next_global= tl + 1;
|
tl->next_local= tl->next_global= tl + 1;
|
||||||
}
|
}
|
||||||
|
tl->i_s_requested_object= OPEN_TABLE_ONLY;
|
||||||
|
tl->open_type= OT_BASE_ONLY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user