From 07efbe8c2a54f6475a463c6601dd485d0f320b06 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 6 Feb 2007 15:58:40 +0400 Subject: [PATCH] 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. --- sql/sql_analyse.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) 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) {