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

MDEV-34705: out-of band binlogging, fix trx_cache handling for out-of-band

Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
This commit is contained in:
Kristian Nielsen
2024-11-20 16:16:16 +01:00
parent c80d87f8c5
commit 07232f1e45
5 changed files with 168 additions and 83 deletions

View File

@@ -63,6 +63,7 @@ class handler_binlog_reader;
struct rpl_gtid;
struct slave_connection_state;
struct rpl_binlog_state_base;
struct handler_binlog_event_group_info;
// the following is for checking tables
@@ -1535,7 +1536,8 @@ struct handlerton
/* Optional implementation of binlog in the engine. */
bool (*binlog_init)(size_t binlog_size);
/* Binlog an event group that doesn't go through commit_ordered. */
bool (*binlog_write_direct)(IO_CACHE *cache, size_t main_size,
bool (*binlog_write_direct)(IO_CACHE *cache,
handler_binlog_event_group_info *binlog_info,
const rpl_gtid *gtid);
/*
Binlog parts of large transactions out-of-band, in different chunks in the
@@ -5825,6 +5827,20 @@ int get_select_field_pos(Alter_info *alter_info, int select_field_count,
const char* dbug_print_row(TABLE *table, const uchar *rec, bool print_names= true);
#endif /* DBUG_OFF */
/* Struct with info about an event group to be binlogged by a storage engine. */
struct handler_binlog_event_group_info {
/* Opaque pointer for the engine's use. */
void *engine_ptr;
/* End of data that has already been binlogged out-of-band. */
my_off_t out_of_band_offset;
/*
Offset of the GTID event, which comes first in the event group, but is put
at the end of the IO_CACHE containing the data to be binlogged.
*/
my_off_t gtid_offset;
};
/*
Class for reading a binlog implemented in an engine.
*/