diff options
Diffstat (limited to 'sql/sp_head.cc')
-rw-r--r-- | sql/sp_head.cc | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/sql/sp_head.cc b/sql/sp_head.cc index 8bea0be0f56..67ec830d902 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -1,5 +1,5 @@ /* - Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2002, 2011, Oracle and/or its affiliates. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1097,7 +1097,7 @@ bool sp_head::execute(THD *thd) { DBUG_ENTER("sp_head::execute"); - char saved_cur_db_name_buf[NAME_LEN+1]; + char saved_cur_db_name_buf[SAFE_NAME_LEN+1]; LEX_STRING saved_cur_db_name= { saved_cur_db_name_buf, sizeof(saved_cur_db_name_buf) }; bool cur_db_changed= FALSE; @@ -1887,7 +1887,7 @@ sp_head::execute_procedure(THD *thd, List<Item> *args) uint params = m_pcont->context_var_count(); sp_rcontext *save_spcont, *octx; sp_rcontext *nctx = NULL; - bool save_enable_slow_log= false; + bool save_enable_slow_log; bool save_log_general= false; DBUG_ENTER("sp_head::execute_procedure"); DBUG_PRINT("info", ("procedure %s", m_name.str)); @@ -1965,9 +1965,10 @@ sp_head::execute_procedure(THD *thd, List<Item> *args) if (spvar->mode == sp_param_out) { Item_null *null_item= new Item_null(); + Item *tmp_item= null_item; if (!null_item || - nctx->set_variable(thd, i, (Item **)&null_item)) + nctx->set_variable(thd, i, &tmp_item)) { err_status= TRUE; break; @@ -1998,10 +1999,10 @@ sp_head::execute_procedure(THD *thd, List<Item> *args) DBUG_PRINT("info",(" %.*s: eval args done", (int) m_name.length, m_name.str)); } - if (!(m_flags & LOG_SLOW_STATEMENTS) && thd->enable_slow_log) + save_enable_slow_log= thd->enable_slow_log; + if (!(m_flags & LOG_SLOW_STATEMENTS) && save_enable_slow_log) { DBUG_PRINT("info", ("Disabling slow log for the execution")); - save_enable_slow_log= true; thd->enable_slow_log= FALSE; } if (!(m_flags & LOG_GENERAL_LOG) && !(thd->options & OPTION_LOG_OFF)) @@ -2024,8 +2025,7 @@ sp_head::execute_procedure(THD *thd, List<Item> *args) if (save_log_general) thd->options &= ~OPTION_LOG_OFF; - if (save_enable_slow_log) - thd->enable_slow_log= true; + thd->enable_slow_log= save_enable_slow_log; /* In the case when we weren't able to employ reuse mechanism for OUT/INOUT paranmeters, we should reallocate memory. This @@ -2465,8 +2465,7 @@ sp_head::show_create_routine(THD *thd, int type) if (check_show_routine_access(thd, this, &full_access)) DBUG_RETURN(TRUE); - sys_var_thd_sql_mode::symbolic_mode_representation( - thd, m_sql_mode, &sql_mode); + sys_var::make_set(thd, m_sql_mode, &sql_mode_typelib, &sql_mode); /* Send header. */ @@ -3880,7 +3879,7 @@ sp_head::merge_table_list(THD *thd, TABLE_LIST *table, LEX *lex_for_tmp_check) for (; table ; table= table->next_global) if (!table->derived && !table->schema_table) { - char tname[(NAME_LEN + 1) * 3]; // db\0table\0alias\0 + char tname[(SAFE_NAME_LEN + 1) * 3]; // db\0table\0alias\0 uint tlen, alen; tlen= table->db_length; |