MXS-2562: Fix out-of-order error during COM_CHANGE_USER
If an error is generated while a COM_CHANGE_USER is being done, it would always use the sequence number 1. To properly handle this case and send the correct sequence number, the COM_CHANGE_USER progress needs to be tracked at the session level. The information needs to be shared between the backend and client protocols as the final OK to the COM_CHANGE_USER, with the sequence number 3, is the one that the backend server returns. Only after this response has been received and routed to the client can the COM_CHANGE_USER processing stop.
This commit is contained in:
@ -916,6 +916,9 @@ static int gw_read_and_write(DCB* dcb)
|
||||
*/
|
||||
GWBUF_DATA(read_buffer)[3] = 0x3;
|
||||
proto->changing_user = false;
|
||||
|
||||
auto s = (MYSQL_session*)session->client_dcb->data;
|
||||
s->changing_user = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user