Merge branch 'v2.1.0_session_handler_split' into v2.1.0_session_handler_split_2

pull/2738/head
René Cannaò 6 years ago
commit 1adceeb9d6

@ -125,6 +125,7 @@ class MySQL_Session
bool handler_again___status_CHANGING_USER_SERVER(int *);
bool handler_again___status_CHANGING_AUTOCOMMIT(int *);
bool handler_again___status_SETTING_MULTI_STMT(int *_rc);
bool handler_again___multiple_statuses(int *rc);
void init();
void reset();
void add_ldap_comment_to_pkt(PtrSize_t *);

@ -196,7 +196,7 @@ enum session_status {
SETTING_VARIABLE,
SETTING_MULTIPLE_VARIABLES,
SETTING_SET_NAMES,
NONE
session_status___NONE // special marker
};
#ifdef __cplusplus
@ -992,7 +992,7 @@ typedef struct {
*/
mysql_variable_st mysql_tracked_variables[] {
{ SQL_CHARACTER_SET, SETTING_CHARSET, false, true, false, false, false, (char *)"CHARSET", (char *)"CHARSET", (char *)"UTF8" } , // should be before SQL_CHARACTER_SET_RESULTS
{ SQL_CHARACTER_ACTION, NONE, false, false, false, false, false, (char *)"action", (char *)"action", (char *)"1" } ,
{ SQL_CHARACTER_ACTION, session_status___NONE,false, false, false, false, false, (char *)"action", (char *)"action", (char *)"1" } ,
{ SQL_SET_NAMES, SETTING_SET_NAMES, false, false, false, false, false, (char *)"names", (char *)"names", (char *)"DEFAULT" } ,
{ SQL_SAFE_UPDATES, SETTING_VARIABLE, true, false, true, false, true, (char *)"sql_safe_updates", (char *)"sql_safe_updates", (char *)"OFF" } ,
{ SQL_SELECT_LIMIT, SETTING_VARIABLE, false, false, true, true, false, (char *)"sql_select_limit", (char *)"sql_select_limit", (char *)"DEFAULT" } ,

@ -417,7 +417,7 @@ void MySQL_Session::operator delete(void *ptr) {
void MySQL_Session::set_status(enum session_status e) {
if (e==NONE) {
if (e==session_status___NONE) {
if (mybe) {
if (mybe->server_myds) {
assert(mybe->server_myds->myconn==0);
@ -460,7 +460,7 @@ MySQL_Session::MySQL_Session() {
mirror=false;
mirrorPkt.ptr=NULL;
mirrorPkt.size=0;
set_status(NONE);
set_status(session_status___NONE);
CurrentQuery.sess=this;
@ -1448,7 +1448,7 @@ int MySQL_Session::handler_again___status_PINGING_SERVER() {
}
delete mybe->server_myds;
mybe->server_myds=NULL;
set_status(NONE);
set_status(session_status___NONE);
return -1;
} else {
MyHGM->p_update_mysql_error_counter(p_mysql_error_type::mysql, myconn->parent->myhgc->hid, myconn->parent->address, myconn->parent->port, mysql_errno(myconn->mysql));
@ -1503,7 +1503,7 @@ int MySQL_Session::handler_again___status_RESETTING_CONNECTION() {
// }
delete mybe->server_myds;
mybe->server_myds=NULL;
set_status(NONE);
set_status(session_status___NONE);
return -1;
} else {
MyHGM->p_update_mysql_error_counter(p_mysql_error_type::mysql, myconn->parent->myhgc->hid, myconn->parent->address, myconn->parent->port, mysql_errno(myconn->mysql));
@ -3394,7 +3394,7 @@ __get_pkts_from_client:
case FAST_FORWARD:
mybe->server_myds->PSarrayOUT->add(pkt.ptr, pkt.size);
break;
case NONE:
case session_status___NONE:
default:
{
char buf[INET6_ADDRSTRLEN];
@ -4062,66 +4062,6 @@ handler_again:
}
break;
case CHANGING_USER_SERVER:
{
int rc=0;
if (handler_again___status_CHANGING_USER_SERVER(&rc))
goto handler_again; // we changed status
if (rc==-1) { // we have an error we can't handle
handler_ret = -1;
return handler_ret;
}
}
break;
case CHANGING_AUTOCOMMIT:
{
int rc=0;
if (handler_again___status_CHANGING_AUTOCOMMIT(&rc))
goto handler_again; // we changed status
if (rc==-1) { // we have an error we can't handle
handler_ret = -1;
return handler_ret;
}
}
break;
case SETTING_MULTI_STMT:
{
int rc=0;
if (handler_again___status_SETTING_MULTI_STMT(&rc))
goto handler_again; // we changed status
if (rc==-1) { // we have an error we can't handle
handler_ret = -1;
return handler_ret;
}
}
break;
case SETTING_SESSION_TRACK_GTIDS:
{
int rc=0;
if (handler_again___status_SETTING_SESSION_TRACK_GTIDS(&rc))
goto handler_again; // we changed status
if (rc==-1) { // we have an error we can't handle
handler_ret = -1;
return handler_ret;
}
}
break;
case SETTING_SET_NAMES:
{
int rc=0;
if (handler_again___status_CHANGING_CHARSET(&rc))
goto handler_again; // we changed status
if (rc==-1) { // we have an error we can't handle
handler_ret = -1;
return handler_ret;
}
}
break;
case SETTING_ISOLATION_LEVEL:
case SETTING_TRANSACTION_READ:
case SETTING_CHARSET:
@ -4138,34 +4078,21 @@ handler_again:
}
break;
case SETTING_INIT_CONNECT:
{
int rc=0;
if (handler_again___status_SETTING_INIT_CONNECT(&rc))
goto handler_again; // we changed status
if (rc==-1) { // we have an error we can't handle
handler_ret = -1;
return handler_ret;
}
}
break;
case SETTING_LDAP_USER_VARIABLE:
case CONNECTING_SERVER:
{
int rc=0;
if (handler_again___status_SETTING_LDAP_USER_VARIABLE(&rc))
if (handler_again___status_CONNECTING_SERVER(&rc))
goto handler_again; // we changed status
if (rc==-1) { // we have an error we can't handle
handler_ret = -1;
return handler_ret;
}
if (rc==1) //handler_again___status_CONNECTING_SERVER returns 1
goto __exit_DSS__STATE_NOT_INITIALIZED;
}
break;
case CHANGING_SCHEMA:
case session_status___NONE:
fprintf(stderr,"NONE\n");
default:
{
int rc=0;
if (handler_again___status_CHANGING_SCHEMA(&rc))
int rc = 0;
if (handler_again___multiple_statuses(&rc)) // a sort of catch all
goto handler_again; // we changed status
if (rc==-1) { // we have an error we can't handle
handler_ret = -1;
@ -4173,20 +4100,6 @@ handler_again:
}
}
break;
case CONNECTING_SERVER:
{
int rc=0;
if (handler_again___status_CONNECTING_SERVER(&rc))
goto handler_again; // we changed status
if (rc==1) //handler_again___status_CONNECTING_SERVER returns 1
goto __exit_DSS__STATE_NOT_INITIALIZED;
}
break;
case NONE:
fprintf(stderr,"NONE\n");
default:
break;
}
@ -4214,7 +4127,41 @@ __exit_DSS__STATE_NOT_INITIALIZED:
handler_ret = 0;
return handler_ret;
}
// end ::handler()
bool MySQL_Session::handler_again___multiple_statuses(int *rc) {
bool ret = false;
switch(status) {
case CHANGING_USER_SERVER:
ret = handler_again___status_CHANGING_USER_SERVER(rc);
break;
case CHANGING_AUTOCOMMIT:
ret = handler_again___status_CHANGING_AUTOCOMMIT(rc);
break;
case CHANGING_SCHEMA:
ret = handler_again___status_CHANGING_SCHEMA(rc);
break;
case SETTING_LDAP_USER_VARIABLE:
ret = handler_again___status_SETTING_LDAP_USER_VARIABLE(rc);
break;
case SETTING_INIT_CONNECT:
ret = handler_again___status_SETTING_INIT_CONNECT(rc);
break;
case SETTING_MULTI_STMT:
ret = handler_again___status_SETTING_MULTI_STMT(rc);
break;
case SETTING_SESSION_TRACK_GTIDS:
ret = handler_again___status_SETTING_SESSION_TRACK_GTIDS(rc);
break;
case SETTING_SET_NAMES:
ret = handler_again___status_CHANGING_CHARSET(rc);
break;
default:
break;
}
return ret;
}
void MySQL_Session::handler___status_WAITING_SERVER_DATA___STATE_READING_COM_STMT_PREPARE_RESPONSE(PtrSize_t *pkt) {
unsigned char c;

@ -4401,13 +4401,13 @@ bool MySQL_Thread::process_data_on_data_stream(MySQL_Data_Stream *myds, unsigned
mypolls.last_recv[n]=curtime;
myds->revents=mypolls.fds[n].revents;
myds->sess->to_process=1;
assert(myds->sess->status!=NONE);
assert(myds->sess->status!=session_status___NONE);
} else {
// no events
if (myds->wait_until && curtime > myds->wait_until) {
// timeout
myds->sess->to_process=1;
assert(myds->sess->status!=NONE);
assert(myds->sess->status!=session_status___NONE);
} else {
if (myds->sess->pause_until && curtime > myds->sess->pause_until) {
// timeout
@ -5558,7 +5558,7 @@ SQLite3_result * MySQL_Threads_Handler::SQL3_Processlist() {
case FAST_FORWARD:
pta[11]=strdup("Fast forward");
break;
case NONE:
case session_status___NONE:
pta[11]=strdup("None");
break;
default:

Loading…
Cancel
Save