Introduce ignore_vars in MySQL_Variables

This vector lists all the variables that proxysql will parse but ignore
pull/3381/head
René Cannaò 5 years ago
parent cc424b71ac
commit f0e3a87159

@ -30,7 +30,8 @@ class MySQL_Variables {
public:
std::string variables_regexp;
// ignore_vars is a list of all variables that proxysql will parse but ignore its value
std::vector<std::string> ignore_vars;
public:
MySQL_Variables();

@ -5738,6 +5738,9 @@ bool MySQL_Session::handler___status_WAITING_CLIENT_DATA___STATE_SLEEP___MYSQL_C
return false;
proxy_debug(PROXY_DEBUG_MYSQL_COM, 8, "Changing connection TX ISOLATION to %s\n", value1.c_str());
}
} else if (std::find(mysql_variables.ignore_vars.begin(), mysql_variables.ignore_vars.end(), var) != mysql_variables.ignore_vars.end()) {
std::string value1 = *values;
proxy_info("%s = %s\n", var.c_str(), value1.c_str());
} else {
std::string value1 = *values;
std::size_t found_at = value1.find("@");

@ -4036,7 +4036,7 @@ bool MySQL_Thread::init() {
match_regexes[0]=new Session_Regex((char *)"^SET (|SESSION |@@|@@session.)SQL_LOG_BIN( *)(:|)=( *)");
std::stringstream ss;
ss << "^SET (|SESSION |@@|@@session.)(" << mysql_variables.variables_regexp << "wait_timeout|SESSION_TRACK_GTIDS|TX_ISOLATION( *)(:|)=( *))";
ss << "^SET (|SESSION |@@|@@session.)(" << mysql_variables.variables_regexp << "SESSION_TRACK_GTIDS|TX_ISOLATION( *)(:|)=( *))";
match_regexes[1]=new Session_Regex((char *)ss.str().c_str());
match_regexes[2]=new Session_Regex((char *)"^SET(?: +)(|SESSION +)TRANSACTION(?: +)(?:(?:(ISOLATION(?: +)LEVEL)(?: +)(REPEATABLE(?: +)READ|READ(?: +)COMMITTED|READ(?: +)UNCOMMITTED|SERIALIZABLE))|(?:(READ)(?: +)(WRITE|ONLY)))");

@ -20,6 +20,10 @@ update_var MySQL_Variables::updaters[SQL_NAME_LAST];
MySQL_Variables::MySQL_Variables() {
// add here all the variables we want proxysql to recognize, but ignore
ignore_vars.push_back("interactve_timeout");
ignore_vars.push_back("wait_timeout");
ignore_vars.push_back("net_read_timeout");
variables_regexp = "";
for (auto i = 0; i < SQL_NAME_LAST; i++) {
if (i == SQL_CHARACTER_SET || i == SQL_CHARACTER_ACTION || i == SQL_SET_NAMES) {
@ -38,6 +42,10 @@ MySQL_Variables::MySQL_Variables() {
variables_regexp += "|";
}
}
for (std::vector<std::string>::iterator it=ignore_vars.begin(); it != ignore_vars.end(); it++) {
variables_regexp += *it;
variables_regexp += "|";
}
}
MySQL_Variables::~MySQL_Variables() {}

Loading…
Cancel
Save