Fix bug in handling sub events of replication.TransactionPayloadEvent #875
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.
When using the canal package with a MySQL instance with
binlog-transaction-compression=ON
, the following error occurs when you execute an INSERT statement on a table:This is because the
runSyncBinlog
function assumes that the sub events of areplication.TransactionPayloadEvent
event are all row events. This isn't true (you can see an example of this in this PR comment #773 (comment)). This PR addresses this issue by making the event handling logic its own method and calling it recursively from theTransactionPayloadEvent
case.This PR is easier to review if you hide the whitespace.