#define ADMIN_SQLITE_TABLE_MYSQL_HOSTGROUPS "CREATE TABLE mysql_hostgroups ( hostgroup_id INT NOT NULL , description VARCHAR, PRIMARY KEY(hostgroup_id) )"
#define ADMIN_SQLITE_TABLE_MYSQL_HOSTGROUP_ENTRIES "CREATE TABLE mysql_hostgroup_entries ( hostgroup_id INT NOT NULL DEFAULT 0, hostname VARCHAR NOT NULL , port INT NOT NULL DEFAULT 3306, weight INT CHECK (weight >= 0) NOT NULL DEFAULT 1 , FOREIGN KEY (hostname, port) REFERENCES mysql_servers (hostname, port) , FOREIGN KEY (hostgroup_id) REFERENCES mysql_hostgroups (hostgroup_id) , PRIMARY KEY (hostgroup_id, hostname, port) )"
#define ADMIN_SQLITE_TABLE_MYSQL_USERS "CREATE TABLE mysql_users ( username VARCHAR NOT NULL , password VARCHAR , active INT CHECK (active IN (0,1)) NOT NULL DEFAULT 1 , use_ssl INT CHECK (use_ssl IN (0,1)) NOT NULL DEFAULT 0, default_hostgroup INT NOT NULL DEFAULT 0, transaction_persistent INT CHECK (transaction_persistent IN (0,1)) NOT NULL DEFAULT 0, backend INT CHECK (backend IN (0,1)) NOT NULL DEFAULT 1, frontend INT CHECK (frontend IN (0,1)) NOT NULL DEFAULT 1, PRIMARY KEY (username, backend), UNIQUE (username, frontend) , FOREIGN KEY (default_hostgroup) REFERENCES mysql_hostgroups (hostgroup_id))"
#define ADMIN_SQLITE_TABLE_MYSQL_QUERY_RULES "CREATE TABLE query_rules (rule_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, active INT CHECK (active IN (0,1)) NOT NULL DEFAULT 0, username VARCHAR, schemaname VARCHAR, flagIN INT NOT NULL DEFAULT 0, match_pattern VARCHAR, negate_match_pattern INT CHECK (negate_match_pattern IN (0,1)) NOT NULL DEFAULT 0, flagOUT INT, replace_pattern VARCHAR, destination_hostgroup INT DEFAULT NULL, cache_ttl INT CHECK(cache_ttl > 0), apply INT CHECK(apply IN (0,1)) NOT NULL DEFAULT 0, FOREIGN KEY (destination_hostgroup) REFERENCES mysql_hostgroups (hostgroup_id))"
#ifdef DEBUG
#define ADMIN_SQLITE_TABLE_DEBUG_LEVELS "CREATE TABLE debug_levels (module VARCHAR NOT NULL PRIMARY KEY, verbosity INT NOT NULL DEFAULT 0)"
@ -141,7 +144,7 @@ class Standard_ProxySQL_Admin: public ProxySQL_Admin {
@ -446,6 +453,75 @@ bool admin_handler_command_load_or_save(char *query_no_space, unsigned int query
*/
}
if((query_no_space_length>23)&&((!strncasecmp("SAVE MYSQL QUERY RULES ",query_no_space,23))||(!strncasecmp("LOAD MYSQL QUERY RULES ",query_no_space,23)))){
if(
(query_no_space_length==strlen("LOAD MYSQL QUERY RULES TO MEMORY")&&!strncasecmp("LOAD MYSQL QUERY RULES TO MEMORY",query_no_space,query_no_space_length))
||
(query_no_space_length==strlen("LOAD MYSQL QUERY RULES TO MEM")&&!strncasecmp("LOAD MYSQL QUERY RULES TO MEM",query_no_space,query_no_space_length))
||
(query_no_space_length==strlen("LOAD MYSQL QUERY RULES FROM DISK")&&!strncasecmp("LOAD MYSQL QUERY RULES FROM DISK",query_no_space,query_no_space_length))
proxy_debug(PROXY_DEBUG_ADMIN,4,"Loaded mysql query rules to MEMORY\n");
SPA->send_MySQL_OK(&sess->myprot_client,NULL);
returnfalse;
}
if(
(query_no_space_length==strlen("SAVE MYSQL QUERY RULES FROM MEMORY")&&!strncasecmp("SAVE MYSQL QUERY RULES FROM MEMORY",query_no_space,query_no_space_length))
||
(query_no_space_length==strlen("SAVE MYSQL QUERY RULES FROM MEM")&&!strncasecmp("SAVE MYSQL QUERY RULES FROM MEM",query_no_space,query_no_space_length))
||
(query_no_space_length==strlen("SAVE MYSQL QUERY RULES TO DISK")&&!strncasecmp("SAVE MYSQL QUERY RULES TO DISK",query_no_space,query_no_space_length))
proxy_debug(PROXY_DEBUG_ADMIN,4,"Saved mysql query rules to DISK\n");
SPA->send_MySQL_OK(&sess->myprot_client,NULL);
returnfalse;
}
if(
(query_no_space_length==strlen("LOAD MYSQL QUERY RULES FROM MEMORY")&&!strncasecmp("LOAD MYSQL QUERY RULES FROM MEMORY",query_no_space,query_no_space_length))
||
(query_no_space_length==strlen("LOAD MYSQL QUERY RULES FROM MEM")&&!strncasecmp("LOAD MYSQL QUERY RULES FROM MEM",query_no_space,query_no_space_length))
||
(query_no_space_length==strlen("LOAD MYSQL QUERY RULES TO RUNTIME")&&!strncasecmp("LOAD MYSQL QUERY RULES TO RUNTIME",query_no_space,query_no_space_length))
||
(query_no_space_length==strlen("LOAD MYSQL QUERY RULES TO RUN")&&!strncasecmp("LOAD MYSQL QUERY RULES TO RUN",query_no_space,query_no_space_length))
proxy_debug(PROXY_DEBUG_ADMIN,4,"Loaded mysql query rules to RUNTIME\n");
SPA->send_MySQL_OK(&sess->myprot_client,NULL);
returnfalse;
}
/*
if(
(query_no_space_length==strlen("SAVE MYSQL QUERY RULES TO MEMORY")&&!strncasecmp("SAVE MYSQL QUERY RULES TO MEMORY",query_no_space,query_no_space_length))
||
(query_no_space_length==strlen("SAVE MYSQL QUERY RULES TO MEM")&&!strncasecmp("SAVE MYSQL QUERY RULES TO MEM",query_no_space,query_no_space_length))
||
(query_no_space_length==strlen("SAVE MYSQL QUERY RULES FROM RUNTIME")&&!strncasecmp("SAVE MYSQL QUERY RULES FROM RUNTIME",query_no_space,query_no_space_length))
||
(query_no_space_length==strlen("SAVE MYSQL QUERY RULES FROM RUN")&&!strncasecmp("SAVE MYSQL QUERY RULES FROM RUN",query_no_space,query_no_space_length))