1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Binlog-in-engine: Handle mixing transactional and non-transactional tables

When updating non-transactional tables inside a multi-statement transaction,
and binlog_direct_non_transactional_updates=1, then the non-transactional
updates are binlogged directly through the statement cache while the
transaction cache is still being added to in the main transaction.

Thus, move the engine_binlog_info out from binlog_cache_mngr and into the
individual stmt/trx binlog_cache_data, so that we can have separate
engine_binlog_info active for the statement and the transaction cache.

Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
This commit is contained in:
Kristian Nielsen
2025-07-23 00:19:30 +02:00
parent 7a67f72979
commit 585785c7bc
9 changed files with 612 additions and 71 deletions

View File

@@ -1599,9 +1599,9 @@ struct handlerton
binlog_oob_data(). Can also change the pointer to point to different data
(or set it to NULL).
*/
void (*binlog_oob_reset)(THD *thd, void **engine_data);
void (*binlog_oob_reset)(void **engine_data);
/* Call to allow engine to release the engine_data from binlog_oob_data(). */
void (*binlog_oob_free)(THD *thd, void *engine_data);
void (*binlog_oob_free)(void *engine_data);
/*
Obtain an object to allow reading from the binlog.
The boolean argument wait_durable is set to true to require that