MDEV-38623 ALTER TABLE ... ENGINE = MERGE is binlogged w/o ddl tag#4579
Open
MDEV-38623 ALTER TABLE ... ENGINE = MERGE is binlogged w/o ddl tag#4579
Conversation
The ALTER-ENGINE=MERGE was found out not to have the DDL flag in its `Gtid_log_even`t which is error-prone to the parallel slave. This violate a binlogging requirement that all DDL:s, including all types of ALTER must be binlogged with the flag. The reason of this exceptional behaviour was an unattended branch of ALTER execution that run `trans_commit_stmt()` that cleared already prepared DDL flag from `thd->transaction->stmt.m_unsafe_rollback_flags`. Later the query gets binlogged stripped from it. Fixed with applying elsewhere existing pattern (e.g MDEV-8075/228479a28ce7e) to remember-and-restore the original value of `m_unsafe_rollback_flags` upon the likes of `trans_commit_stmt()`. This time it's done with arranging a helper `StateGuard` class to carry out a RAII-like construct as a single-liner. An mtr test is straightforward and comfortably fits to an existing test file.
|
|
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.
The ALTER-ENGINE=MERGE was found out not to have the DDL flag in its
Gtid_log_eventwhich is error-prone to the parallel slave. This violates a binlogging requirement that all DDL:s, including all types of ALTER must be binlogged with the flag.The reason of this exceptional behaviour was an unattended branch of ALTER execution that runs
trans_commit_stmt()that cleared already prepared DDL flag fromthd->transaction->stmt.m_unsafe_rollback_flags. Later the query gets binlogged stripped from it.Fixed with applying elsewhere existing pattern (e.g MDEV-8075/228479a28ce7e) to remember-and-restore the original value of
m_unsafe_rollback_flagsupon the likes oftrans_commit_stmt(). This time it's done with arranging a helperStateGuardclass to carry out a RAII-like construct as a single-liner.An mtr test is straightforward and comfortably fits to an existing test file.