diff --git a/client/dump/sql_formatter.cc b/client/dump/sql_formatter.cc index c13698bf261..cd9ec2a1cda 100644 --- a/client/dump/sql_formatter.cc +++ b/client/dump/sql_formatter.cc @@ -302,7 +302,7 @@ void Sql_formatter::format_dump_start( << this->get_charset()->csname << ";\n"; if (dump_start_dump_task->m_gtid_mode == "OFF" && - *((ulong*)&m_options->m_gtid_purged) == ((ulong)GTID_PURGED_ON)) + m_options->m_gtid_purged == GTID_PURGED_ON) { m_options->m_mysql_chain_element_options->get_program()->error( Mysql::Tools::Base::Message_data(1, "Server has GTIDs disabled.\n", @@ -311,14 +311,8 @@ void Sql_formatter::format_dump_start( } if (dump_start_dump_task->m_gtid_mode != "OFF") { - /* - value for m_gtid_purged is set by typecasting its address to ulong* - however below conditions fails if we do direct comparison without - typecasting on solaris sparc. Guessing that this is due to differnt - endianess. - */ - if (*((ulong*)&m_options->m_gtid_purged) == ((ulong)GTID_PURGED_ON) || - *((ulong*)&m_options->m_gtid_purged) == ((ulong)GTID_PURGED_AUTO)) + if (m_options->m_gtid_purged == GTID_PURGED_ON || + m_options->m_gtid_purged == GTID_PURGED_AUTO) { if (!m_mysqldump_tool_options->m_dump_all_databases && *((ulong*)&m_options->m_gtid_purged) == ((ulong)GTID_PURGED_AUTO)) diff --git a/client/dump/sql_formatter_options.h b/client/dump/sql_formatter_options.h index 6155e7ef926..0fbbe6207eb 100644 --- a/client/dump/sql_formatter_options.h +++ b/client/dump/sql_formatter_options.h @@ -56,7 +56,12 @@ public: bool m_suppress_create_database; bool m_timezone_consistent; bool m_skip_definer; - enum enum_gtid_purged_mode m_gtid_purged; + // Storing m_gtid_purged as an ulong, because its setter code treats it as a + // long variable. + // Storing it as an enum causes issues on some systems beacuse of endianness, + // and only works because of the alignment of the next pointer on 64 bit + // systems. + ulong m_gtid_purged; const Mysql_chain_element_options* m_mysql_chain_element_options; const TYPELIB* get_gtid_purged_mode_typelib()