diff --git a/sql/sp_head.cc b/sql/sp_head.cc index edfa493da9f..feceb2fb960 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -2053,6 +2053,13 @@ sp_head::set_info(longlong created, longlong modified, } +void +sp_head::set_body_begin_ptr(Lex_input_stream *lip, const char *begin_ptr) +{ + m_body_begin= begin_ptr; +} + + void sp_head::set_definer(const char *definer, uint definerlen) { diff --git a/sql/sp_head.h b/sql/sp_head.h index f3c3ebfe6e8..2d3bc1307d9 100644 --- a/sql/sp_head.h +++ b/sql/sp_head.h @@ -178,8 +178,11 @@ public: // Pointers set during parsing const char *m_param_begin; const char *m_param_end; + +private: const char *m_body_begin; +public: /* Security context for stored routine which should be run under definer privileges. @@ -297,6 +300,8 @@ public: void set_info(longlong created, longlong modified, st_sp_chistics *chistics, ulong sql_mode); + void set_body_begin_ptr(Lex_input_stream *lip, const char *begin_ptr); + void set_definer(const char *definer, uint definerlen); void set_definer(const LEX_STRING *user_name, const LEX_STRING *host_name); diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 8a4c99b6d00..f3b8e7fe640 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -1872,7 +1872,7 @@ ev_sql_stmt: bzero((char *)&lex->sp_chistics, sizeof(st_sp_chistics)); lex->sphead->m_chistics= &lex->sp_chistics; - lex->sphead->m_body_begin= lip->get_cpp_ptr(); + lex->sphead->set_body_begin_ptr(lip, lip->get_cpp_ptr()); } ev_sql_stmt_inner { @@ -2066,7 +2066,7 @@ create_function_tail: Lex_input_stream *lip= thd->m_lip; lex->sphead->m_chistics= &lex->sp_chistics; - lex->sphead->m_body_begin= lip->get_cpp_tok_start(); + lex->sphead->set_body_begin_ptr(lip, lip->get_cpp_tok_start()); } sp_proc_stmt { @@ -11489,7 +11489,7 @@ trigger_tail: bzero((char *)&lex->sp_chistics, sizeof(st_sp_chistics)); lex->sphead->m_chistics= &lex->sp_chistics; - lex->sphead->m_body_begin= lip->get_cpp_ptr(); + lex->sphead->set_body_begin_ptr(lip, lip->get_cpp_ptr()); } sp_proc_stmt /* $16 */ { /* $17 */ @@ -11592,7 +11592,7 @@ sp_tail: Lex_input_stream *lip= thd->m_lip; lex->sphead->m_chistics= &lex->sp_chistics; - lex->sphead->m_body_begin= lip->get_cpp_tok_start(); + lex->sphead->set_body_begin_ptr(lip, lip->get_cpp_tok_start()); } sp_proc_stmt {