#define ADMIN_SQLITE_TABLE_STATS_MYSQL_PREPARED_STATEMENTS_INFO "CREATE TABLE stats_mysql_prepared_statements_info (global_stmt_id INT NOT NULL, hostgroup INT NOT NULL , schemaname VARCHAR NOT NULL , username VARCHAR NOT NULL , digest VARCHAR NOT NULL , ref_count_client INT NOT NULL , ref_count_server INT NOT NULL , query VARCHAR NOT NULL)"
#define ADMIN_SQLITE_TABLE_STATS_MYSQL_PREPARED_STATEMENTS_INFO "CREATE TABLE stats_mysql_prepared_statements_info (global_stmt_id INT NOT NULL , schemaname VARCHAR NOT NULL , username VARCHAR NOT NULL , digest VARCHAR NOT NULL , ref_count_client INT NOT NULL , ref_count_server INT NOT NULL , query VARCHAR NOT NULL)"
query32=(char*)"INSERT INTO stats_mysql_prepared_statements_info VALUES (?1,?2,?3,?4,?5,?6,?7),(?8,?9,?10,?11,?12,?13,?14),(?15,?16,?17,?18,?19,?20,?21),(?22,?23,?24,?25,?26,?27,?28),(?29,?30,?31,?32,?33,?34,?35),(?36,?37,?38,?39,?40,?41,?42),(?43,?44,?45,?46,?47,?48,?49),(?50,?51,?52,?53,?54,?55,?56),(?57,?58,?59,?60,?61,?62,?63),(?64,?65,?66,?67,?68,?69,?70),(?71,?72,?73,?74,?75,?76,?77),(?78,?79,?80,?81,?82,?83,?84),(?85,?86,?87,?88,?89,?90,?91),(?92,?93,?94,?95,?96,?97,?98),(?99,?100,?101,?102,?103,?104,?105),(?106,?107,?108,?109,?110,?111,?112),(?113,?114,?115,?116,?117,?118,?119),(?120,?121,?122,?123,?124,?125,?126),(?127,?128,?129,?130,?131,?132,?133),(?134,?135,?136,?137,?138,?139,?140),(?141,?142,?143,?144,?145,?146,?147),(?148,?149,?150,?151,?152,?153,?154),(?155,?156,?157,?158,?159,?160,?161),(?162,?163,?164,?165,?166,?167,?168),(?169,?170,?171,?172,?173,?174,?175),(?176,?177,?178,?179,?180,?181,?182),(?183,?184,?185,?186,?187,?188,?189),(?190,?191,?192,?193,?194,?195,?196),(?197,?198,?199,?200,?201,?202,?203),(?204,?205,?206,?207,?208,?209,?210),(?211,?212,?213,?214,?215,?216,?217),(?218,?219,?220,?221,?222,?223,?224)";
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,4,"Detected a changed in version. Global:%d , local:%d . Refreshing...\n",version,_thr_SQP_version);
@ -1524,112 +1542,113 @@ __internal_loop:
flagIN=qr->flagOUT;
set_flagOUT=true;
//sess->query_info.flagOUT=flagIN;
}
if(qr->reconnect>=0){
}
if(qr->reconnect>=0){
// Note: negative reconnect means this rule doesn't change
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set reconnect: %d. Query will%s be rexecuted if connection is lost\n",qr->rule_id,qr->reconnect,(qr->reconnect==0?" NOT":""));
ret->reconnect=qr->reconnect;
}
if(qr->timeout>=0){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set reconnect: %d. Query will%s be rexecuted if connection is lost\n",qr->rule_id,qr->reconnect,(qr->reconnect==0?" NOT":""));
ret->reconnect=qr->reconnect;
}
if(qr->timeout>=0){
// Note: negative timeout means this rule doesn't change
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set timeout: %d. Query will%s be interrupted if exceeding %dms\n",qr->rule_id,qr->timeout,(qr->timeout==0?" NOT":""),qr->timeout);
ret->timeout=qr->timeout;
}
if(qr->retries>=0){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set timeout: %d. Query will%s be interrupted if exceeding %dms\n",qr->rule_id,qr->timeout,(qr->timeout==0?" NOT":""),qr->timeout);
ret->timeout=qr->timeout;
}
if(qr->retries>=0){
// Note: negative retries means this rule doesn't change
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set retries: %d. Query will%s be re-executed %d times in case of failure\n",qr->rule_id,qr->retries);
ret->retries=qr->retries;
}
if(qr->delay>=0){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set retries: %d. Query will%s be re-executed %d times in case of failure\n",qr->rule_id,qr->retries);
ret->retries=qr->retries;
}
if(qr->delay>=0){
// Note: negative delay means this rule doesn't change
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set delay: %d. Session will%s be paused for %dms\n",qr->rule_id,qr->delay,(qr->delay==0?" NOT":""),qr->delay);
ret->delay=qr->delay;
}
if(qr->next_query_flagIN>=0){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set delay: %d. Session will%s be paused for %dms\n",qr->rule_id,qr->delay,(qr->delay==0?" NOT":""),qr->delay);
ret->delay=qr->delay;
}
if(qr->next_query_flagIN>=0){
// Note: Negative next_query_flagIN means this rule doesn't change the next query flagIN
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set next query flagIN: %d\n",qr->rule_id,qr->next_query_flagIN);
ret->next_query_flagIN=qr->next_query_flagIN;
}
if(qr->mirror_flagOUT>=0){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set next query flagIN: %d\n",qr->rule_id,qr->next_query_flagIN);
ret->next_query_flagIN=qr->next_query_flagIN;
}
if(qr->mirror_flagOUT>=0){
// Note: negative mirror_flagOUT means this rule doesn't change the mirror flagOUT
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set mirror flagOUT: %d\n",qr->rule_id,qr->mirror_flagOUT);
ret->mirror_flagOUT=qr->mirror_flagOUT;
}
if(qr->mirror_hostgroup>=0){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set mirror flagOUT: %d\n",qr->rule_id,qr->mirror_flagOUT);
ret->mirror_flagOUT=qr->mirror_flagOUT;
}
if(qr->mirror_hostgroup>=0){
// Note: negative mirror_hostgroup means this rule doesn't change the mirror
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set mirror hostgroup: %d. A new session will be created\n",qr->rule_id,qr->mirror_hostgroup);
ret->mirror_hostgroup=qr->mirror_hostgroup;
}
if(qr->error_msg){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set error_msg: %s\n",qr->rule_id,qr->error_msg);
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set mirror hostgroup: %d. A new session will be created\n",qr->rule_id,qr->mirror_hostgroup);
ret->mirror_hostgroup=qr->mirror_hostgroup;
}
if(qr->error_msg){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set error_msg: %s\n",qr->rule_id,qr->error_msg);
//proxy_warning("User \"%s\" has issued query that has been filtered: %s \n " , sess->client_myds->myconn->userinfo->username, query);
ret->error_msg=strdup(qr->error_msg);
}
if(qr->OK_msg){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set error_msg: %s\n",qr->rule_id,qr->OK_msg);
ret->error_msg=strdup(qr->error_msg);
}
if(qr->OK_msg){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set error_msg: %s\n",qr->rule_id,qr->OK_msg);
//proxy_warning("User \"%s\" has issued query that has been filtered: %s \n " , sess->client_myds->myconn->userinfo->username, query);
ret->OK_msg=strdup(qr->OK_msg);
}
if(qr->cache_ttl>=0){
ret->OK_msg=strdup(qr->OK_msg);
}
if(qr->cache_ttl>=0){
// Note: negative TTL means this rule doesn't change
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set cache_ttl: %d. Query will%s hit the cache\n",qr->rule_id,qr->cache_ttl,(qr->cache_ttl==0?" NOT":""));
ret->cache_ttl=qr->cache_ttl;
}
if(qr->cache_empty_result>=0){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set cache_ttl: %d. Query will%s hit the cache\n",qr->rule_id,qr->cache_ttl,(qr->cache_ttl==0?" NOT":""));
ret->cache_ttl=qr->cache_ttl;
}
if(qr->cache_empty_result>=0){
// Note: negative value means this rule doesn't change
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set cache_empty_result: %d. Query with empty result will%s hit the cache\n",qr->rule_id,qr->cache_empty_result,(qr->cache_empty_result==0?" NOT":""));
ret->cache_empty_result=qr->cache_empty_result;
}
if(qr->cache_timeout>=0){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set cache_empty_result: %d. Query with empty result will%s hit the cache\n",qr->rule_id,qr->cache_empty_result,(qr->cache_empty_result==0?" NOT":""));
ret->cache_empty_result=qr->cache_empty_result;
}
if(qr->cache_timeout>=0){
// Note: negative value means this rule doesn't change
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set cache_timeout: %dms. Query will wait up resulset to be avaiable in query cache before running on backend\n",qr->rule_id,qr->cache_timeout);
ret->cache_timeout=qr->cache_timeout;
}
if(qr->sticky_conn>=0){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set cache_timeout: %dms. Query will wait up resulset to be avaiable in query cache before running on backend\n",qr->rule_id,qr->cache_timeout);
ret->cache_timeout=qr->cache_timeout;
}
if(qr->sticky_conn>=0){
// Note: negative sticky_conn means this rule doesn't change
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set sticky_conn: %d. Connection will%s stick\n",qr->rule_id,qr->sticky_conn,(qr->sticky_conn==0?" NOT":""));
ret->sticky_conn=qr->sticky_conn;
}
if(qr->multiplex>=0){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set sticky_conn: %d. Connection will%s stick\n",qr->rule_id,qr->sticky_conn,(qr->sticky_conn==0?" NOT":""));
ret->sticky_conn=qr->sticky_conn;
}
if(qr->multiplex>=0){
// Note: negative multiplex means this rule doesn't change
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set multiplex: %d. Connection will%s multiplex\n",qr->rule_id,qr->multiplex,(qr->multiplex==0?" NOT":""));
ret->multiplex=qr->multiplex;
}
if(qr->gtid_from_hostgroup>=0){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set multiplex: %d. Connection will%s multiplex\n",qr->rule_id,qr->multiplex,(qr->multiplex==0?" NOT":""));
ret->multiplex=qr->multiplex;
}
if(qr->gtid_from_hostgroup>=0){
// Note: negative gtid_from_hostgroup means this rule doesn't change the gtid_from_hostgroup
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set gtid from hostgroup: %d. A new session will be created\n",qr->rule_id,qr->gtid_from_hostgroup);
ret->gtid_from_hostgroup=qr->gtid_from_hostgroup;
}
if(qr->log>=0){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set gtid from hostgroup: %d. A new session will be created\n",qr->rule_id,qr->gtid_from_hostgroup);
ret->gtid_from_hostgroup=qr->gtid_from_hostgroup;
}
if(qr->log>=0){
// Note: negative log means this rule doesn't change
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set log: %d. Query will%s logged\n",qr->rule_id,qr->log,(qr->log==0?" NOT":""));
ret->log=qr->log;
}
if(qr->destination_hostgroup>=0){
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set log: %d. Query will%s logged\n",qr->rule_id,qr->log,(qr->log==0?" NOT":""));
ret->log=qr->log;
}
if(qr->destination_hostgroup>=0){
// Note: negative hostgroup means this rule doesn't change
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d has set destination hostgroup: %d\n",qr->rule_id,qr->destination_hostgroup);
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d on match_pattern \"%s\" has a replace_pattern \"%s\" to apply\n",qr->rule_id,qr->match_pattern,qr->replace_pattern);
proxy_debug(PROXY_DEBUG_MYSQL_QUERY_PROCESSOR,5,"query rule %d on match_pattern \"%s\" has a replace_pattern \"%s\" to apply\n",qr->rule_id,qr->match_pattern,qr->replace_pattern);