mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Fixed BUG#6807: Stored procedure crash if CREATE PROCEDURE ... KILL QUERY
...and for PURGE BEFORE too. (Don't fix_fields in the parser!)
This commit is contained in:
@@ -2327,10 +2327,24 @@ mysql_execute_command(THD *thd)
|
||||
}
|
||||
case SQLCOM_PURGE_BEFORE:
|
||||
{
|
||||
Item *it;
|
||||
|
||||
if (check_global_access(thd, SUPER_ACL))
|
||||
goto error;
|
||||
/* PURGE MASTER LOGS BEFORE 'data' */
|
||||
res = purge_master_logs_before_date(thd, lex->purge_time);
|
||||
it= (Item *)lex->value_list.head();
|
||||
if (it->check_cols(1) || it->fix_fields(lex->thd, 0, &it))
|
||||
{
|
||||
my_error(ER_WRONG_ARGUMENTS, MYF(0), "PURGE LOGS BEFORE");
|
||||
goto error;
|
||||
}
|
||||
it= new Item_func_unix_timestamp(it);
|
||||
/*
|
||||
it is OK only emulate fix_fieds, because we need only
|
||||
value of constant
|
||||
*/
|
||||
it->quick_fix_field();
|
||||
res = purge_master_logs_before_date(thd, (ulong)it->val_int());
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
@@ -3505,8 +3519,18 @@ create_error:
|
||||
break;
|
||||
}
|
||||
case SQLCOM_KILL:
|
||||
kill_one_thread(thd,lex->thread_id, lex->type & ONLY_KILL_QUERY);
|
||||
{
|
||||
Item *it= (Item *)lex->value_list.head();
|
||||
|
||||
if (it->fix_fields(lex->thd, 0, &it) || it->check_cols(1))
|
||||
{
|
||||
my_message(ER_SET_CONSTANTS_ONLY, ER(ER_SET_CONSTANTS_ONLY),
|
||||
MYF(0));
|
||||
goto error;
|
||||
}
|
||||
kill_one_thread(thd, (ulong)it->val_int(), lex->type & ONLY_KILL_QUERY);
|
||||
break;
|
||||
}
|
||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
||||
case SQLCOM_SHOW_GRANTS:
|
||||
if ((thd->priv_user &&
|
||||
|
||||
Reference in New Issue
Block a user