Loading sql/sp_head.cc +7 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading Loading @@ -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; Loading @@ -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); } Loading Loading @@ -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; } Loading Loading @@ -2810,7 +2806,6 @@ sp_instr_jump_if_not::exec_core(THD *thd, uint *nextp) if (! it) { res= -1; *nextp = m_cont_dest; } else { Loading Loading @@ -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; Loading sql/sp_head.h +12 −15 Original line number Diff line number Diff line Loading @@ -468,11 +468,13 @@ class sp_instr :public Query_arena, public Sql_alloc thd Thread handle nextp OUT index of the next instruction to execute. (For most instructions this will be the instruction following this one). 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 occured other if some error occurred */ virtual int execute(THD *thd, uint *nextp) = 0; Loading @@ -482,22 +484,17 @@ class sp_instr :public Query_arena, public Sql_alloc 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. Loading Loading @@ -763,7 +760,7 @@ class sp_instr_opt_meta : public sp_instr 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 Loading
sql/sp_head.cc +7 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading Loading @@ -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; Loading @@ -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); } Loading Loading @@ -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; } Loading Loading @@ -2810,7 +2806,6 @@ sp_instr_jump_if_not::exec_core(THD *thd, uint *nextp) if (! it) { res= -1; *nextp = m_cont_dest; } else { Loading Loading @@ -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; Loading
sql/sp_head.h +12 −15 Original line number Diff line number Diff line Loading @@ -468,11 +468,13 @@ class sp_instr :public Query_arena, public Sql_alloc thd Thread handle nextp OUT index of the next instruction to execute. (For most instructions this will be the instruction following this one). 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 occured other if some error occurred */ virtual int execute(THD *thd, uint *nextp) = 0; Loading @@ -482,22 +484,17 @@ class sp_instr :public Query_arena, public Sql_alloc 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. Loading Loading @@ -763,7 +760,7 @@ class sp_instr_opt_meta : public sp_instr 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