PS-10241 feature: Add support for processing GTID_TAGGED_LOG events#75
Merged
percona-ysorokin merged 1 commit intomainfrom Nov 19, 2025
Merged
PS-10241 feature: Add support for processing GTID_TAGGED_LOG events#75percona-ysorokin merged 1 commit intomainfrom
percona-ysorokin merged 1 commit intomainfrom
Conversation
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>'.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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>'.