summaryrefslogtreecommitdiff
path: root/sql/sql_analyse.cc
diff options
context:
space:
mode:
authorunknown <ramil/ram@mysql.com/ramil.myoffice.izhnet.ru>2007-02-06 15:58:40 +0400
committerunknown <ramil/ram@mysql.com/ramil.myoffice.izhnet.ru>2007-02-06 15:58:40 +0400
commit07efbe8c2a54f6475a463c6601dd485d0f320b06 (patch)
tree077c7ab3cdb5a473722a35c0a96712e52334bc64 /sql/sql_analyse.cc
parentf27ea1b1524ff8a38728c0886d5e15bc4dcfffee (diff)
downloadmariadb-git-07efbe8c2a54f6475a463c6601dd485d0f320b06.tar.gz
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) sql/sql_analyse.cc: Fix for bug #23782: Stored procedures: crash if variable in procedure analyse - call fix_fields() if arguments are not fixed.
Diffstat (limited to 'sql/sql_analyse.cc')
-rw-r--r--sql/sql_analyse.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/sql/sql_analyse.cc b/sql/sql_analyse.cc
index 62b6d4f7920..2b22696ef6a 100644
--- a/sql/sql_analyse.cc
+++ b/sql/sql_analyse.cc
@@ -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)
{