diff -uprN data1/mysql-8.0.29/libbinlogevents/include/binlog_event.h data2/mysql-8.0.29/libbinlogevents/include/binlog_event.h --- data1/mysql-8.0.29/libbinlogevents/include/binlog_event.h 2022-03-23 21:52:57.000000000 +0800 +++ data2/mysql-8.0.29/libbinlogevents/include/binlog_event.h 2022-05-23 19:18:52.634992342 +0800 @@ -613,7 +613,7 @@ class Log_event_footer { log_pos - 4 byte unsigned integer + 8 byte unsigned integer The position of the next event in the master binary log, in bytes from the beginning of the file. In a binlog that is not a relay log, this is just the position of the next event, in bytes @@ -630,7 +630,7 @@ class Log_event_footer { Summing up the numbers above, we see that the total size of the - common header is 19 bytes. + common header is 23 bytes. */ class Log_event_header { public: diff -uprN data1/mysql-8.0.29/libbinlogevents/src/binlog_event.cpp data2/mysql-8.0.29/libbinlogevents/src/binlog_event.cpp --- data1/mysql-8.0.29/libbinlogevents/src/binlog_event.cpp 2022-03-23 21:52:57.000000000 +0800 +++ data2/mysql-8.0.29/libbinlogevents/src/binlog_event.cpp 2022-05-23 19:18:05.774403278 +0800 @@ -125,7 +125,7 @@ enum_binlog_checksum_alg Log_event_foote @retval false as success */ bool Log_event_footer::event_checksum_test(unsigned char *event_buf, - unsigned long event_len, + unsigned long long event_len, enum_binlog_checksum_alg alg) { bool res = false; unsigned short flags = 0; // to store in FD's buffer flags orig value @@ -196,7 +196,7 @@ Log_event_header::Log_event_header(Event /** @verbatim - The first 19 bytes in the header is as follows: + The first 23 bytes in the header is as follows: +============================================+ | member_variable offset : len | +============================================+ @@ -208,11 +208,11 @@ Log_event_header::Log_event_header(Event +--------------------------------------------+ | data_written EVENT_LEN_OFFSET(9) : 4 | +--------------------------------------------+ - | log_pos LOG_POS_OFFSET(13) : 4 | + | log_pos LOG_POS_OFFSET(13) : 8 | +--------------------------------------------+ - | flags FLAGS_OFFSET(17) : 2 | + | flags FLAGS_OFFSET(21) : 2 | +--------------------------------------------+ - | extra_headers 19 : x-19| + | extra_headers 23 : x-23| +============================================+ @endverbatim */ @@ -231,7 +231,7 @@ Log_event_header::Log_event_header(Event reader.set_length(data_written); BAPI_ASSERT(reader.position() == LOG_POS_OFFSET); - log_pos = reader.read(4); + log_pos = reader.read(8); BAPI_ASSERT(reader.position() == FLAGS_OFFSET); flags = reader.read(); diff -uprN data1/mysql-8.0.29/plugin/semisync/semisync_source_plugin.cc data2/mysql-8.0.29/plugin/semisync/semisync_source_plugin.cc --- data1/mysql-8.0.29/plugin/semisync/semisync_source_plugin.cc 2022-03-23 21:52:57.000000000 +0800 +++ data2/mysql-8.0.29/plugin/semisync/semisync_source_plugin.cc 2022-05-23 19:22:27.391109073 +0800 @@ -162,7 +162,7 @@ static int repl_semi_binlog_dump_start(B LogErr(INFORMATION_LEVEL, ER_SEMISYNC_START_BINLOG_DUMP_TO_SLAVE, semi_sync_slave != 0 ? "semi-sync" : "asynchronous", param->server_id, - log_file, (unsigned long)log_pos); + log_file, (unsigned longlong)log_pos); return 0; } diff -uprN data1/mysql-8.0.29/sql/binlog.cc data2/mysql-8.0.29/sql/binlog.cc --- data1/mysql-8.0.29/sql/binlog.cc 2022-03-23 21:52:57.000000000 +0800 +++ data2/mysql-8.0.29/sql/binlog.cc 2022-05-23 19:16:39.236162162 +0800 @@ -1331,10 +1331,10 @@ class Binlog_event_writer : public Basic bool have_checksum; ha_checksum initial_checksum; ha_checksum checksum; - uint32 end_log_pos; + uint64 end_log_pos; uchar header[LOG_EVENT_HEADER_LEN]; my_off_t header_len = 0; - uint32 event_len = 0; + uint64 event_len = 0; public: /** @@ -1356,21 +1356,22 @@ class Binlog_event_writer : public Basic } void update_header() { - event_len = uint4korr(header + EVENT_LEN_OFFSET); + event_len = uint8korr(header + EVENT_LEN_OFFSET); // Increase end_log_pos end_log_pos += event_len; // Update event length if it has checksum if (have_checksum) { - int4store(header + EVENT_LEN_OFFSET, event_len + BINLOG_CHECKSUM_LEN); - end_log_pos += BINLOG_CHECKSUM_LEN; + int8store(header + EVENT_LEN_OFFSET, event_len + BINLOG_CHECKSUM_LEN+BINLOG_CHECKSUM_LEN); + end_log_pos += BINLOG_CHECKSUM_LEN*2; } // Store end_log_pos - int4store(header + LOG_POS_OFFSET, end_log_pos); + int8store(header + LOG_POS_OFFSET, end_log_pos); // update the checksum if (have_checksum) checksum = my_checksum(checksum, header, header_len); + } bool write(const unsigned char *buffer, my_off_t length) override { diff -uprN data1/mysql-8.0.29/sql/log_event.cc data2/mysql-8.0.29/sql/log_event.cc --- data1/mysql-8.0.29/sql/log_event.cc 2022-03-23 21:52:57.000000000 +0800 +++ data2/mysql-8.0.29/sql/log_event.cc 2022-05-23 19:19:49.616492652 +0800 @@ -383,7 +383,7 @@ static void inline slave_rows_error_repo : ER_UNKNOWN_ERROR, "Could not execute %s event on table %s.%s;" "%s handler error %s; " - "the event's master log %s, end_log_pos %lu", + "the event's master log %s, end_log_pos %llu", type, table->s->db.str, table->s->table_name.str, buff, handler_error == nullptr ? "" : handler_error, log_name, pos); @@ -392,7 +392,7 @@ static void inline slave_rows_error_repo thd->is_error() ? thd->get_stmt_da()->mysql_errno() : ER_UNKNOWN_ERROR, "Could not execute %s event on table %s.%s;" - "%s the event's master log %s, end_log_pos %lu", + "%s the event's master log %s, end_log_pos %llu", type, table->s->db.str, table->s->table_name.str, buff, log_name, pos); } @@ -1175,12 +1175,12 @@ int Log_event::net_send(Protocol *protoc void Log_event::init_show_field_list(mem_root_deque *field_list) { field_list->push_back(new Item_empty_string("Log_name", 20)); - field_list->push_back(new Item_return_int("Pos", MY_INT32_NUM_DECIMAL_DIGITS, + field_list->push_back(new Item_return_int("Pos", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG)); field_list->push_back(new Item_empty_string("Event_type", 20)); field_list->push_back(new Item_return_int("Server_id", 10, MYSQL_TYPE_LONG)); field_list->push_back(new Item_return_int( - "End_log_pos", MY_INT32_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG)); + "End_log_pos", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG)); field_list->push_back(new Item_empty_string("Info", 20)); } @@ -1326,8 +1326,8 @@ uint32 Log_event::write_header_to_memory buf[EVENT_TYPE_OFFSET] = get_type_code(); int4store(buf + SERVER_ID_OFFSET, server_id); int4store(buf + EVENT_LEN_OFFSET, - static_cast(common_header->data_written)); - int4store(buf + LOG_POS_OFFSET, static_cast(common_header->log_pos)); + static_cast(common_header->data_written)); + int8store(buf + LOG_POS_OFFSET, static_cast(common_header->log_pos)); int2store(buf + FLAGS_OFFSET, common_header->flags); return LOG_EVENT_HEADER_LEN; @@ -1404,8 +1404,8 @@ void Log_event::print_header(IO_CACHE *f my_b_printf(file, "#"); print_timestamp(file, nullptr); - my_b_printf(file, " server id %lu end_log_pos %s ", (ulong)server_id, - llstr(common_header->log_pos, llbuff)); + my_b_printf(file, " server id %llu end_log_pos %s ", (ulong)server_id, + ullstr(common_header->log_pos, llbuff)); /* print the checksum */ @@ -2584,13 +2584,13 @@ static bool schedule_next_event(Log_even switch (error) { char llbuff[22]; case ER_MTS_CANT_PARALLEL: - llstr(rli->get_event_relay_log_pos(), llbuff); + ullstr(rli->get_event_relay_log_pos(), llbuff); my_error(ER_MTS_CANT_PARALLEL, MYF(0), ev->get_type_str(), rli->get_event_relay_log_name(), llbuff, "The master event is logically timestamped incorrectly."); return true; case ER_MTS_INCONSISTENT_DATA: - llstr(rli->get_event_relay_log_pos(), llbuff); + ullstr(rli->get_event_relay_log_pos(), llbuff); { char errfmt[] = "Coordinator experienced an error or was killed while scheduling " @@ -2868,7 +2868,7 @@ Slave_worker *Log_event::get_slave_worke rows- event load in insensetive to the flag value */ true, ret_worker))) { - llstr(rli->get_event_relay_log_pos(), llbuff); + ullstr(rli->get_event_relay_log_pos(), llbuff); my_error(ER_MTS_CANT_PARALLEL, MYF(0), get_type_str(), rli->get_event_relay_log_name(), llbuff, "could not distribute the event to a Worker"); @@ -2909,7 +2909,7 @@ Slave_worker *Log_event::get_slave_worke is_ignorable_event())) { assert(!ret_worker); - llstr(rli->get_event_relay_log_pos(), llbuff); + ullstr(rli->get_event_relay_log_pos(), llbuff); my_error(ER_MTS_CANT_PARALLEL, MYF(0), get_type_str(), rli->get_event_relay_log_name(), llbuff, "the event is a part of a group that is unsupported in " @@ -3176,7 +3176,7 @@ int Log_event::apply_event(Relay_log_inf MTS has to stop to suggest restart in the permanent sequential mode. */ - llstr(rli->get_event_relay_log_pos(), llbuff); + ullstr(rli->get_event_relay_log_pos(), llbuff); my_error(ER_MTS_CANT_PARALLEL, MYF(0), get_type_str(), rli->get_event_relay_log_name(), llbuff, "possible malformed group of events from an old master"); @@ -4571,7 +4571,7 @@ int Query_log_event::do_apply_event(Rela "Error in cleaning up after an event preceding the commit; " "the group log file/position: %s %s", const_cast(rli)->get_group_master_log_name_info(), - llstr(const_cast(rli) + ullstr(const_cast(rli) ->get_group_master_log_pos_info(), llbuff)); } @@ -5711,9 +5711,9 @@ int Rotate_log_event::do_update_pos(Rela mysql_mutex_lock(&rli->data_lock); DBUG_PRINT("info", ("old group_master_log_name: '%s' " - "old group_master_log_pos: %lu", + "old group_master_log_pos: %llu", rli->get_group_master_log_name(), - (ulong)rli->get_group_master_log_pos())); + (ulonglong)rli->get_group_master_log_pos())); memcpy(const_cast(rli->get_group_master_log_name()), new_log_ident, ident_len + 1); @@ -5734,7 +5734,7 @@ int Rotate_log_event::do_update_pos(Rela } DBUG_PRINT("info", ("new group_master_log_name: '%s' " - "new group_master_log_pos: %lu", + "new group_master_log_pos: %llu", rli->get_group_master_log_name(), (ulong)rli->get_group_master_log_pos())); mysql_mutex_unlock(&rli->data_lock); @@ -8714,7 +8714,7 @@ int Rows_log_event::handle_idempotent_an slave_rows_error_report( ll, error, rli, thd, m_table, get_type_str(), const_cast(rli)->get_rpl_log_name(), - (ulong)common_header->log_pos); + (ulonglong)common_header->log_pos); thd->get_stmt_da()->reset_condition_info(thd); clear_all_errors(thd, const_cast(rli)); *err = 0; @@ -10065,7 +10065,7 @@ int Rows_log_event::do_apply_event(Relay slave_rows_error_report( INFORMATION_LEVEL, error, rli, thd, table, get_type_str(), const_cast(rli)->get_rpl_log_name(), - (ulong)common_header->log_pos); + (ulonglong)common_header->log_pos); thd->get_stmt_da()->reset_condition_info(thd); clear_all_errors(thd, const_cast(rli)); error = 0; @@ -10079,7 +10079,7 @@ int Rows_log_event::do_apply_event(Relay slave_rows_error_report( ERROR_LEVEL, error, rli, thd, table, get_type_str(), const_cast(rli)->get_rpl_log_name(), - (ulong)common_header->log_pos); + (ulonglong)common_header->log_pos); /* @todo We should probably not call reset_current_stmt_binlog_format_row() from here. @@ -10098,7 +10098,7 @@ end: ERROR_LEVEL, thd->is_error() ? 0 : error, rli, thd, table, get_type_str(), const_cast(rli)->get_rpl_log_name(), - (ulong)common_header->log_pos); + (ulonglong)common_header->log_pos); else { rli->report( ERROR_LEVEL, @@ -10109,7 +10109,7 @@ end: thd->is_error() ? thd->get_stmt_da()->message_text() : "unexpected error", const_cast(rli)->get_rpl_log_name(), - (ulong)common_header->log_pos); + (ulonglong)common_header->log_pos); } } /* We are at end of the statement (STMT_END_F flag), lets clean diff -uprN data1/mysql-8.0.29/sql/log_event.h data2/mysql-8.0.29/sql/log_event.h --- data1/mysql-8.0.29/sql/log_event.h 2022-03-23 21:52:57.000000000 +0800 +++ data2/mysql-8.0.29/sql/log_event.h 2022-05-23 19:19:58.309416421 +0800 @@ -738,7 +738,7 @@ class Log_event { +---------+---------+---------+------------+-----------+-------+ |timestamp|type code|server_id|event_length|end_log_pos|flags | - |4 bytes |1 byte |4 bytes |4 bytes |4 bytes |2 bytes| + |4 bytes |1 byte |4 bytes |4 bytes |8 bytes |2 bytes| +---------+---------+---------+------------+-----------+-------+ @param buf Memory buffer to write to. This must be at least diff -uprN data1/mysql-8.0.29/sql/rpl_binlog_sender.cc data2/mysql-8.0.29/sql/rpl_binlog_sender.cc --- data1/mysql-8.0.29/sql/rpl_binlog_sender.cc 2022-03-23 21:52:57.000000000 +0800 +++ data2/mysql-8.0.29/sql/rpl_binlog_sender.cc 2022-05-23 19:20:16.952252936 +0800 @@ -1028,7 +1028,7 @@ int Binlog_sender::fake_rotate_event(con header[EVENT_TYPE_OFFSET] = binary_log::ROTATE_EVENT; int4store(header + SERVER_ID_OFFSET, server_id); int4store(header + EVENT_LEN_OFFSET, static_cast(event_len)); - int4store(header + LOG_POS_OFFSET, 0); + int8store(header + LOG_POS_OFFSET, 0); int2store(header + FLAGS_OFFSET, LOG_EVENT_ARTIFICIAL_F); int8store(rotate_header, log_pos); @@ -1143,7 +1143,7 @@ int Binlog_sender::send_format_descripti "log_pos=0", so the slave should not increment master's binlog position (rli->group_master_log_pos) */ - int4store(event_ptr + LOG_POS_OFFSET, 0); + int8store(event_ptr + LOG_POS_OFFSET, 0); /* Set the 'created' field to 0 to avoid destroying temp tables on slave. @@ -1258,8 +1258,8 @@ int Binlog_sender::send_heartbeat_event_ int4store(header, 0); header[EVENT_TYPE_OFFSET] = binary_log::HEARTBEAT_LOG_EVENT; int4store(header + SERVER_ID_OFFSET, server_id); - int4store(header + EVENT_LEN_OFFSET, event_len); - int4store(header + LOG_POS_OFFSET, static_cast(log_pos)); + int8store(header + EVENT_LEN_OFFSET, event_len); + int8store(header + LOG_POS_OFFSET, static_cast(log_pos)); int2store(header + FLAGS_OFFSET, 0); memcpy(header + LOG_EVENT_HEADER_LEN, p, ident_len); if (event_checksum_on()) calc_event_checksum(header, event_len); @@ -1298,8 +1298,8 @@ int Binlog_sender::send_heartbeat_event_ int4store(header, 0); header[EVENT_TYPE_OFFSET] = binary_log::HEARTBEAT_LOG_EVENT_V2; int4store(header + SERVER_ID_OFFSET, server_id); - int4store(header + EVENT_LEN_OFFSET, event_len); - int4store(header + LOG_POS_OFFSET, static_cast(log_pos)); + int8store(header + EVENT_LEN_OFFSET, event_len); + int8store(header + LOG_POS_OFFSET, static_cast(log_pos)); int2store(header + FLAGS_OFFSET, 0); // set the effective length diff -uprN data1/mysql-8.0.29/sql/rpl_mi.cc data2/mysql-8.0.29/sql/rpl_mi.cc --- data1/mysql-8.0.29/sql/rpl_mi.cc 2022-03-23 21:52:57.000000000 +0800 +++ data2/mysql-8.0.29/sql/rpl_mi.cc 2022-05-23 19:20:52.573940556 +0800 @@ -365,7 +365,7 @@ void Master_info::end_info() { int Master_info::flush_info(bool force) { DBUG_TRACE; - DBUG_PRINT("enter", ("master_pos: %lu", (ulong)master_log_pos)); + DBUG_PRINT("enter", ("master_pos: %llu", (ulonglong)master_log_pos)); bool skip_flushing = !inited; /* @@ -500,7 +500,7 @@ bool Master_info::read_info(Rpl_info_han } else lines = 7; - if (!!from->get_info(&temp_master_log_pos, (ulong)BIN_LOG_HEADER_SIZE) || + if (!!from->get_info(&temp_master_log_pos, (ulonglong)BIN_LOG_HEADER_SIZE) || !!from->get_info(host, sizeof(host), (char *)nullptr) || !!from->get_info(user, sizeof(user), (char *)nullptr) || !!from->get_info(password, sizeof(password), (char *)nullptr) || diff -uprN data1/mysql-8.0.29/sql/rpl_replica.cc data2/mysql-8.0.29/sql/rpl_replica.cc --- data1/mysql-8.0.29/sql/rpl_replica.cc 2022-03-23 21:52:57.000000000 +0800 +++ data2/mysql-8.0.29/sql/rpl_replica.cc 2022-05-23 19:21:13.950753095 +0800 @@ -465,13 +465,13 @@ int init_replica() { default_mi = channel_map.get_default_channel_mi(); if (default_mi && default_mi->rli) { DBUG_PRINT("info", - ("init group master %s %lu group relay %s %lu event %s %lu\n", + ("init group master %s %llu group relay %s %llu event %s %llu\n", default_mi->rli->get_group_master_log_name(), - (ulong)default_mi->rli->get_group_master_log_pos(), + (ulonglong)default_mi->rli->get_group_master_log_pos(), default_mi->rli->get_group_relay_log_name(), - (ulong)default_mi->rli->get_group_relay_log_pos(), + (ulonglong)default_mi->rli->get_group_relay_log_pos(), default_mi->rli->get_event_relay_log_name(), - (ulong)default_mi->rli->get_event_relay_log_pos())); + (ulonglong)default_mi->rli->get_event_relay_log_pos())); } } #endif @@ -4554,10 +4554,10 @@ apply_event_and_update_pos(Log_event **p if (!rli->belongs_to_client()) { char buf[22]; DBUG_PRINT("info", - ("group %s %s", llstr(rli->get_group_relay_log_pos(), buf), + ("group %s %s", ullstr(rli->get_group_relay_log_pos(), buf), rli->get_group_relay_log_name())); DBUG_PRINT("info", - ("event %s %s", llstr(rli->get_event_relay_log_pos(), buf), + ("event %s %s", ullstr(rli->get_event_relay_log_pos(), buf), rli->get_event_relay_log_name())); } #endif @@ -4630,7 +4630,7 @@ apply_event_and_update_pos(Log_event **p " be in an inconsistent state." " Stopped in %s position %s", rli->get_group_relay_log_name(), - llstr(rli->get_group_relay_log_pos(), buf)); + ullstr(rli->get_group_relay_log_pos(), buf)); return SLAVE_APPLY_EVENT_AND_UPDATE_POS_UPDATE_POS_ERROR; } } @@ -5258,7 +5258,7 @@ extern "C" void *handle_slave_io(void *a connect_init: DBUG_PRINT("master_info", ("log_file_name: '%s' position: %s", mi->get_master_log_name(), - llstr(mi->get_master_log_pos(), llbuff))); + ullstr(mi->get_master_log_pos(), llbuff))); /* This must be called before run any binlog_relay_io hooks */ RPL_MASTER_INFO = mi; @@ -5283,7 +5283,7 @@ extern "C" void *handle_slave_io(void *a LogErr(SYSTEM_LEVEL, ER_RPL_SLAVE_CONNECTED_TO_MASTER_REPLICATION_STARTED, mi->get_for_channel_str(), mi->get_user(), mi->host, mi->port, mi->get_io_rpl_log_name(), - llstr(mi->get_master_log_pos(), llbuff)); + ullstr(mi->get_master_log_pos(), llbuff)); } else { LogErr(INFORMATION_LEVEL, ER_RPL_SLAVE_IO_THREAD_KILLED, mi->get_for_channel_str()); @@ -5638,7 +5638,7 @@ extern "C" void *handle_slave_io(void *a // print the current replication position LogErr(INFORMATION_LEVEL, ER_RPL_SLAVE_IO_THREAD_EXITING, mi->get_for_channel_str(), mi->get_io_rpl_log_name(), - llstr(mi->get_master_log_pos(), llbuff)); + ullstr(mi->get_master_log_pos(), llbuff)); /* At this point the I/O thread will not try to reconnect anymore. */ mi->atomic_is_stopping = true; (void)RUN_HOOK(binlog_relay_io, thread_stop, (thd, mi)); @@ -6977,7 +6977,7 @@ extern "C" void *handle_slave_sql(void * DBUG_PRINT("master_info", ("log_file_name: %s position: %s", rli->get_group_master_log_name(), - llstr(rli->get_group_master_log_pos(), llbuff))); + ullstr(rli->get_group_master_log_pos(), llbuff))); if (check_temp_dir(rli->slave_patternload_file, rli->get_channel())) { rli->report(ERROR_LEVEL, thd->get_stmt_da()->mysql_errno(), @@ -7006,16 +7006,16 @@ extern "C" void *handle_slave_sql(void * if (rli->is_privilege_checks_user_null()) LogErr(INFORMATION_LEVEL, ER_RPL_SLAVE_SQL_THREAD_STARTING, rli->get_for_channel_str(), rli->get_rpl_log_name(), - llstr(rli->get_group_master_log_pos_info(), llbuff), + ullstr(rli->get_group_master_log_pos_info(), llbuff), rli->get_group_relay_log_name(), - llstr(rli->get_group_relay_log_pos(), llbuff1)); + ullstr(rli->get_group_relay_log_pos(), llbuff1)); else LogErr(INFORMATION_LEVEL, ER_RPL_SLAVE_SQL_THREAD_STARTING_WITH_PRIVILEGE_CHECKS, rli->get_for_channel_str(), rli->get_rpl_log_name(), - llstr(rli->get_group_master_log_pos_info(), llbuff), + ullstr(rli->get_group_master_log_pos_info(), llbuff), rli->get_group_relay_log_name(), - llstr(rli->get_group_relay_log_pos(), llbuff1), + ullstr(rli->get_group_relay_log_pos(), llbuff1), rli->get_privilege_checks_username().c_str(), rli->get_privilege_checks_hostname().c_str(), opt_always_activate_granted_roles == 0 ? "DEFAULT" : "ALL"); @@ -7060,12 +7060,12 @@ extern "C" void *handle_slave_sql(void * THD_CHECK_SENTRY(thd); if (saved_skip && rli->slave_skip_counter == 0) { LogErr(INFORMATION_LEVEL, ER_RPL_SLAVE_SKIP_COUNTER_EXECUTED, - (ulong)saved_skip, saved_log_name, (ulong)saved_log_pos, + (ulong)saved_skip, saved_log_name, (ulonglong)saved_log_pos, saved_master_log_name, (ulong)saved_master_log_pos, rli->get_group_relay_log_name(), - (ulong)rli->get_group_relay_log_pos(), + (ulonglong)rli->get_group_relay_log_pos(), rli->get_group_master_log_name_info(), - (ulong)rli->get_group_master_log_pos_info()); + (ulonglong)rli->get_group_master_log_pos_info()); saved_skip = 0; } @@ -7123,11 +7123,11 @@ extern "C" void *handle_slave_sql(void * /* Thread stopped. Print the current replication position to the log */ if (slave_errno) LogErr(ERROR_LEVEL, slave_errno, rli->get_rpl_log_name(), - llstr(rli->get_group_master_log_pos_info(), llbuff)); + ullstr(rli->get_group_master_log_pos_info(), llbuff)); else LogErr(INFORMATION_LEVEL, ER_RPL_SLAVE_SQL_THREAD_EXITING, rli->get_for_channel_str(), rli->get_rpl_log_name(), - llstr(rli->get_group_master_log_pos_info(), llbuff)); + ullstr(rli->get_group_master_log_pos_info(), llbuff)); delete rli->current_mts_submode; rli->current_mts_submode = nullptr; @@ -7282,7 +7282,7 @@ static int process_io_rotate(Master_info rev->ident_len + 1); mi->set_master_log_pos(rev->pos); DBUG_PRINT("info", - ("new (master_log_name, master_log_pos): ('%s', %lu)", + ("new (master_log_name, master_log_pos): ('%s', %llu)", mi->get_master_log_name(), (ulong)mi->get_master_log_pos())); mysql_mutex_unlock(&mi->data_lock); @@ -7298,7 +7298,7 @@ int heartbeat_queue_event(bool is_valid, sprintf(errbuf, "inconsistent heartbeat event content; the event's data: " "log_file_name %-.512s log_pos %s", - binlog_name.c_str(), llstr(position, llbuf)); + binlog_name.c_str(), ullstr(position, llbuf)); mi->report(ERROR_LEVEL, ER_SLAVE_HEARTBEAT_FAILURE, ER_THD(current_thd, ER_SLAVE_HEARTBEAT_FAILURE), errbuf); return 1; @@ -7711,7 +7711,7 @@ QUEUE_EVENT_RESULT queue_event(Master_in it), i.e. has end_log_pos=0, we do not increment mi->get_master_log_pos() */ - inc_pos = uint4korr(buf + LOG_POS_OFFSET) ? event_len : 0; + inc_pos = uint8korr(buf + LOG_POS_OFFSET) ? event_len : 0; DBUG_PRINT("info", ("binlog format is now %d", mi->get_mi_description_event()->binlog_version)); @@ -7959,7 +7959,7 @@ QUEUE_EVENT_RESULT queue_event(Master_in } DBUG_PRINT( "info", - ("master_log_pos: %lu, event originating from %u server, ignored", + ("master_log_pos: %llu, event originating from %u server, ignored", (ulong)mi->get_master_log_pos(), uint4korr(buf + SERVER_ID_OFFSET))); } else { bool is_error = false; @@ -7973,7 +7973,7 @@ QUEUE_EVENT_RESULT queue_event(Master_in lock_count = 2; mi->set_master_log_pos(mi->get_master_log_pos() + inc_pos); DBUG_PRINT("info", - ("master_log_pos: %lu", (ulong)mi->get_master_log_pos())); + ("master_log_pos: %llu", (ulonglong)mi->get_master_log_pos())); /* If we are starting an anonymous transaction, we will discard @@ -8337,7 +8337,7 @@ int connect_to_master(THD *thd, MYSQL *m LogErr( SYSTEM_LEVEL, ER_RPL_SLAVE_CONNECTED_TO_MASTER_REPLICATION_RESUMED, mi->get_for_channel_str(), mi->get_user(), tmp_host, tmp_port, - mi->get_io_rpl_log_name(), llstr(mi->get_master_log_pos(), llbuff)); + mi->get_io_rpl_log_name(), ullstr(mi->get_master_log_pos(), llbuff)); } else { query_logger.general_log_print(thd, COM_CONNECT_OUT, "%s@%s:%d", mi->get_user(), tmp_host, tmp_port); @@ -9469,7 +9469,7 @@ static int change_receive_options(THD *t ER_WARN_ONLY_MASTER_LOG_FILE_NO_POS, ER_THD(thd, ER_WARN_ONLY_MASTER_LOG_FILE_NO_POS)); - DBUG_PRINT("info", ("master_log_pos: %lu", (ulong)mi->get_master_log_pos())); + DBUG_PRINT("info", ("master_log_pos: %llu", (ulonglong)mi->get_master_log_pos())); if (lex_mi->user || lex_mi->password) { if (!thd->get_ssl()) { @@ -10589,8 +10589,8 @@ int change_master(THD *thd, Master_info if (have_receive_option) LogErr(SYSTEM_LEVEL, ER_SLAVE_CHANGE_MASTER_TO_EXECUTED, mi->get_for_channel_str(true), saved_host, saved_port, - saved_log_name, (ulong)saved_log_pos, saved_bind_addr, mi->host, - mi->port, mi->get_master_log_name(), (ulong)mi->get_master_log_pos(), + saved_log_name, (ulonglong)saved_log_pos, saved_bind_addr, mi->host, + mi->port, mi->get_master_log_name(), (ulonglong)mi->get_master_log_pos(), mi->bind_addr); /* If the receiver is stopped, flush master_info to disk. */ diff -uprN data1/mysql-8.0.29/sql/rpl_rli.cc data2/mysql-8.0.29/sql/rpl_rli.cc --- data1/mysql-8.0.29/sql/rpl_rli.cc 2022-03-23 21:52:57.000000000 +0800 +++ data2/mysql-8.0.29/sql/rpl_rli.cc 2022-05-23 19:21:26.412643813 +0800 @@ -585,7 +585,7 @@ void Relay_log_info::fill_coord_err_buf( before reaching the desired log/position */ -int Relay_log_info::wait_for_pos(THD *thd, String *log_name, longlong log_pos, +int Relay_log_info::wait_for_pos(THD *thd, String *log_name, ulonglong log_pos, double timeout) { int event_count = 0; ulong init_abort_pos_wait; @@ -596,8 +596,8 @@ int Relay_log_info::wait_for_pos(THD *th if (!inited) return -2; - DBUG_PRINT("enter", ("log_name: '%s' log_pos: %lu timeout: %lu", - log_name->c_ptr_safe(), (ulong)log_pos, (ulong)timeout)); + DBUG_PRINT("enter", ("log_name: '%s' log_pos: %llu timeout: %lu", + log_name->c_ptr_safe(), (ulonglong)log_pos, (ulong)timeout)); DEBUG_SYNC(thd, "begin_source_pos_wait"); @@ -640,7 +640,7 @@ int Relay_log_info::wait_for_pos(THD *th goto err; } // Convert 0-3 to 4 - log_pos = max(log_pos, static_cast(BIN_LOG_HEADER_SIZE)); + log_pos = max(log_pos, static_cast(BIN_LOG_HEADER_SIZE)); /* p points to '.' */ log_name_extension = strtoul(++p, &p_end, 10); /* @@ -661,8 +661,8 @@ int Relay_log_info::wait_for_pos(THD *th DBUG_PRINT("info", ("init_abort_pos_wait: %ld abort_pos_wait: %ld", init_abort_pos_wait, abort_pos_wait)); - DBUG_PRINT("info", ("group_master_log_name: '%s' pos: %lu", - group_master_log_name, (ulong)group_master_log_pos)); + DBUG_PRINT("info", ("group_master_log_name: '%s' pos: %llu", + group_master_log_name, (ulonglong)group_master_log_pos)); /* group_master_log_name can be "", if we are just after a fresh @@ -960,8 +960,8 @@ int Relay_log_info::inc_group_relay_log_ the relay log is not "val". With the end_log_pos solution, we avoid computations involving lengthes. */ - DBUG_PRINT("info", ("log_pos: %lu group_master_log_pos: %lu", (long)log_pos, - (long)group_master_log_pos)); + DBUG_PRINT("info", ("log_pos: %llu group_master_log_pos: %llu", (ulonglong)log_pos, + (ulonglong)group_master_log_pos)); if (log_pos > 0) // 3.23 binlogs don't have log_posx group_master_log_pos = log_pos; @@ -2049,8 +2049,8 @@ void Relay_log_info::start_sql_delay(tim bool Relay_log_info::read_info(Rpl_info_handler *from) { int lines = 0; char *first_non_digit = nullptr; - ulong temp_group_relay_log_pos = 0; - ulong temp_group_master_log_pos = 0; + ulonglong temp_group_relay_log_pos = 0; + ulonglong temp_group_master_log_pos = 0; int temp_sql_delay = 0; int temp_internal_id = internal_id; int temp_require_row_format = 0; @@ -2118,7 +2118,7 @@ bool Relay_log_info::read_info(Rpl_info_ DBUG_PRINT("info", ("relay_log_info file is in old format.")); status = - from->get_info(&temp_group_relay_log_pos, (ulong)BIN_LOG_HEADER_SIZE); + from->get_info(&temp_group_relay_log_pos, (ulonglong)BIN_LOG_HEADER_SIZE); if (status == Rpl_info_handler::enum_field_get_status::FAILURE) return true; status = @@ -2301,9 +2301,9 @@ bool Relay_log_info::write_info(Rpl_info if (to->prepare_info_for_write() || to->set_info((int)MAXIMUM_LINES_IN_RELAY_LOG_INFO_FILE) || to->set_info(group_relay_log_name) || - to->set_info((ulong)group_relay_log_pos) || + to->set_info((ulonglong)group_relay_log_pos) || to->set_info(group_master_log_name) || - to->set_info((ulong)group_master_log_pos) || + to->set_info((ulonglong)group_master_log_pos) || to->set_info((int)sql_delay) || to->set_info(recovery_parallel_workers) || to->set_info((int)internal_id) || to->set_info(channel)) return true; diff -uprN data1/mysql-8.0.29/sql/rpl_rli.h data2/mysql-8.0.29/sql/rpl_rli.h --- data1/mysql-8.0.29/sql/rpl_rli.h 2022-03-23 21:52:57.000000000 +0800 +++ data2/mysql-8.0.29/sql/rpl_rli.h 2022-05-23 19:21:24.569659975 +0800 @@ -994,7 +994,7 @@ class Relay_log_info : public Rpl_info { int inc_group_relay_log_pos(ulonglong log_pos, bool need_data_lock, bool force = false); - int wait_for_pos(THD *thd, String *log_name, longlong log_pos, + int wait_for_pos(THD *thd, String *log_name, ulonglong log_pos, double timeout); /** Wait for a GTID set to be executed. diff -uprN data1/mysql-8.0.29/sql/rpl_rli_pdb.cc data2/mysql-8.0.29/sql/rpl_rli_pdb.cc --- data1/mysql-8.0.29/sql/rpl_rli_pdb.cc 2022-03-23 21:52:57.000000000 +0800 +++ data2/mysql-8.0.29/sql/rpl_rli_pdb.cc 2022-05-23 19:21:36.201557971 +0800 @@ -501,10 +501,10 @@ int Slave_worker::flush_info(const bool bool Slave_worker::read_info(Rpl_info_handler *from) { DBUG_TRACE; - ulong temp_group_relay_log_pos = 0; - ulong temp_group_master_log_pos = 0; - ulong temp_checkpoint_relay_log_pos = 0; - ulong temp_checkpoint_master_log_pos = 0; + ulonglong temp_group_relay_log_pos = 0; + ulonglong temp_group_master_log_pos = 0; + ulonglong temp_checkpoint_relay_log_pos = 0; + ulonglong temp_checkpoint_master_log_pos = 0; ulong temp_checkpoint_seqno = 0; ulong nbytes = 0; uchar *buffer = (uchar *)group_executed.bitmap; @@ -1728,7 +1728,7 @@ int Slave_worker::slave_worker_exec_even } set_future_event_relay_log_pos(ev->future_event_relay_log_pos); - set_master_log_pos(static_cast(ev->common_header->log_pos)); + set_master_log_pos(static_cast(ev->common_header->log_pos)); set_gaq_index(ev->mts_group_idx); ret = ev->do_apply_event_worker(this); return ret; diff -uprN data1/mysql-8.0.29/sql/rpl_rli_pdb.h data2/mysql-8.0.29/sql/rpl_rli_pdb.h --- data1/mysql-8.0.29/sql/rpl_rli_pdb.h 2022-03-23 21:52:57.000000000 +0800 +++ data2/mysql-8.0.29/sql/rpl_rli_pdb.h 2022-05-23 19:21:36.173558216 +0800 @@ -633,7 +633,7 @@ class Slave_worker : public Relay_log_in void slave_worker_ends_group(Log_event *, int); const char *get_master_log_name(); ulonglong get_master_log_pos() { return master_log_pos; } - ulonglong set_master_log_pos(ulong val) { return master_log_pos = val; } + ulonglong set_master_log_pos(ulonglong val) { return master_log_pos = val; } bool commit_positions(Log_event *evt, Slave_job_group *ptr_g, bool force); /** The method is a wrapper to provide uniform interface with STS and is