Fix for bug #23782: Stored procedures: crash if variable in procedure

analyse

We have to call fix_fields() for procedure analyse' arguments as they may   
not be
fixed in some circumstances.

(as the crash appears when mysqld starts skipping binlog, a test case
will be added when we can --skip-bin-log in -master.opt)
This commit is contained in:
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru 2007-02-06 15:58:40 +04:00
parent b0977714a8
commit 85f2f924fd

View File

@ -87,6 +87,11 @@ proc_analyse_init(THD *thd, ORDER *param, select_result *result,
else if (param->next)
{
// first parameter
if (!(*param->item)->fixed && (*param->item)->fix_fields(thd, param->item))
{
DBUG_PRINT("info", ("fix_fields() for the first parameter failed"));
goto err;
}
if ((*param->item)->type() != Item::INT_ITEM ||
(*param->item)->val_real() < 0)
{
@ -101,6 +106,11 @@ proc_analyse_init(THD *thd, ORDER *param, select_result *result,
goto err;
}
// second parameter
if (!(*param->item)->fixed && (*param->item)->fix_fields(thd, param->item))
{
DBUG_PRINT("info", ("fix_fields() for the second parameter failed"));
goto err;
}
if ((*param->item)->type() != Item::INT_ITEM ||
(*param->item)->val_real() < 0)
{