From: Alexander Nozdrin Date: June 7 2011 4:32pm Subject: bzr commit into mysql-trunk branch (alexander.nozdrin:3170) Bug#11763162 List-Archive: http://lists.mysql.com/commits/138804 X-Bug: 11763162 Message-Id: <201106071633.p57GXIpj002341@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============9202090393086261960==" --===============9202090393086261960== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/alik/MySQL/bzr/00/bug55843/mysql-trunk-bug55843-01/ based on revid:alexander.nozdrin@stripped 3170 Alexander Nozdrin 2011-06-07 Pre-requisite patch for Bug#11763162 (55843 - Handled condition appears as not handled). The patch replaces set_warning_info() by push_warning_info() / pop_warning_info(). modified: sql/sp_head.cc sql/sql_admin.cc sql/sql_error.cc sql/sql_error.h sql/sql_show.cc === modified file 'sql/sp_head.cc' --- a/sql/sp_head.cc 2011-06-07 16:20:10 +0000 +++ b/sql/sp_head.cc 2011-06-07 16:32:56 +0000 @@ -1215,7 +1215,7 @@ sp_head::execute(THD *thd, bool merge_da Reprepare_observer *save_reprepare_observer= thd->m_reprepare_observer; Object_creation_ctx *saved_creation_ctx; Warning_info *saved_warning_info; - Warning_info warning_info(thd->get_stmt_da()->warn_id(), false); + Warning_info sp_warning_info(thd->get_stmt_da()->warn_id(), false); /* Just reporting a stack overrun error @@ -1286,9 +1286,15 @@ sp_head::execute(THD *thd, bool merge_da old_arena= thd->stmt_arena; /* Push a new warning information area. */ + saved_warning_info= thd->get_stmt_da()->get_warning_info(); - warning_info.append_warning_info(thd, saved_warning_info); - thd->get_stmt_da()->set_warning_info(&warning_info); + sp_warning_info.append_warning_info(thd, saved_warning_info); + + if (thd->get_stmt_da()->push_warning_info(&sp_warning_info)) + { + err_status= true; + goto done; + } /* Switch query context. This has to be done early as this is sometimes @@ -1496,11 +1502,9 @@ sp_head::execute(THD *thd, bool merge_da propagated to the caller in any case. */ if (err_status || merge_da_on_success) - { - saved_warning_info->merge_with_routine_info( - thd, thd->get_stmt_da()->get_warning_info()); - } - thd->get_stmt_da()->set_warning_info(saved_warning_info); + saved_warning_info->merge_with_routine_info(thd, &sp_warning_info); + + thd->get_stmt_da()->pop_warning_info(); done: DBUG_PRINT("info", ("err_status: %d killed: %d is_slave_error: %d report_error: %d", === modified file 'sql/sql_admin.cc' --- a/sql/sql_admin.cc 2011-06-07 16:20:10 +0000 +++ b/sql/sql_admin.cc 2011-06-07 16:32:56 +0000 @@ -351,18 +351,17 @@ static bool mysql_admin_table(THD* thd, because it's already known that the table is badly damaged. */ - Diagnostics_area *da= thd->get_stmt_da(); Warning_info wi(thd->query_id, false); - Warning_info *wi_saved= da->get_warning_info(); - da->set_warning_info(&wi); + if (thd->get_stmt_da()->push_warning_info(&wi)) + DBUG_RETURN(TRUE); open_error= open_temporary_tables(thd, table); if (!open_error) open_error= open_and_lock_tables(thd, table, TRUE, 0); - da->set_warning_info(wi_saved); + thd->get_stmt_da()->pop_warning_info(); } else { === modified file 'sql/sql_error.cc' --- a/sql/sql_error.cc 2011-06-07 16:20:10 +0000 +++ b/sql/sql_error.cc 2011-06-07 16:32:56 +0000 @@ -327,6 +327,25 @@ Diagnostics_area::Diagnostics_area(ulong reset_diagnostics_area(); } +bool +Diagnostics_area::push_warning_info(Warning_info *wi) +{ + if (m_wi_list.push_front(wi)) + return true; + + m_current_wi= wi; + + return false; +} + +void Diagnostics_area::pop_warning_info() +{ + DBUG_ASSERT(m_wi_list.elements > 0); + m_wi_list.pop(); + + m_current_wi= m_wi_list.elements > 0 ? m_wi_list.head() : &m_main_wi; +} + /** Clear this diagnostics area. === modified file 'sql/sql_error.h' --- a/sql/sql_error.h 2011-06-07 16:20:10 +0000 +++ b/sql/sql_error.h 2011-06-07 16:32:56 +0000 @@ -494,10 +494,7 @@ public: { return m_current_wi; } inline const Warning_info *get_warning_info() const - { return m_current_wi; } - - inline void set_warning_info(Warning_info *wi) - { m_current_wi= wi; } + { return const_cast (this)->get_warning_info(); } public: ulonglong warn_id() const @@ -545,6 +542,10 @@ public: void reset_for_next_command() { get_warning_info()->reset_for_next_command(); } +public: + bool push_warning_info(Warning_info *wi); + void pop_warning_info(); + private: /** Message buffer. Can be used by OK or ERROR status. */ char m_message[MYSQL_ERRMSG_SIZE]; @@ -585,6 +586,8 @@ private: Warning_info m_main_wi; Warning_info *m_current_wi; + + List m_wi_list; }; /////////////////////////////////////////////////////////////////////////// === modified file 'sql/sql_show.cc' --- a/sql/sql_show.cc 2011-06-07 16:20:10 +0000 +++ b/sql/sql_show.cc 2011-06-07 16:32:56 +0000 @@ -6807,13 +6807,12 @@ static bool do_fill_table(THD *thd, Warning_info wi(thd->query_id, true); Warning_info *wi_saved= da->get_warning_info(); - da->set_warning_info(&wi); + if (da->push_warning_info(&wi)) + return true; bool res= table_list->schema_table->fill_table( thd, table_list, join_table->condition()); - da->set_warning_info(wi_saved); - // Pass an error if any. if (da->is_error()) @@ -6840,6 +6839,8 @@ static bool do_fill_table(THD *thd, wi_saved->push_warning(thd, err); } + da->pop_warning_info(); + return res; } --===============9202090393086261960== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/alexander.nozdrin@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: alexander.nozdrin@stripped\ # 8x9towku2dxdif30 # target_branch: file:///home/alik/MySQL/bzr/00/bug55843/mysql-trunk-\ # bug55843-01/ # testament_sha1: d3533387dc91b155e2a2498d8c6363b117a3c531 # timestamp: 2011-06-07 20:33:01 +0400 # base_revision_id: alexander.nozdrin@stripped\ # 4g19t4syr65bq3ku # # Begin bundle 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 --===============9202090393086261960==--