diff options
author | He Zhenxing <hezx@mysql.com> | 2008-08-26 18:01:49 +0800 |
---|---|---|
committer | He Zhenxing <hezx@mysql.com> | 2008-08-26 18:01:49 +0800 |
commit | 923f61039ef220b59adf39bf8e9696fc7e533ddc (patch) | |
tree | c21f8cf81d40952b48da2c6d1d2fa9aec1832387 /sql/log_event.h | |
parent | 099a80d05a03f80a7310769f2b7b13f875ef24f9 (diff) | |
download | mariadb-git-923f61039ef220b59adf39bf8e9696fc7e533ddc.tar.gz |
Cherry picking patch for BUG#37051
Diffstat (limited to 'sql/log_event.h')
-rw-r--r-- | sql/log_event.h | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/sql/log_event.h b/sql/log_event.h index 76d92b23189..041c41dc71b 100644 --- a/sql/log_event.h +++ b/sql/log_event.h @@ -237,12 +237,15 @@ struct sql_ex_info packet (i.e. a query) sent from client to master; First, an auxiliary log_event status vars estimation: */ -#define MAX_SIZE_LOG_EVENT_STATUS (4 /* flags2 */ + \ - 8 /* sql mode */ + \ - 1 + 1 + 255 /* catalog */ + \ - 4 /* autoinc */ + \ - 6 /* charset */ + \ - MAX_TIME_ZONE_NAME_LENGTH) +#define MAX_SIZE_LOG_EVENT_STATUS (1 + 4 /* type, flags2 */ + \ + 1 + 8 /* type, sql_mode */ + \ + 1 + 1 + 255 /* type, length, catalog */ + \ + 1 + 4 /* type, auto_increment */ + \ + 1 + 6 /* type, charset */ + \ + 1 + 1 + 255 /* type, length, time_zone */ + \ + 1 + 2 /* type, lc_time_names_number */ + \ + 1 + 2 /* type, charset_database_number */ + \ + 1 + 8 /* type, table_map_for_update */) #define MAX_LOG_EVENT_HEADER ( /* in order of Query_log_event::write */ \ LOG_EVENT_HEADER_LEN + /* write_header */ \ QUERY_HEADER_LEN + /* write_data */ \ @@ -306,6 +309,8 @@ struct sql_ex_info #define Q_LC_TIME_NAMES_CODE 7 #define Q_CHARSET_DATABASE_CODE 8 + +#define Q_TABLE_MAP_FOR_UPDATE_CODE 9 /* Intvar event post-header */ #define I_TYPE_OFFSET 0 @@ -1455,6 +1460,22 @@ protected: This field is written if it is not 0. </td> </tr> + <tr> + <td>table_map_for_update</td> + <td>Q_TABLE_MAP_FOR_UPDATE_CODE == 9</td> + <td>8 byte integer</td> + + <td>The value of the table map that is to be updated by the + multi-table update query statement. Every bit of this variable + represents a table, and is set to 1 if the corresponding table is + to be updated by this statement. + + The value of this variable is set when executing a multi-table update + statement and used by slave to apply filter rules without opening + all the tables on slave. This is required because some tables may + not exist on slave because of the filter rules. + </td> + </tr> </table> @subsection Query_log_event_notes_on_previous_versions Notes on Previous Versions @@ -1471,6 +1492,9 @@ protected: * See Q_CHARSET_DATABASE_CODE in the table above. + * When adding new status vars, please don't forget to update the + MAX_SIZE_LOG_EVENT_STATUS, and update function code_name + */ class Query_log_event: public Log_event { @@ -1548,6 +1572,11 @@ public: const char *time_zone_str; uint lc_time_names_number; /* 0 means en_US */ uint charset_database_number; + /* + map for tables that will be updated for a multi-table update query + statement, for other query statements, this will be zero. + */ + ulonglong table_map_for_update; #ifndef MYSQL_CLIENT |