1) Do exactly as you proposed. We should also consider making ROLLBACK and COMMIT a new type.
2) Batch up all Transaction messages for a single transaction and then modify the messages to eliminate the stuff we need to rollback before sending the messages through the replication channel.
We need to eventually do something like the batching in #2 in order to fix the intermingling of Transaction messages when we have multiple connections (think of a large LOAD DATA running that could create several Transaction messages with the same transaction_id while other clients run smaller transactions). That's going to be interesting to fix. However, I still like #1 as well. Hiding rollbacks just doesn't seem like a good idea to me (side effects?).
I think we could handle this one of two ways:
1) Do exactly as you proposed. We should also consider making ROLLBACK and COMMIT a new type.
2) Batch up all Transaction messages for a single transaction and then modify the messages to eliminate the stuff we need to rollback before sending the messages through the replication channel.
We need to eventually do something like the batching in #2 in order to fix the intermingling of Transaction messages when we have multiple connections (think of a large LOAD DATA running that could create several Transaction messages with the same transaction_id while other clients run smaller transactions). That's going to be interesting to fix. However, I still like #1 as well. Hiding rollbacks just doesn't seem like a good idea to me (side effects?).