mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Follow-up for the patch for bugs #12472/#15137 "CREATE TABLE ... SELECT ...
which explicitly or implicitly uses stored function gives 'Table not locked' error" Test case for these bugs crashed in --ps-protocol mode. The crash was caused by incorrect usage of check_grant() routine from create_table_precheck() routine. The former assumes that either number of tables to be inspected by it is limited explicitly (i.e. is is not UINT_MAX) or table list used and thd->lex->query_tables_own_last value correspond to each other. create_table_precheck() was not fulfilling this condition and crash happened. The fix simply sets number of tables to be inspected by check_grant() to 1.
This commit is contained in:
@ -7227,7 +7227,7 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables,
|
|||||||
lex->create_info.merge_list.first))
|
lex->create_info.merge_list.first))
|
||||||
goto err;
|
goto err;
|
||||||
if (grant_option && want_priv != CREATE_TMP_ACL &&
|
if (grant_option && want_priv != CREATE_TMP_ACL &&
|
||||||
check_grant(thd, want_priv, create_table, 0, UINT_MAX, 0))
|
check_grant(thd, want_priv, create_table, 0, 1, 0))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
if (select_lex->item_list.elements)
|
if (select_lex->item_list.elements)
|
||||||
|
Reference in New Issue
Block a user