summaryrefslogtreecommitdiff
path: root/sql/log_event.h
diff options
context:
space:
mode:
authorLixun Peng <lixun@mariadb.org>2017-07-03 14:48:07 +0800
committerLixun Peng <lixun@mariadb.org>2017-07-03 14:48:07 +0800
commit007d3ed90513fa21182b3059b4bb7278fc425bd5 (patch)
tree1c5bcc0052415dc00903671f87fa84281d016b4c /sql/log_event.h
parent92f1837a27f4b78a3e6c74ca33c3052211069af5 (diff)
downloadmariadb-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.h2
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 */