mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
BUG#13627921 - MISSING FLAGS IN SQL_COMMAND_FLAGS MAY LEAD TO REPLICATION PROBLEMS
merge from MySQL-5.6, revision: revno: 3677.2.1 committer: Alfranio Correia <alfranio.correia@oracle.com> timestamp: Tue 2012-02-28 16:26:37 +0000 message: BUG#13627921 - MISSING FLAGS IN SQL_COMMAND_FLAGS MAY LEAD TO REPLICATION PROBLEMS Flags in sql_command_flags[command] are not correctly set for the following commands: . SQLCOM_SET_OPTION is missing CF_CAN_GENERATE_ROW_EVENTS; . SQLCOM_BINLOG_BASE64_EVENT is missing CF_CAN_GENERATE_ROW_EVENTS; . SQLCOM_REVOKE_ALL is missing CF_CHANGES_DATA; . SQLCOM_CREATE_FUNCTION is missing CF_AUTO_COMMIT_TRANS; This may lead to a wrong sequence of events in the binary log. To fix the problem, we correctly set the flags in sql_command_flags[command].
This commit is contained in:
@ -356,6 +356,7 @@ void init_update_queries(void)
|
||||
*/
|
||||
sql_command_flags[SQLCOM_SET_OPTION]= CF_REEXECUTION_FRAGILE |
|
||||
CF_AUTO_COMMIT_TRANS |
|
||||
CF_CAN_GENERATE_ROW_EVENTS |
|
||||
CF_OPTIMIZER_TRACE; // (1)
|
||||
// (1) so that subquery is traced when doing "DO @var := (subquery)"
|
||||
sql_command_flags[SQLCOM_DO]= CF_REEXECUTION_FRAGILE |
|
||||
@ -420,13 +421,7 @@ void init_update_queries(void)
|
||||
sql_command_flags[SQLCOM_REVOKE]= CF_CHANGES_DATA;
|
||||
sql_command_flags[SQLCOM_REVOKE_ROLE]= CF_CHANGES_DATA;
|
||||
sql_command_flags[SQLCOM_OPTIMIZE]= CF_CHANGES_DATA;
|
||||
/*
|
||||
@todo SQLCOM_CREATE_FUNCTION should have CF_AUTO_COMMIT_TRANS
|
||||
set. this currently is binlogged *before* the transaction if
|
||||
executed inside a transaction because it does not have an implicit
|
||||
pre-commit and is written to the statement cache. /Sven
|
||||
*/
|
||||
sql_command_flags[SQLCOM_CREATE_FUNCTION]= CF_CHANGES_DATA;
|
||||
sql_command_flags[SQLCOM_CREATE_FUNCTION]= CF_CHANGES_DATA | CF_AUTO_COMMIT_TRANS;
|
||||
sql_command_flags[SQLCOM_CREATE_PROCEDURE]= CF_CHANGES_DATA | CF_AUTO_COMMIT_TRANS;
|
||||
sql_command_flags[SQLCOM_CREATE_SPFUNCTION]= CF_CHANGES_DATA | CF_AUTO_COMMIT_TRANS;
|
||||
sql_command_flags[SQLCOM_DROP_PROCEDURE]= CF_CHANGES_DATA | CF_AUTO_COMMIT_TRANS;
|
||||
@ -479,8 +474,8 @@ void init_update_queries(void)
|
||||
sql_command_flags[SQLCOM_RENAME_USER]|= CF_AUTO_COMMIT_TRANS;
|
||||
sql_command_flags[SQLCOM_CREATE_ROLE]|= CF_AUTO_COMMIT_TRANS;
|
||||
sql_command_flags[SQLCOM_DROP_ROLE]|= CF_AUTO_COMMIT_TRANS;
|
||||
sql_command_flags[SQLCOM_REVOKE_ALL]= CF_AUTO_COMMIT_TRANS;
|
||||
sql_command_flags[SQLCOM_REVOKE]|= CF_AUTO_COMMIT_TRANS;
|
||||
sql_command_flags[SQLCOM_REVOKE_ALL]= CF_AUTO_COMMIT_TRANS;
|
||||
sql_command_flags[SQLCOM_REVOKE_ROLE]|= CF_AUTO_COMMIT_TRANS;
|
||||
sql_command_flags[SQLCOM_GRANT]|= CF_AUTO_COMMIT_TRANS;
|
||||
sql_command_flags[SQLCOM_GRANT_ROLE]|= CF_AUTO_COMMIT_TRANS;
|
||||
|
Reference in New Issue
Block a user