Format protocol modules
Formatted the MariaDB protocol modules with Astyle.
This commit is contained in:
@ -116,7 +116,7 @@ static const uint8_t resultset2[] =
|
|||||||
0x01, 0x00, 0x00, 0x15, 0x00, 0x01, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x15, 0x00, 0x01, 0x00, 0x00,
|
||||||
0x16, 0x00, 0x01, 0x00, 0x00, 0x17, 0x00, 0x01,
|
0x16, 0x00, 0x01, 0x00, 0x00, 0x17, 0x00, 0x01,
|
||||||
0x00, 0x00, 0x18, 0x00, 0x05, 0x00, 0x00, 0x19,
|
0x00, 0x00, 0x18, 0x00, 0x05, 0x00, 0x00, 0x19,
|
||||||
0xFE, 0x00, 0x00, 0x21, 0x40
|
0xFE, 0x00, 0x00, 0x21, 0x40
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -127,40 +127,40 @@ static const uint8_t resultset2[] =
|
|||||||
**/
|
**/
|
||||||
static const uint8_t resultset3[] =
|
static const uint8_t resultset3[] =
|
||||||
{
|
{
|
||||||
0x28, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
|
0x28, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
|
||||||
0x40, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x0F, 0x0A,
|
0x40, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x0F, 0x0A,
|
||||||
0x61, 0x75, 0x74, 0x6F, 0x63, 0x6F, 0x6D, 0x6D,
|
0x61, 0x75, 0x74, 0x6F, 0x63, 0x6F, 0x6D, 0x6D,
|
||||||
0x69, 0x74, 0x03, 0x4F, 0x46, 0x46, 0x02, 0x01,
|
0x69, 0x74, 0x03, 0x4F, 0x46, 0x46, 0x02, 0x01,
|
||||||
0x31, 0x05, 0x09, 0x08, 0x49, 0x5F, 0x52, 0x5F,
|
0x31, 0x05, 0x09, 0x08, 0x49, 0x5F, 0x52, 0x5F,
|
||||||
0x5F, 0x5F, 0x53, 0x5F, 0x1D, 0x00, 0x00, 0x01,
|
0x5F, 0x5F, 0x53, 0x5F, 0x1D, 0x00, 0x00, 0x01,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
|
||||||
0x14, 0x00, 0x0F, 0x0A, 0x61, 0x75, 0x74, 0x6F,
|
0x14, 0x00, 0x0F, 0x0A, 0x61, 0x75, 0x74, 0x6F,
|
||||||
0x63, 0x6F, 0x6D, 0x6D, 0x69, 0x74, 0x03, 0x4F,
|
0x63, 0x6F, 0x6D, 0x6D, 0x69, 0x74, 0x03, 0x4F,
|
||||||
0x46, 0x46, 0x02, 0x01, 0x31, 0x07, 0x00, 0x00,
|
0x46, 0x46, 0x02, 0x01, 0x31, 0x07, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x14, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
|
0x14, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
|
||||||
0x40, 0x00, 0x00, 0x00, 0x0B, 0x05, 0x09, 0x08,
|
0x40, 0x00, 0x00, 0x00, 0x0B, 0x05, 0x09, 0x08,
|
||||||
0x49, 0x5F, 0x5F, 0x5F, 0x57, 0x5F, 0x5F, 0x5F,
|
0x49, 0x5F, 0x5F, 0x5F, 0x57, 0x5F, 0x5F, 0x5F,
|
||||||
0x01, 0x00, 0x00, 0x01, 0x04, 0x20, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x01, 0x04, 0x20, 0x00, 0x00,
|
||||||
0x02, 0x03, 0x64, 0x65, 0x66, 0x04, 0x74, 0x65,
|
0x02, 0x03, 0x64, 0x65, 0x66, 0x04, 0x74, 0x65,
|
||||||
0x73, 0x74, 0x02, 0x74, 0x31, 0x02, 0x74, 0x31,
|
0x73, 0x74, 0x02, 0x74, 0x31, 0x02, 0x74, 0x31,
|
||||||
0x01, 0x61, 0x01, 0x61, 0x0C, 0x21, 0x00, 0x3C,
|
0x01, 0x61, 0x01, 0x61, 0x0C, 0x21, 0x00, 0x3C,
|
||||||
0x00, 0x00, 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x20, 0x00, 0x00, 0x03, 0x03, 0x64, 0x65,
|
0x00, 0x20, 0x00, 0x00, 0x03, 0x03, 0x64, 0x65,
|
||||||
0x66, 0x04, 0x74, 0x65, 0x73, 0x74, 0x02, 0x74,
|
0x66, 0x04, 0x74, 0x65, 0x73, 0x74, 0x02, 0x74,
|
||||||
0x31, 0x02, 0x74, 0x31, 0x01, 0x62, 0x01, 0x62,
|
0x31, 0x02, 0x74, 0x31, 0x01, 0x62, 0x01, 0x62,
|
||||||
0x0C, 0x3F, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x03,
|
0x0C, 0x3F, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x03,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
|
||||||
0x04, 0x03, 0x64, 0x65, 0x66, 0x04, 0x74, 0x65,
|
0x04, 0x03, 0x64, 0x65, 0x66, 0x04, 0x74, 0x65,
|
||||||
0x73, 0x74, 0x02, 0x74, 0x31, 0x02, 0x74, 0x31,
|
0x73, 0x74, 0x02, 0x74, 0x31, 0x02, 0x74, 0x31,
|
||||||
0x01, 0x63, 0x01, 0x63, 0x0C, 0x3F, 0x00, 0x0B,
|
0x01, 0x63, 0x01, 0x63, 0x0C, 0x3F, 0x00, 0x0B,
|
||||||
0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x20, 0x00, 0x00, 0x05, 0x03, 0x64, 0x65,
|
0x00, 0x20, 0x00, 0x00, 0x05, 0x03, 0x64, 0x65,
|
||||||
0x66, 0x04, 0x74, 0x65, 0x73, 0x74, 0x02, 0x74,
|
0x66, 0x04, 0x74, 0x65, 0x73, 0x74, 0x02, 0x74,
|
||||||
0x31, 0x02, 0x74, 0x31, 0x01, 0x64, 0x01, 0x64,
|
0x31, 0x02, 0x74, 0x31, 0x01, 0x64, 0x01, 0x64,
|
||||||
0x0C, 0x3F, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x03,
|
0x0C, 0x3F, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x03,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
|
||||||
0x06, 0xFE, 0x00, 0x00, 0x21, 0x00, 0x05, 0x00,
|
0x06, 0xFE, 0x00, 0x00, 0x21, 0x00, 0x05, 0x00,
|
||||||
0x00, 0x07, 0xFE, 0x00, 0x00, 0x21, 0x00
|
0x00, 0x07, 0xFE, 0x00, 0x00, 0x21, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -170,46 +170,46 @@ void test1()
|
|||||||
GWBUF *buffer;
|
GWBUF *buffer;
|
||||||
proto.server_capabilities = GW_MYSQL_CAPABILITIES_SESSION_TRACK;
|
proto.server_capabilities = GW_MYSQL_CAPABILITIES_SESSION_TRACK;
|
||||||
proto.num_eof_packets = 0;
|
proto.num_eof_packets = 0;
|
||||||
ss_dfprintf(stderr,"test_session_track : Functional tests.\n");
|
ss_dfprintf(stderr, "test_session_track : Functional tests.\n");
|
||||||
//BEGIN
|
//BEGIN
|
||||||
buffer = gwbuf_alloc_and_load(PACKET_1_LEN, resultset1+PACKET_1_IDX);
|
buffer = gwbuf_alloc_and_load(PACKET_1_LEN, resultset1 + PACKET_1_IDX);
|
||||||
mxs_mysql_get_session_track_info(buffer, &proto);
|
mxs_mysql_get_session_track_info(buffer, &proto);
|
||||||
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_state"), "T_______", 8) == 0);
|
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_state"), "T_______", 8) == 0);
|
||||||
gwbuf_free(buffer);
|
gwbuf_free(buffer);
|
||||||
//COMMIT
|
//COMMIT
|
||||||
buffer = gwbuf_alloc_and_load(PACKET_2_LEN, resultset1+PACKET_2_IDX);
|
buffer = gwbuf_alloc_and_load(PACKET_2_LEN, resultset1 + PACKET_2_IDX);
|
||||||
mxs_mysql_get_session_track_info(buffer, &proto);
|
mxs_mysql_get_session_track_info(buffer, &proto);
|
||||||
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_state"), "________", 8) == 0);
|
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_state"), "________", 8) == 0);
|
||||||
gwbuf_free(buffer);
|
gwbuf_free(buffer);
|
||||||
//START TRANSACTION
|
//START TRANSACTION
|
||||||
buffer = gwbuf_alloc_and_load(PACKET_3_LEN, resultset1+PACKET_3_IDX);
|
buffer = gwbuf_alloc_and_load(PACKET_3_LEN, resultset1 + PACKET_3_IDX);
|
||||||
mxs_mysql_get_session_track_info(buffer, &proto);
|
mxs_mysql_get_session_track_info(buffer, &proto);
|
||||||
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_state"), "T_______", 8) == 0);
|
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_state"), "T_______", 8) == 0);
|
||||||
gwbuf_free(buffer);
|
gwbuf_free(buffer);
|
||||||
//START TRANSACTION READ ONLY
|
//START TRANSACTION READ ONLY
|
||||||
buffer = gwbuf_alloc_and_load(PACKET_4_LEN, resultset1+PACKET_4_IDX);
|
buffer = gwbuf_alloc_and_load(PACKET_4_LEN, resultset1 + PACKET_4_IDX);
|
||||||
mxs_mysql_get_session_track_info(buffer, &proto);
|
mxs_mysql_get_session_track_info(buffer, &proto);
|
||||||
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_characteristics"),
|
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_characteristics"),
|
||||||
"START TRANSACTION READ ONLY;", 28) == 0);
|
"START TRANSACTION READ ONLY;", 28) == 0);
|
||||||
gwbuf_free(buffer);
|
gwbuf_free(buffer);
|
||||||
//COMMIT
|
//COMMIT
|
||||||
buffer = gwbuf_alloc_and_load(PACKET_5_LEN, resultset1+PACKET_5_IDX);
|
buffer = gwbuf_alloc_and_load(PACKET_5_LEN, resultset1 + PACKET_5_IDX);
|
||||||
mxs_mysql_get_session_track_info(buffer, &proto);
|
mxs_mysql_get_session_track_info(buffer, &proto);
|
||||||
ss_dassert(gwbuf_get_property(buffer, (char *)"trx_characteristics") == NULL);
|
ss_dassert(gwbuf_get_property(buffer, (char *)"trx_characteristics") == NULL);
|
||||||
ss_dassert(gwbuf_get_property(buffer, (char *)"trx_state") == NULL);
|
ss_dassert(gwbuf_get_property(buffer, (char *)"trx_state") == NULL);
|
||||||
gwbuf_free(buffer);
|
gwbuf_free(buffer);
|
||||||
//SET AUTOCOMMIT=0;
|
//SET AUTOCOMMIT=0;
|
||||||
buffer = gwbuf_alloc_and_load(PACKET_6_LEN, resultset1+PACKET_6_IDX);
|
buffer = gwbuf_alloc_and_load(PACKET_6_LEN, resultset1 + PACKET_6_IDX);
|
||||||
mxs_mysql_get_session_track_info(buffer, &proto);
|
mxs_mysql_get_session_track_info(buffer, &proto);
|
||||||
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"autocommit"), "OFF", 3) == 0);
|
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"autocommit"), "OFF", 3) == 0);
|
||||||
gwbuf_free(buffer);
|
gwbuf_free(buffer);
|
||||||
//INSERT INTO t1 VALUES(1);
|
//INSERT INTO t1 VALUES(1);
|
||||||
buffer = gwbuf_alloc_and_load(PACKET_7_LEN, resultset1+PACKET_7_IDX);
|
buffer = gwbuf_alloc_and_load(PACKET_7_LEN, resultset1 + PACKET_7_IDX);
|
||||||
mxs_mysql_get_session_track_info(buffer, &proto);
|
mxs_mysql_get_session_track_info(buffer, &proto);
|
||||||
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_state"), "I___W___", 8) == 0);
|
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_state"), "I___W___", 8) == 0);
|
||||||
gwbuf_free(buffer);
|
gwbuf_free(buffer);
|
||||||
//COMMIT
|
//COMMIT
|
||||||
buffer = gwbuf_alloc_and_load(PACKET_8_LEN, resultset1+PACKET_8_IDX);
|
buffer = gwbuf_alloc_and_load(PACKET_8_LEN, resultset1 + PACKET_8_IDX);
|
||||||
mxs_mysql_get_session_track_info(buffer, &proto);
|
mxs_mysql_get_session_track_info(buffer, &proto);
|
||||||
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_state"), "________", 8) == 0);
|
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_state"), "________", 8) == 0);
|
||||||
gwbuf_free(buffer);
|
gwbuf_free(buffer);
|
||||||
|
@ -410,8 +410,8 @@ int MySQLSendHandshake(DCB* dcb)
|
|||||||
* @param queue Queue of buffers to write
|
* @param queue Queue of buffers to write
|
||||||
*/
|
*/
|
||||||
int gw_MySQLWrite_client(DCB *dcb, GWBUF *queue)
|
int gw_MySQLWrite_client(DCB *dcb, GWBUF *queue)
|
||||||
{
|
{
|
||||||
if (GWBUF_IS_REPLY_OK(queue) && dcb->service->session_track_trx_state)
|
if (GWBUF_IS_REPLY_OK(queue) && dcb->service->session_track_trx_state)
|
||||||
{
|
{
|
||||||
parse_and_set_trx_state(dcb->session, queue);
|
parse_and_set_trx_state(dcb->session, queue);
|
||||||
}
|
}
|
||||||
@ -1899,18 +1899,18 @@ static bool parse_kill_query(char *query, uint64_t *thread_id_out, kill_type_t *
|
|||||||
* Get lasted autocommit value;
|
* Get lasted autocommit value;
|
||||||
* https://dev.mysql.com/worklog/task/?id=6885
|
* https://dev.mysql.com/worklog/task/?id=6885
|
||||||
* SESSION_TRACK_TRANSACTION_TYPE:
|
* SESSION_TRACK_TRANSACTION_TYPE:
|
||||||
* Get transaction boundaries
|
* Get transaction boundaries
|
||||||
* TX_EMPTY => SESSION_TRX_INACTIVE
|
* TX_EMPTY => SESSION_TRX_INACTIVE
|
||||||
* TX_EXPLICIT | TX_IMPLICIT => SESSION_TRX_ACTIVE
|
* TX_EXPLICIT | TX_IMPLICIT => SESSION_TRX_ACTIVE
|
||||||
* https://dev.mysql.com/worklog/task/?id=6885
|
* https://dev.mysql.com/worklog/task/?id=6885
|
||||||
* SESSION_TRACK_TRANSACTION_CHARACTERISTICS
|
* SESSION_TRACK_TRANSACTION_CHARACTERISTICS
|
||||||
* Get trx characteristics such as read only, read write, snapshot ...
|
* Get trx characteristics such as read only, read write, snapshot ...
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static void parse_and_set_trx_state(MXS_SESSION *ses, GWBUF *data)
|
static void parse_and_set_trx_state(MXS_SESSION *ses, GWBUF *data)
|
||||||
{
|
{
|
||||||
char *autocommit = gwbuf_get_property(data, (char *)"autocommit");
|
char *autocommit = gwbuf_get_property(data, (char *)"autocommit");
|
||||||
|
|
||||||
if (autocommit)
|
if (autocommit)
|
||||||
{
|
{
|
||||||
MXS_DEBUG("autocommit:%s", autocommit);
|
MXS_DEBUG("autocommit:%s", autocommit);
|
||||||
@ -1921,14 +1921,14 @@ static void parse_and_set_trx_state(MXS_SESSION *ses, GWBUF *data)
|
|||||||
if (strncasecmp(autocommit, "OFF", 3) == 0)
|
if (strncasecmp(autocommit, "OFF", 3) == 0)
|
||||||
{
|
{
|
||||||
session_set_autocommit(ses, false);
|
session_set_autocommit(ses, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
char *trx_state = gwbuf_get_property(data, (char *)"trx_state");
|
char *trx_state = gwbuf_get_property(data, (char *)"trx_state");
|
||||||
if (trx_state)
|
if (trx_state)
|
||||||
{
|
{
|
||||||
mysql_tx_state_t s = parse_trx_state(trx_state);
|
mysql_tx_state_t s = parse_trx_state(trx_state);
|
||||||
|
|
||||||
if (s == TX_EMPTY)
|
if (s == TX_EMPTY)
|
||||||
{
|
{
|
||||||
session_set_trx_state(ses, SESSION_TRX_INACTIVE);
|
session_set_trx_state(ses, SESSION_TRX_INACTIVE);
|
||||||
}
|
}
|
||||||
@ -1951,5 +1951,5 @@ static void parse_and_set_trx_state(MXS_SESSION *ses, GWBUF *data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
MXS_DEBUG("trx state:%s", session_trx_state_to_string(ses->trx_state));
|
MXS_DEBUG("trx state:%s", session_trx_state_to_string(ses->trx_state));
|
||||||
MXS_DEBUG("autcommit:%s", session_is_autocommit(ses)?"ON":"OFF");
|
MXS_DEBUG("autcommit:%s", session_is_autocommit(ses) ? "ON" : "OFF");
|
||||||
}
|
}
|
||||||
|
@ -1754,7 +1754,7 @@ void mxs_mysql_execute_kill_user(MXS_SESSION* issuer, const char* user, kill_typ
|
|||||||
{
|
{
|
||||||
LocalClient* client = LocalClient::create(issuer, *it);
|
LocalClient* client = LocalClient::create(issuer, *it);
|
||||||
const char* hard = (type & KT_HARD) ? "HARD " :
|
const char* hard = (type & KT_HARD) ? "HARD " :
|
||||||
(type & KT_SOFT) ? "SOFT " : "";
|
(type & KT_SOFT) ? "SOFT " : "";
|
||||||
const char* query = (type & KT_QUERY) ? "QUERY " : "";
|
const char* query = (type & KT_QUERY) ? "QUERY " : "";
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
ss << "KILL " << hard << query << "USER " << user;
|
ss << "KILL " << hard << query << "USER " << user;
|
||||||
@ -1804,38 +1804,38 @@ void mxs_mysql_parse_ok_packet(GWBUF *buff, size_t packet_offset, size_t packet_
|
|||||||
#endif
|
#endif
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case SESSION_TRACK_STATE_CHANGE:
|
case SESSION_TRACK_STATE_CHANGE:
|
||||||
case SESSION_TRACK_SCHEMA:
|
case SESSION_TRACK_SCHEMA:
|
||||||
case SESSION_TRACK_GTIDS:
|
case SESSION_TRACK_GTIDS:
|
||||||
ptr += mxs_leint_consume(&ptr);
|
ptr += mxs_leint_consume(&ptr);
|
||||||
break;
|
break;
|
||||||
case SESSION_TRACK_TRANSACTION_CHARACTERISTICS:
|
case SESSION_TRACK_TRANSACTION_CHARACTERISTICS:
|
||||||
mxs_leint_consume(&ptr); //length
|
mxs_leint_consume(&ptr); //length
|
||||||
var_value = mxs_lestr_consume_dup(&ptr);
|
var_value = mxs_lestr_consume_dup(&ptr);
|
||||||
gwbuf_add_property(buff, (char *)"trx_characteristics", var_value);
|
gwbuf_add_property(buff, (char *)"trx_characteristics", var_value);
|
||||||
MXS_FREE(var_value);
|
MXS_FREE(var_value);
|
||||||
break;
|
break;
|
||||||
case SESSION_TRACK_SYSTEM_VARIABLES:
|
case SESSION_TRACK_SYSTEM_VARIABLES:
|
||||||
mxs_leint_consume(&ptr); //lenth
|
mxs_leint_consume(&ptr); //lenth
|
||||||
// system variables like autocommit, schema, charset ...
|
// system variables like autocommit, schema, charset ...
|
||||||
var_name = mxs_lestr_consume_dup(&ptr);
|
var_name = mxs_lestr_consume_dup(&ptr);
|
||||||
var_value = mxs_lestr_consume_dup(&ptr);
|
var_value = mxs_lestr_consume_dup(&ptr);
|
||||||
gwbuf_add_property(buff, var_name, var_value);
|
gwbuf_add_property(buff, var_name, var_value);
|
||||||
MXS_DEBUG("SESSION_TRACK_SYSTEM_VARIABLES, name:%s, value:%s", var_name, var_value);
|
MXS_DEBUG("SESSION_TRACK_SYSTEM_VARIABLES, name:%s, value:%s", var_name, var_value);
|
||||||
MXS_FREE(var_name);
|
MXS_FREE(var_name);
|
||||||
MXS_FREE(var_value);
|
MXS_FREE(var_value);
|
||||||
break;
|
break;
|
||||||
case SESSION_TRACK_TRANSACTION_TYPE:
|
case SESSION_TRACK_TRANSACTION_TYPE:
|
||||||
mxs_leint_consume(&ptr); // length
|
mxs_leint_consume(&ptr); // length
|
||||||
trx_info = mxs_lestr_consume_dup(&ptr);
|
trx_info = mxs_lestr_consume_dup(&ptr);
|
||||||
MXS_DEBUG("get trx_info:%s", trx_info);
|
MXS_DEBUG("get trx_info:%s", trx_info);
|
||||||
gwbuf_add_property(buff, (char *)"trx_state", trx_info);
|
gwbuf_add_property(buff, (char *)"trx_state", trx_info);
|
||||||
MXS_FREE(trx_info);
|
MXS_FREE(trx_info);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ptr += mxs_leint_consume(&ptr);
|
ptr += mxs_leint_consume(&ptr);
|
||||||
MXS_WARNING("recieved unexpecting session track type:%d", type);
|
MXS_WARNING("recieved unexpecting session track type:%d", type);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1850,10 +1850,10 @@ void mxs_mysql_parse_ok_packet(GWBUF *buff, size_t packet_offset, size_t packet_
|
|||||||
void mxs_mysql_get_session_track_info(GWBUF *buff, MySQLProtocol *proto)
|
void mxs_mysql_get_session_track_info(GWBUF *buff, MySQLProtocol *proto)
|
||||||
{
|
{
|
||||||
size_t offset = 0;
|
size_t offset = 0;
|
||||||
uint8_t header_and_command[MYSQL_HEADER_LEN+1];
|
uint8_t header_and_command[MYSQL_HEADER_LEN + 1];
|
||||||
if (proto->server_capabilities&GW_MYSQL_CAPABILITIES_SESSION_TRACK)
|
if (proto->server_capabilities & GW_MYSQL_CAPABILITIES_SESSION_TRACK)
|
||||||
{
|
{
|
||||||
while (gwbuf_copy_data(buff, offset, MYSQL_HEADER_LEN+1, header_and_command) == (MYSQL_HEADER_LEN+1))
|
while (gwbuf_copy_data(buff, offset, MYSQL_HEADER_LEN + 1, header_and_command) == (MYSQL_HEADER_LEN + 1))
|
||||||
{
|
{
|
||||||
size_t packet_len = gw_mysql_get_byte3(header_and_command);
|
size_t packet_len = gw_mysql_get_byte3(header_and_command);
|
||||||
uint8_t cmd = header_and_command[MYSQL_COM_OFFSET];
|
uint8_t cmd = header_and_command[MYSQL_COM_OFFSET];
|
||||||
@ -1867,8 +1867,8 @@ void mxs_mysql_get_session_track_info(GWBUF *buff, MySQLProtocol *proto)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((proto->current_command == MXS_COM_QUERY ||
|
if ((proto->current_command == MXS_COM_QUERY ||
|
||||||
proto->current_command == MXS_COM_STMT_FETCH ||
|
proto->current_command == MXS_COM_STMT_FETCH ||
|
||||||
proto->current_command == MXS_COM_STMT_EXECUTE) &&
|
proto->current_command == MXS_COM_STMT_EXECUTE) &&
|
||||||
cmd == MYSQL_REPLY_EOF)
|
cmd == MYSQL_REPLY_EOF)
|
||||||
{
|
{
|
||||||
proto->num_eof_packets++;
|
proto->num_eof_packets++;
|
||||||
@ -1893,7 +1893,7 @@ void mxs_mysql_get_session_track_info(GWBUF *buff, MySQLProtocol *proto)
|
|||||||
* in the context of the current transaction
|
* in the context of the current transaction
|
||||||
* _ no non-transactional tables were read within
|
* _ no non-transactional tables were read within
|
||||||
* the current transaction so far
|
* the current transaction so far
|
||||||
*
|
*
|
||||||
* Place 3: transactional read
|
* Place 3: transactional read
|
||||||
* R one/several transactional tables were read
|
* R one/several transactional tables were read
|
||||||
* _ no transactional tables were read yet
|
* _ no transactional tables were read yet
|
||||||
@ -1905,7 +1905,7 @@ void mxs_mysql_get_session_track_info(GWBUF *buff, MySQLProtocol *proto)
|
|||||||
* Place 5: transactional write
|
* Place 5: transactional write
|
||||||
* W one/several transactional tables were written to
|
* W one/several transactional tables were written to
|
||||||
* _ no transactional tables were written to yet
|
* _ no transactional tables were written to yet
|
||||||
*
|
*
|
||||||
* Place 6: unsafe statements
|
* Place 6: unsafe statements
|
||||||
* s one/several unsafe statements (such as UUID())
|
* s one/several unsafe statements (such as UUID())
|
||||||
* were used.
|
* were used.
|
||||||
@ -1914,7 +1914,7 @@ void mxs_mysql_get_session_track_info(GWBUF *buff, MySQLProtocol *proto)
|
|||||||
* Place 7: result-set
|
* Place 7: result-set
|
||||||
* S a result set was sent to the client
|
* S a result set was sent to the client
|
||||||
* _ statement had no result-set
|
* _ statement had no result-set
|
||||||
*
|
*
|
||||||
* Place 8: LOCKed TABLES
|
* Place 8: LOCKed TABLES
|
||||||
* L tables were explicitly locked using LOCK TABLES
|
* L tables were explicitly locked using LOCK TABLES
|
||||||
* _ LOCK TABLES is not active in this session
|
* _ LOCK TABLES is not active in this session
|
||||||
@ -1927,38 +1927,39 @@ mysql_tx_state_t parse_trx_state(const char *str)
|
|||||||
{
|
{
|
||||||
switch (*str)
|
switch (*str)
|
||||||
{
|
{
|
||||||
case 'T':
|
case 'T':
|
||||||
s |= TX_EXPLICIT;
|
s |= TX_EXPLICIT;
|
||||||
break;
|
break;
|
||||||
case 'I':
|
case 'I':
|
||||||
s |= TX_IMPLICIT;
|
s |= TX_IMPLICIT;
|
||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
s |= TX_READ_UNSAFE;
|
s |= TX_READ_UNSAFE;
|
||||||
break;
|
break;
|
||||||
case 'R':
|
case 'R':
|
||||||
s |= TX_READ_TRX;
|
s |= TX_READ_TRX;
|
||||||
break;
|
break;
|
||||||
case 'w':
|
case 'w':
|
||||||
s |= TX_WRITE_UNSAFE;
|
s |= TX_WRITE_UNSAFE;
|
||||||
break;
|
break;
|
||||||
case 'W':
|
case 'W':
|
||||||
s |= TX_WRITE_TRX;
|
s |= TX_WRITE_TRX;
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
s |= TX_STMT_UNSAFE;
|
s |= TX_STMT_UNSAFE;
|
||||||
break;
|
break;
|
||||||
case 'S':
|
case 'S':
|
||||||
s |= TX_RESULT_SET;
|
s |= TX_RESULT_SET;
|
||||||
break;
|
break;
|
||||||
case 'L':
|
case 'L':
|
||||||
s |= TX_LOCKED_TABLES;
|
s |= TX_LOCKED_TABLES;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
} while(*(str++) != 0);
|
}
|
||||||
|
while (*(str++) != 0);
|
||||||
|
|
||||||
return (mysql_tx_state_t)s;
|
return (mysql_tx_state_t)s;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user