mirror of
https://github.com/MariaDB/server.git
synced 2026-04-26 02:05:31 +02:00
Bug #50407 mysqlbinlog --database=X produces bad output for SAVEPOINTs
When mysqlbinlog was given the --database=X flag, it always printed 'ROLLBACK TO', but the corresponding 'SAVEPOINT' statement was not printed. The replicated filter(replicated-do/ignore-db) and binlog filter (binlog-do/ignore-db) has the same problem. They are solved in this patch together. After this patch, We always check whether the query is 'SAVEPOINT' statement or not. Because this is a literal check, 'SAVEPOINT' and 'ROLLBACK TO' statements are also binlogged in uppercase with no any comments. The binlog before this patch can be handled correctly except one case that any comments are in front of the keywords. for example: /* bla bla */ SAVEPOINT a; /* bla bla */ ROLLBACK TO a;
This commit is contained in:
parent
4775601012
commit
454c003a5c
13 changed files with 243 additions and 32 deletions
|
|
@ -3063,10 +3063,7 @@ int Query_log_event::do_apply_event(Relay_log_info const *rli,
|
|||
::do_apply_event(), then the companion SET also have so
|
||||
we don't need to reset_one_shot_variables().
|
||||
*/
|
||||
if (!strncmp(query_arg, "BEGIN", q_len_arg) ||
|
||||
!strncmp(query_arg, "COMMIT", q_len_arg) ||
|
||||
!strncmp(query_arg, "ROLLBACK", q_len_arg) ||
|
||||
rpl_filter->db_ok(thd->db))
|
||||
if (is_trans_keyword() || rpl_filter->db_ok(thd->db))
|
||||
{
|
||||
thd->set_time((time_t)when);
|
||||
thd->set_query((char*)query_arg, q_len_arg);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue