summaryrefslogtreecommitdiff
path: root/sql/sp_head.cc
diff options
context:
space:
mode:
authorunknown <monty@narttu.mysql.fi>2007-08-14 00:22:34 +0300
committerunknown <monty@narttu.mysql.fi>2007-08-14 00:22:34 +0300
commitc5f0611fadd910a8a169e35bdd7e572080530efe (patch)
tree2641806010f25bf6469538558e05487ecff3c959 /sql/sp_head.cc
parent6930ac54068b88ce5ca2476f70d74ddb42f5d9fc (diff)
parent09a53f28a73d8000bab902611f609a44d87f329d (diff)
downloadmariadb-git-c5f0611fadd910a8a169e35bdd7e572080530efe.tar.gz
Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into mysql.com:/home/my/mysql-5.1 configure.in: Auto merged client/mysql.cc: Auto merged include/m_ctype.h: Auto merged sql/field.cc: Auto merged sql/handler.cc: Auto merged sql/handler.h: Auto merged sql/item.cc: Auto merged sql/item_func.cc: Auto merged sql/item_strfunc.cc: Auto merged sql/item_strfunc.h: Auto merged sql/log.cc: Auto merged sql/log_event.cc: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/set_var.cc: Auto merged sql/sp_head.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_delete.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_select.cc: Auto merged sql/sql_string.cc: Auto merged sql/sql_table.cc: Auto merged sql/sql_yacc.yy: Auto merged sql/table.cc: Auto merged sql/table.h: Auto merged storage/myisam/mi_rkey.c: Auto merged client/mysqldump.c: Manual merge (trivial) scripts/mysql_install_db.sh: Complex merge (parital rewrite of new code) sql/sql_show.cc: Manual merge tests/mysql_client_test.c: then if ! test -x "$print_defaults" then missing_in_basedir my_print_defaults exit 1 fi else
Diffstat (limited to 'sql/sp_head.cc')
-rw-r--r--sql/sp_head.cc17
1 files changed, 10 insertions, 7 deletions
diff --git a/sql/sp_head.cc b/sql/sp_head.cc
index 7b2073b8de3..b8535ee9958 100644
--- a/sql/sp_head.cc
+++ b/sql/sp_head.cc
@@ -32,6 +32,8 @@
#include <my_user.h>
+extern "C" uchar *sp_table_key(const uchar *ptr, size_t *plen, my_bool first);
+
Item_result
sp_map_result_type(enum enum_field_types type)
{
@@ -483,7 +485,6 @@ sp_head::sp_head()
*/
m_db= m_name= m_qname= str_reset;
- extern uchar *sp_table_key(const uchar *ptr, size_t *plen, my_bool first);
DBUG_ENTER("sp_head::sp_head");
m_backpatch.empty();
@@ -1078,6 +1079,12 @@ sp_head::execute(THD *thd)
old_arena= thd->stmt_arena;
/*
+ Switch query context. This has to be done early as this is sometimes
+ allocated trough sql_alloc
+ */
+ saved_creation_ctx= m_creation_ctx->set_n_backup(thd);
+
+ /*
We have to save/restore this info when we are changing call level to
be able properly do close_thread_tables() in instructions.
*/
@@ -1122,10 +1129,6 @@ sp_head::execute(THD *thd)
*/
thd->spcont->callers_arena= &backup_arena;
- /* Switch query context. */
-
- saved_creation_ctx= m_creation_ctx->set_n_backup(thd);
-
do
{
sp_instr *i;
@@ -3602,8 +3605,8 @@ typedef struct st_sp_table
uint8 trg_event_map;
} SP_TABLE;
-uchar *
-sp_table_key(const uchar *ptr, size_t *plen, my_bool first)
+
+uchar *sp_table_key(const uchar *ptr, size_t *plen, my_bool first)
{
SP_TABLE *tab= (SP_TABLE *)ptr;
*plen= tab->qname.length;