From 6e5a11a24923caa9dd65a3d494d35abed511b8b6 Mon Sep 17 00:00:00 2001 From: yezhiwei Date: Tue, 6 Sep 2022 16:53:32 +0800 Subject: [PATCH] fix some error handlers in mysqlpump --- client/dump/file_writer.cc | 8 +++++++- client/dump/mysqldump_tool_chain_maker.cc | 3 +++ client/dump/object_queue.cc | 2 ++ client/dump/sql_formatter.cc | 10 +++++++--- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/client/dump/file_writer.cc b/client/dump/file_writer.cc index e13b5a349d99..d8e4143a3880 100644 --- a/client/dump/file_writer.cc +++ b/client/dump/file_writer.cc @@ -41,12 +41,18 @@ void File_writer::append(const std::string& data_to_append) File_writer::~File_writer() { // Check for I/O errors and close file. - if (ferror(m_file) != 0 || fclose(m_file) != 0) + if (ferror(m_file) != 0) { this->pass_message(Mysql::Tools::Base::Message_data(ferror(m_file), "Error occurred while finishing writing to output.", Mysql::Tools::Base::Message_type_error)); } + if (fclose(m_file) != 0) + { + this->pass_message(Mysql::Tools::Base::Message_data(errno, + "Error occurred while finishing writing to output.", + Mysql::Tools::Base::Message_type_error)); + } } File_writer::File_writer( diff --git a/client/dump/mysqldump_tool_chain_maker.cc b/client/dump/mysqldump_tool_chain_maker.cc index 4543bb8cf5ff..92236a6d8afd 100644 --- a/client/dump/mysqldump_tool_chain_maker.cc +++ b/client/dump/mysqldump_tool_chain_maker.cc @@ -98,9 +98,12 @@ I_object_reader* Mysqldump_tool_chain_maker::create_chain( compression_writer_as_writer= compression_writer; } else + { this->pass_message(Mysql::Tools::Base::Message_data( 0, "Unknown compression method: " + algorithm_name, Mysql::Tools::Base::Message_type_error)); + return NULL; + } compression_writer_as_wrapper->register_output_writer(writer); writer= compression_writer_as_writer; diff --git a/client/dump/object_queue.cc b/client/dump/object_queue.cc index 06ea011ad9e5..a19657bb75a4 100644 --- a/client/dump/object_queue.cc +++ b/client/dump/object_queue.cc @@ -114,6 +114,8 @@ void Object_queue::read_object(Item_processing_data* item_to_process) Mysql::Tools::Base::Message_data( 0, "Not supported operation called.", Mysql::Tools::Base::Message_type_error)); + + return; } my_boost::mutex::scoped_lock lock(m_queue_mutex); diff --git a/client/dump/sql_formatter.cc b/client/dump/sql_formatter.cc index 14b3112491d5..2ffab399fa26 100644 --- a/client/dump/sql_formatter.cc +++ b/client/dump/sql_formatter.cc @@ -399,9 +399,13 @@ void Sql_formatter::format_plain_sql_object( if (new_priv_task != NULL) { if (m_options->m_drop_user) - this->append_output("DROP USER " - + (dynamic_cast(new_priv_task))->get_name() - + ";\n"); + { + Abstract_data_object* data_obj = dynamic_cast(new_priv_task); + if (data_obj != NULL) + this->append_output("DROP USER " + + data_obj->get_name() + + ";\n"); + } } this->append_output(plain_sql_dump_task->get_sql_formatted_definition()