diff options
author | Lixun Peng <lixun@mariadb.org> | 2017-07-03 14:48:07 +0800 |
---|---|---|
committer | Lixun Peng <lixun@mariadb.org> | 2017-07-03 14:48:07 +0800 |
commit | 007d3ed90513fa21182b3059b4bb7278fc425bd5 (patch) | |
tree | 1c5bcc0052415dc00903671f87fa84281d016b4c /sql/log_event.h | |
parent | 92f1837a27f4b78a3e6c74ca33c3052211069af5 (diff) | |
download | mariadb-git-007d3ed90513fa21182b3059b4bb7278fc425bd5.tar.gz |
MDEV-12067 flashback does not correcly revert update/replace statementsbb-10.2-MDEV-12067
Problem
-------
For one-statement contains multiple row events, Flashback didn't reverse the
sequence of row events inside one-statement.
Solution
--------
Using a new array 'events_in_stmt' to store the row events of one-statement,
when parsed the last one event, then print from the last one to the first one.
In the same time, fixed another bug, without -vv will not insert the table_map
into print_event_info->m_table_map, then change_to_flashback_event() will not
execute because of Table_map_log_event is empty.
Diffstat (limited to 'sql/log_event.h')
-rw-r--r-- | sql/log_event.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sql/log_event.h b/sql/log_event.h index 6c6dce7e18e..a06781aebeb 100644 --- a/sql/log_event.h +++ b/sql/log_event.h @@ -4397,6 +4397,7 @@ public: void set_flags(flag_set flags_arg) { m_flags |= flags_arg; } void clear_flags(flag_set flags_arg) { m_flags &= ~flags_arg; } flag_set get_flags(flag_set flags_arg) const { return m_flags & flags_arg; } + void update_flags() { int2store(temp_buf + m_flags_pos, m_flags); } Log_event_type get_type_code() { return m_type; } /* Specific type (_V1 etc) */ virtual Log_event_type get_general_type_code() = 0; /* General rows op type, no version */ @@ -4555,6 +4556,7 @@ protected: uchar *m_rows_end; /* One-after the end of the allocated space */ size_t m_rows_before_size; /* The length before m_rows_buf */ + size_t m_flags_pos; /* The position of the m_flags */ flag_set m_flags; /* Flags for row-level events */ |