Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-runtime
into weblab.(none):/home/marcsql/TREE/mysql-5.1-8407-cleanup sql/sp_head.cc: Auto merged sql/sp_head.h: Auto merged
This commit is contained in:
commit
b841c9ebbd
@ -1117,7 +1117,7 @@ sp_head::execute(THD *thd)
|
||||
case SP_HANDLER_CONTINUE:
|
||||
thd->restore_active_arena(&execute_arena, &backup_arena);
|
||||
thd->set_n_backup_active_arena(&execute_arena, &backup_arena);
|
||||
ctx->push_hstack(ip);
|
||||
ctx->push_hstack(i->get_cont_dest());
|
||||
// Fall through
|
||||
default:
|
||||
ip= hip;
|
||||
@ -2448,7 +2448,7 @@ sp_lex_keeper::reset_lex_and_exec_core(THD *thd, uint *nextp,
|
||||
reinit_stmt_before_use(thd, m_lex);
|
||||
|
||||
if (open_tables)
|
||||
res= instr->exec_open_and_lock_tables(thd, m_lex->query_tables, nextp);
|
||||
res= instr->exec_open_and_lock_tables(thd, m_lex->query_tables);
|
||||
|
||||
if (!res)
|
||||
{
|
||||
@ -2500,8 +2500,7 @@ sp_lex_keeper::reset_lex_and_exec_core(THD *thd, uint *nextp,
|
||||
sp_instr class functions
|
||||
*/
|
||||
|
||||
int sp_instr::exec_open_and_lock_tables(THD *thd, TABLE_LIST *tables,
|
||||
uint *nextp)
|
||||
int sp_instr::exec_open_and_lock_tables(THD *thd, TABLE_LIST *tables)
|
||||
{
|
||||
int result;
|
||||
|
||||
@ -2511,19 +2510,16 @@ int sp_instr::exec_open_and_lock_tables(THD *thd, TABLE_LIST *tables,
|
||||
*/
|
||||
if (check_table_access(thd, SELECT_ACL, tables, 0)
|
||||
|| open_and_lock_tables(thd, tables))
|
||||
{
|
||||
get_cont_dest(nextp);
|
||||
result= -1;
|
||||
}
|
||||
else
|
||||
result= 0;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void sp_instr::get_cont_dest(uint *nextp)
|
||||
uint sp_instr::get_cont_dest()
|
||||
{
|
||||
*nextp= m_ip+1;
|
||||
return (m_ip+1);
|
||||
}
|
||||
|
||||
|
||||
@ -2716,9 +2712,9 @@ sp_instr_set_trigger_field::print(String *str)
|
||||
sp_instr_opt_meta
|
||||
*/
|
||||
|
||||
void sp_instr_opt_meta::get_cont_dest(uint *nextp)
|
||||
uint sp_instr_opt_meta::get_cont_dest()
|
||||
{
|
||||
*nextp= m_cont_dest;
|
||||
return m_cont_dest;
|
||||
}
|
||||
|
||||
|
||||
@ -2810,7 +2806,6 @@ sp_instr_jump_if_not::exec_core(THD *thd, uint *nextp)
|
||||
if (! it)
|
||||
{
|
||||
res= -1;
|
||||
*nextp = m_cont_dest;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3379,7 +3374,6 @@ sp_instr_set_case_expr::exec_core(THD *thd, uint *nextp)
|
||||
spcont->clear_handler();
|
||||
thd->spcont= spcont;
|
||||
}
|
||||
*nextp= m_cont_dest; /* For continue handler */
|
||||
}
|
||||
else
|
||||
*nextp= m_ip+1;
|
||||
|
@ -468,13 +468,15 @@ public:
|
||||
thd Thread handle
|
||||
nextp OUT index of the next instruction to execute. (For most
|
||||
instructions this will be the instruction following this
|
||||
one).
|
||||
|
||||
RETURN
|
||||
0 on success,
|
||||
other if some error occured
|
||||
one). Note that this parameter is undefined in case of
|
||||
errors, use get_cont_dest() to find the continuation
|
||||
instruction for CONTINUE error handlers.
|
||||
|
||||
RETURN
|
||||
0 on success,
|
||||
other if some error occurred
|
||||
*/
|
||||
|
||||
|
||||
virtual int execute(THD *thd, uint *nextp) = 0;
|
||||
|
||||
/**
|
||||
@ -482,22 +484,17 @@ public:
|
||||
Open and lock the tables used by this statement, as a pre-requisite
|
||||
to execute the core logic of this instruction with
|
||||
<code>exec_core()</code>.
|
||||
If this statement fails, the next instruction to execute is also returned.
|
||||
This is useful when a user defined SQL continue handler needs to be
|
||||
executed.
|
||||
@param thd the current thread
|
||||
@param tables the list of tables to open and lock
|
||||
@param nextp the continuation instruction, returned to the caller if this
|
||||
method fails.
|
||||
@return zero on success, non zero on failure.
|
||||
*/
|
||||
int exec_open_and_lock_tables(THD *thd, TABLE_LIST *tables, uint *nextp);
|
||||
int exec_open_and_lock_tables(THD *thd, TABLE_LIST *tables);
|
||||
|
||||
/**
|
||||
Get the continuation destination of this instruction.
|
||||
@param nextp the continuation destination (output)
|
||||
@return the continuation destination
|
||||
*/
|
||||
virtual void get_cont_dest(uint *nextp);
|
||||
virtual uint get_cont_dest();
|
||||
|
||||
/*
|
||||
Execute core function of instruction after all preparations (e.g.
|
||||
@ -763,7 +760,7 @@ public:
|
||||
virtual void set_destination(uint old_dest, uint new_dest)
|
||||
= 0;
|
||||
|
||||
virtual void get_cont_dest(uint *nextp);
|
||||
virtual uint get_cont_dest();
|
||||
|
||||
protected:
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user