Done here: https://github.com/MariaDB/server/commit/4835ca3d5800ce981e3454fd9ce1c9b1706891fa
On Thu, 10 Aug 2023 at 19:08, Nikita Malyavin <nikitamalya...@gmail.com> wrote: > Oh! I like this one more, too. Alright! > > On Thu, 10 Aug 2023 at 18:53, Sergei Golubchik <s...@mariadb.org> wrote: > >> Hi, Nikita, >> >> On Aug 09, Nikita Malyavin wrote: >> > > > diff --git a/sql/log_event.cc b/sql/log_event.cc >> > > > index 10180a95d99..0c4c284a40f 100644 >> > > > --- a/sql/log_event.cc >> > > > +++ b/sql/log_event.cc >> > > > @@ -761,16 +761,21 @@ Log_event::Log_event(const uchar *buf, >> > > > >> > > > int Log_event::read_log_event(IO_CACHE* file, String* packet, >> > > > const Format_description_log_event >> *fdle, >> > > > - enum enum_binlog_checksum_alg >> checksum_alg_arg) >> > > > + enum enum_binlog_checksum_alg >> checksum_alg_arg, >> > > > + size_t max_allowed_packet) >> > > > { >> > > > ulong data_len; >> > > > char buf[LOG_EVENT_MINIMAL_HEADER_LEN]; >> > > > uchar ev_offset= packet->length(); >> > > > #if !defined(MYSQL_CLIENT) >> > > > - THD *thd=current_thd; >> > > > - ulong max_allowed_packet= thd ? thd->slave_thread ? >> slave_max_allowed_packet >> > > > - : >> thd->variables.max_allowed_packet >> > > > - : ~(uint)0; >> > > > + if (max_allowed_packet == 0) >> > > >> > > may be better pass THD as an argument? >> > > or even correct value of max_allowed_packet. As >> > > >> > > ulong max_allowed_packet(THD *thd) >> > > { return thd ? ... : ~(uint)0; } >> > >> > I thought about it, but let me avoid it this time. There are ~15 calls >> of >> > both read_log_event functions, and it's hard to say what's called from >> > where. >> > I'd better leave this insane knot as it is now. >> > >> > Also as a bonus mysql_bin_log will not depend on an external >> > max_allowed_packet, which is fixed as 1GiB. >> >> still, I don't like a run-time condition for what should be a >> compile-time thing. Another way of solving it is >> >> static int read_log_event(IO_CACHE* file, String* packet, >> const Format_description_log_event *fdle, >> enum enum_binlog_checksum_alg >> checksum_alg_arg) >> { >> size_t max_packet= thd ? ... : ~0U; >> return read_log_event(file, packet, fdle, checksum_alg_arg, >> max_packet); >> } >> >> static int read_log_event(IO_CACHE* file, String* packet, >> const Format_description_log_event *fdle, >> enum enum_binlog_checksum_alg >> checksum_alg_arg, >> size_t max_allowed_packet); >> >> > > on the second thought, do you need to ignore max_allowed_packet >> > > here for online ALTER? Is there no event size limit when the >> > > event is written into binlog? >> > > >> > > > + { >> > > > + THD *thd=current_thd; >> > > > + max_allowed_packet= thd ? thd->slave_thread >> > > > + ? slave_max_allowed_packet >> > > > + : thd->variables.max_allowed_packet >> > > > + : ~(uint)0; >> > > > + } >> > > > #endif >> > > > DBUG_ENTER("Log_event::read_log_event(IO_CACHE*,String*...)"); >> > > >> Regards, >> Sergei >> VP of MariaDB Server Engineering >> and secur...@mariadb.org >> > > > -- > Yours truly, > Nikita Malyavin > -- Yours truly, Nikita Malyavin
_______________________________________________ developers mailing list -- developers@lists.mariadb.org To unsubscribe send an email to developers-le...@lists.mariadb.org