Commit b863cea3 authored by unknown's avatar unknown

Merge bk-internal.mysql.com:/home/bk/mysql-5.0

into  mysql.com:/home/my/mysql-5.0
parents 7aed267e 90126089
...@@ -284,6 +284,7 @@ class Item_func_connection_id :public Item_int_func ...@@ -284,6 +284,7 @@ class Item_func_connection_id :public Item_int_func
longlong value; longlong value;
public: public:
Item_func_connection_id() {}
const char *func_name() const { return "connection_id"; } const char *func_name() const { return "connection_id"; }
void fix_length_and_dec(); void fix_length_and_dec();
bool fix_fields(THD *thd, Item **ref); bool fix_fields(THD *thd, Item **ref);
......
...@@ -269,7 +269,6 @@ db_find_routine_aux(THD *thd, int type, sp_name *name, TABLE *table) ...@@ -269,7 +269,6 @@ db_find_routine_aux(THD *thd, int type, sp_name *name, TABLE *table)
static int static int
db_find_routine(THD *thd, int type, sp_name *name, sp_head **sphp) db_find_routine(THD *thd, int type, sp_name *name, sp_head **sphp)
{ {
extern int MYSQLparse(void *thd);
TABLE *table; TABLE *table;
const char *params, *returns, *body; const char *params, *returns, *body;
int ret; int ret;
...@@ -478,6 +477,7 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp, ...@@ -478,6 +477,7 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp,
(*sphp)->optimize(); (*sphp)->optimize();
} }
end: end:
lex_end(thd->lex);
thd->spcont= old_spcont; thd->spcont= old_spcont;
thd->variables.sql_mode= old_sql_mode; thd->variables.sql_mode= old_sql_mode;
thd->variables.select_limit= old_select_limit; thd->variables.select_limit= old_select_limit;
......
...@@ -671,6 +671,7 @@ sp_head::destroy() ...@@ -671,6 +671,7 @@ sp_head::destroy()
DBUG_ASSERT(m_lex.is_empty() || m_thd); DBUG_ASSERT(m_lex.is_empty() || m_thd);
while ((lex= (LEX *)m_lex.pop())) while ((lex= (LEX *)m_lex.pop()))
{ {
lex_end(m_thd->lex);
delete m_thd->lex; delete m_thd->lex;
m_thd->lex= lex; m_thd->lex= lex;
} }
...@@ -1643,7 +1644,10 @@ sp_head::restore_lex(THD *thd) ...@@ -1643,7 +1644,10 @@ sp_head::restore_lex(THD *thd)
*/ */
merge_table_list(thd, sublex->query_tables, sublex); merge_table_list(thd, sublex->query_tables, sublex);
if (! sublex->sp_lex_in_use) if (! sublex->sp_lex_in_use)
{
lex_end(sublex);
delete sublex; delete sublex;
}
thd->lex= oldlex; thd->lex= oldlex;
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
......
...@@ -520,7 +520,10 @@ class sp_lex_keeper ...@@ -520,7 +520,10 @@ class sp_lex_keeper
virtual ~sp_lex_keeper() virtual ~sp_lex_keeper()
{ {
if (m_lex_resp) if (m_lex_resp)
{
lex_end(m_lex);
delete m_lex; delete m_lex;
}
} }
/* /*
......
...@@ -1195,6 +1195,7 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table) ...@@ -1195,6 +1195,7 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table)
end: end:
if (arena) if (arena)
thd->restore_active_arena(arena, &backup); thd->restore_active_arena(arena, &backup);
lex_end(thd->lex);
thd->lex= old_lex; thd->lex= old_lex;
DBUG_RETURN(result); DBUG_RETURN(result);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment