PS-10241 feature: Add support for processing GTID_TAGGED_LOG events #75
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
https://perconadev.atlassian.net/browse/PS-10241
Added new template specializations for 'generic_post_header_impl' and 'generic_body_impl' for 'code_type::gtid_tagged_log' ('GTID_TAGGED_LOG' event).
Because MySQL 'GTID_TAGGED_LOG' event in contrast to any other event used in 8.4 server uses 'mysql::serialization' library with its own headers and structure
(https://github.com/mysql/mysql-server/blob/mysql-8.4.6/libs/mysql/serialization/readme.md) 'generic_body_impl<code_type::gtid_tagged_log>' constructor uses a bit different approach to unserialize data from the provided data portion.
Reworked 'util::extract_fixed_int_from_byte_span()` series of functions - they now have corresponding specializations for signed and unsigned types. Currently signed specializations do not support partial byte extractions when sizeof(T) != bytes_to_extract.
Added 'util::extract_varlen_int_from_byte_span_checked()' series of functions for extracting variable length integers (both signed and unsigned) based on the format used in 'mysql::serialization::detail'.
Fixed byte array used to represent 'server_version' field in 'generic_post_header_impl<code_type::format_description>' extracted into a generic typedef 'util::bounded_string_storage' with convenience functions. The same class is now used to represent 'tag' field in 'generic_body_impl<code_type::gtid_tagged_log>'.