24#ifndef BINLOG_READER_INCLUDED
25#define BINLOG_READER_INCLUDED
43 const unsigned char *event_data,
unsigned int event_data_len,
61 unsigned int max_event_size);
81 template <
class ALLOCATOR>
83 ALLOCATOR *allocator,
bool verify_checksum,
89 if (event_data ==
nullptr)
93 allocator->deallocate(event_data);
129 template <Binlog_read_error::Error_type ERROR_TYPE>
132 if (
length == 0)
return false;
135 if (ret ==
length)
return false;
177template <
class EVENT_DATA_ISTREAM>
181 EVENT_DATA_ISTREAM *istream)
198 template <
class ALLOCATOR>
200 bool verify_checksum, ALLOCATOR *allocator) {
202 unsigned char *data =
nullptr;
211 verify_checksum, &
event))) {
212 allocator->deallocate(data);
217 ALLOCATOR::DELEGATE_MEMORY_TO_EVENT_OBJECT);
289template <
class IFILE,
class EVENT_DATA_ISTREAM,
290 template <
class>
class EVENT_OBJECT_ISTREAM,
class ALLOCATOR>
297 unsigned int max_event_size = UINT_MAX)
438 if (ev ==
nullptr)
break;
#define LOG_EVENT_MINIMAL_HEADER_LEN
Fixed header length, where 4.x and 5.0 agree.
Definition: binlog_event.h:435
Basic_binlog_file_reader< Binlog_ifile, Binlog_event_data_istream, Binlog_event_object_istream, Default_binlog_event_allocator > Binlog_file_reader
Definition: binlog_reader.h:463
Binlog_read_error::Error_type binlog_event_deserialize(const unsigned char *event_data, unsigned int event_data_len, const Format_description_event *fde, bool verify_checksum, Log_event **event)
Deserialize a binlog event from event_data.
Definition: binlog_reader.cc:118
Basic_binlog_file_reader< Relaylog_ifile, Binlog_event_data_istream, Binlog_event_object_istream, Default_binlog_event_allocator > Relaylog_file_reader
Definition: binlog_reader.h:467
It owns an allocator, a byte stream, an event_data stream and an event object stream.
Definition: binlog_reader.h:291
Event_data_istream m_data_istream
Definition: binlog_reader.h:404
const Format_description_event & format_description_event() const override
Return a pointer the currently used Format_description_log_event.
Definition: binlog_reader.h:395
Event_data_istream * event_data_istream()
Definition: binlog_reader.h:388
EVENT_DATA_ISTREAM Event_data_istream
Definition: binlog_reader.h:293
Format_description_log_event * read_fdle(my_off_t offset)
Read the Format_description_log_events before 'offset'.
Definition: binlog_reader.h:418
Format_description_event m_fde
Definition: binlog_reader.h:408
bool open(const char *file_name, my_off_t offset=0, Format_description_log_event **fdle=nullptr)
Open a binlog file and set read position to offset.
Definition: binlog_reader.h:324
~Basic_binlog_file_reader() override
Definition: binlog_reader.h:310
const char * get_error_str() const override
Return the error message of the error happened in the stream pipeline.
Definition: binlog_reader.h:385
bool m_verify_checksum
Definition: binlog_reader.h:409
Binlog_read_error::Error_type get_error_type() const override
Return the error happened in the stream pipeline.
Definition: binlog_reader.h:379
ALLOCATOR m_allocator
Definition: binlog_reader.h:406
Event_object_istream * event_object_istream()
Definition: binlog_reader.h:389
bool is_open() const
Definition: binlog_reader.h:350
bool has_fatal_error() const override
Return true if there was a previous error.
Definition: binlog_reader.h:375
Basic_binlog_file_reader & operator=(const Basic_binlog_file_reader &&)=delete
my_off_t event_start_pos()
Definition: binlog_reader.h:398
Binlog_read_error m_error
Definition: binlog_reader.h:401
Basic_binlog_file_reader & operator=(const Basic_binlog_file_reader &)=delete
EVENT_OBJECT_ISTREAM< Event_data_istream > Event_object_istream
Definition: binlog_reader.h:294
Event_object_istream m_object_istream
Definition: binlog_reader.h:405
ALLOCATOR * allocator()
Definition: binlog_reader.h:390
void close()
Close the binlog file.
Definition: binlog_reader.h:345
IFILE m_ifile
Definition: binlog_reader.h:403
bool read_event_data(unsigned char **data, unsigned int *length)
Wrapper of EVENT_DATA_ISTREAM::read_event_data.
Definition: binlog_reader.h:357
my_off_t m_event_start_pos
Definition: binlog_reader.h:410
Basic_binlog_file_reader(bool verify_checksum, unsigned int max_event_size=UINT_MAX)
Definition: binlog_reader.h:296
my_off_t position() const override
Return the current position in bytes, relative to the beginning of the file.
Definition: binlog_reader.h:351
Basic_binlog_file_reader(const Basic_binlog_file_reader &&)=delete
IFILE * ifile()
Definition: binlog_reader.h:387
Basic_binlog_file_reader(const Basic_binlog_file_reader &)=delete
Log_event * read_event_object() override
wrapper of EVENT_OBJECT_ISTREAM::read_event_object.
Definition: binlog_reader.h:366
bool seek(my_off_t pos)
Definition: binlog_reader.h:352
void set_format_description_event(const Format_description_event &fde)
Definition: binlog_reader.h:392
The abstract class for basic byte input streams which provides read operations.
Definition: basic_istream.h:33
virtual ssize_t read(unsigned char *buffer, size_t length)=0
Read some bytes from the input stream.
Binlog_event_data_istream fetches byte data from Basic_istream and divides them into event_data chunk...
Definition: binlog_reader.h:58
unsigned int m_max_event_size
Definition: binlog_reader.h:155
Basic_istream * m_istream
Definition: binlog_reader.h:154
bool read_fixed_length(unsigned char *data, unsigned int length)
Read fixed length of data from Basic_istream.
Definition: binlog_reader.h:130
Binlog_read_error * m_error
It is convenient for caller to share a Binlog_read_error object between streams.
Definition: binlog_reader.h:151
unsigned int m_event_length
Definition: binlog_reader.h:156
Binlog_event_data_istream & operator=(const Binlog_event_data_istream &)=delete
bool fill_event_data(unsigned char *event_data, bool verify_checksum, enum_binlog_checksum_alg checksum_alg)
Fill the event data into the given buffer and verify checksum if 'verify_checksum' is true.
Definition: binlog_reader.cc:73
bool check_event_header()
Check if it is a valid event header.
Definition: binlog_reader.cc:101
virtual bool read_event_header()
Read the event header from the Basic_istream.
Definition: binlog_reader.cc:68
virtual ~Binlog_event_data_istream()=default
Binlog_event_data_istream()=delete
Binlog_event_data_istream(const Binlog_event_data_istream &)=delete
unsigned char m_header[LOG_EVENT_MINIMAL_HEADER_LEN]
Definition: binlog_reader.h:102
bool read_event_data(unsigned char **data, unsigned int *length, ALLOCATOR *allocator, bool verify_checksum, enum_binlog_checksum_alg checksum_alg)
Read an event data from the stream and verify its checksum if verify_checksum is true.
Definition: binlog_reader.h:82
It reads event_data from an event_data stream and deserialize them to event object.
Definition: binlog_reader.h:178
Binlog_read_error * m_error
It is convenient for caller to share a Binlog_read_error object between streams.
Definition: binlog_reader.h:227
EVENT_DATA_ISTREAM * m_data_istream
Definition: binlog_reader.h:228
Binlog_event_object_istream(const Binlog_event_object_istream &)=delete
Binlog_event_object_istream & operator=(const Binlog_event_object_istream &)=delete
Binlog_event_object_istream()=delete
Binlog_event_object_istream(Binlog_read_error *error, EVENT_DATA_ISTREAM *istream)
Definition: binlog_reader.h:180
Log_event * read_event_object(const Format_description_event &fde, bool verify_checksum, ALLOCATOR *allocator)
Read an event object from the stream.
Definition: binlog_reader.h:199
Binlog input file.
Definition: binlog_istream.h:239
It defines the error types which could happen when reading binlog files or deserializing binlog event...
Definition: binlog_istream.h:37
Error_type get_type() const
Return the error encountered when reading events.
Definition: binlog_istream.h:86
Error_type
Possible errors which happens when reading an event.
Definition: binlog_istream.h:42
@ MEM_ALLOCATE
Definition: binlog_istream.h:56
@ SYSTEM_IO
Definition: binlog_istream.h:54
@ TRUNC_EVENT
Definition: binlog_istream.h:58
bool set_type(Error_type type)
Set m_error to error.
Definition: binlog_istream.h:104
const char * get_str() const
Return error message of the error type.
Definition: binlog_istream.cc:34
bool has_fatal_error() const
Definition: binlog_istream.h:81
Definition: binlog_reader.h:47
unsigned char * allocate(size_t)
Definition: binlog_reader.cc:28
void deallocate(unsigned char *ptr)
Definition: binlog_reader.cc:34
@ DELEGATE_MEMORY_TO_EVENT_OBJECT
Definition: binlog_reader.h:49
Interface class that all specializations of template <...> Basic_binlog_file_reader inherit from.
Definition: binlog_reader.h:233
IBasic_binlog_file_reader(IBasic_binlog_file_reader &)=delete
IBasic_binlog_file_reader & operator=(IBasic_binlog_file_reader &&)=delete
virtual ~IBasic_binlog_file_reader()=default
IBasic_binlog_file_reader & operator=(IBasic_binlog_file_reader &)=delete
virtual const char * get_error_str() const =0
Return a string representing the error.
virtual const Format_description_event & format_description_event() const =0
Return a pointer the currently used Format_description_log_event.
virtual my_off_t position() const =0
Return the current position in bytes, relative to the beginning of the file.
IBasic_binlog_file_reader(IBasic_binlog_file_reader &&)=delete
IBasic_binlog_file_reader()=default
virtual Binlog_read_error::Error_type get_error_type() const =0
Return the type of error.
virtual Log_event * read_event_object()=0
Read the next event from the stream.
virtual bool has_fatal_error() const =0
Return true if there was a previous error.
This is the abstract base class for binary log events.
Definition: log_event.h:541
virtual Log_event_type get_type_code() const
Definition: log_event.h:798
void register_temp_buf(char *buf, bool free_in_destructor=true)
Definition: log_event.h:865
Relaylog input file.
Definition: binlog_istream.h:251
const Log_event_footer * footer() const
Return a const pointer to the footer of the log event.
Definition: binlog_event.h:934
#define BINLOG_VERSION
binlog_version 3 is MySQL 4.x; 4 is MySQL 5.0.0.
Definition: binlog_event.h:95
Binary log event definitions.
#define DBUG_TRACE
Definition: my_dbug.h:146
ulonglong my_off_t
Definition: my_inttypes.h:72
long long int longlong
Definition: my_inttypes.h:55
static char * server_version
Definition: mysql.cc:109
enum_binlog_checksum_alg
Enumeration spcifying checksum algorithm used to encode a binary log event.
Definition: binlog_event.h:440
Log_event_type
Enumeration type for the different types of log events.
Definition: binlog_event.h:275
@ FORMAT_DESCRIPTION_EVENT
Definition: binlog_event.h:301
@ PREVIOUS_GTIDS_LOG_EVENT
Definition: binlog_event.h:343
@ ROTATE_EVENT
Definition: binlog_event.h:291
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:76
std::string file_name(Log_file_id file_id)
Provides name of the log file with the given file id, e.g.
Definition: log0pre_8_0_30.cc:94
required string type
Definition: replication_group_member_actions.proto:34
required string event
Definition: replication_group_member_actions.proto:32