diff --git a/lib/mysql_connection.cpp b/lib/mysql_connection.cpp index cb66a6f65..39c09f945 100644 --- a/lib/mysql_connection.cpp +++ b/lib/mysql_connection.cpp @@ -23,6 +23,16 @@ mysql_status(short event, short cont) { return status; } +// Defining list of session variables for comparison with query digest to disable multiplexing for "SET " commands +static char * session_vars[]= { + // For issue #555 , multiplexing is disabled if --safe-updates is used + (char *)"SQL_SAFE_UPDATES=?,SQL_SELECT_LIMIT=?,MAX_JOIN_SIZE=?", + (char *)"FOREIGN_KEY_CHECKS", + (char *)"UNIQUE_CHECKS", + (char *)"AUTO_INCREMENT_INCREMENT", + (char *)"AUTO_INCREMENT_OFFSET", + (char *)"GROUP_CONCAT_MAX_LEN" +}; MySQL_Connection_userinfo::MySQL_Connection_userinfo() { username=NULL; @@ -1538,13 +1548,12 @@ void MySQL_Connection::ProcessQueryAndSetStatusFlags(char *query_digest_text) { } } if (strncasecmp(query_digest_text,"SET ",4)==0) { - // For issue #555 , multiplexing is disabled if --safe-updates is used - if (strcasecmp(query_digest_text,"SET SQL_SAFE_UPDATES=?,SQL_SELECT_LIMIT=?,MAX_JOIN_SIZE=?")==0) { - set_status_user_variable(true); - } else if (strcasecmp(query_digest_text,"SET FOREIGN_KEY_CHECKS=?")==0) { // see #835 - set_status_user_variable(true); - } else if (strcasecmp(query_digest_text,"SET UNIQUE_CHECKS=?")==0) { // see #835 - set_status_user_variable(true); + // For issue #555 , multiplexing is disabled if --safe-updates is used (see session_vars definition) + for (unsigned int i = 0; i < sizeof(session_vars); i++) { + if (strcasestr(query_digest_text,session_vars[i])!=NULL) { + set_status_user_variable(true); + break; + } } } }