diff options
Diffstat (limited to 'sql/sp_head.cc')
-rw-r--r-- | sql/sp_head.cc | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/sql/sp_head.cc b/sql/sp_head.cc index 473d27238eb..15a85173f8f 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -91,7 +91,7 @@ eval_func_item(THD *thd, Item *it, enum enum_field_types type) DBUG_RETURN(it); } -sp_head::sp_head(LEX_STRING *name, LEX *lex) +sp_head::sp_head(LEX_STRING *name, LEX *lex, LEX_STRING *comment, char suid) : Sql_alloc(), m_simple_case(FALSE), m_multi_query(FALSE) { DBUG_ENTER("sp_head::sp_head"); @@ -102,6 +102,16 @@ sp_head::sp_head(LEX_STRING *name, LEX *lex) m_name.str= name->str; m_defstr.length= lex->end_of_query - lex->buf; m_defstr.str= sql_strmake(dstr, m_defstr.length); + + m_comment.length= 0; + m_comment.str= 0; + if (comment) + { + m_comment.length= comment->length; + m_comment.str= comment->str; + } + + m_suid= suid; m_pcont= lex->spcont; my_init_dynamic_array(&m_instr, sizeof(sp_instr *), 16, 8); m_backpatch.empty(); @@ -119,11 +129,15 @@ sp_head::create(THD *thd) if (m_type == TYPE_ENUM_FUNCTION) ret= sp_create_function(thd, m_name.str, m_name.length, - m_defstr.str, m_defstr.length); + m_defstr.str, m_defstr.length, + m_comment.str, m_comment.length, + m_suid); else ret= sp_create_procedure(thd, m_name.str, m_name.length, - m_defstr.str, m_defstr.length); + m_defstr.str, m_defstr.length, + m_comment.str, m_comment.length, + m_suid); DBUG_RETURN(ret); } |