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,
|
||||
0x16, 0x00, 0x01, 0x00, 0x00, 0x17, 0x00, 0x01,
|
||||
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[] =
|
||||
{
|
||||
0x28, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
|
||||
0x40, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x0F, 0x0A,
|
||||
0x61, 0x75, 0x74, 0x6F, 0x63, 0x6F, 0x6D, 0x6D,
|
||||
0x69, 0x74, 0x03, 0x4F, 0x46, 0x46, 0x02, 0x01,
|
||||
0x28, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
|
||||
0x40, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x0F, 0x0A,
|
||||
0x61, 0x75, 0x74, 0x6F, 0x63, 0x6F, 0x6D, 0x6D,
|
||||
0x69, 0x74, 0x03, 0x4F, 0x46, 0x46, 0x02, 0x01,
|
||||
0x31, 0x05, 0x09, 0x08, 0x49, 0x5F, 0x52, 0x5F,
|
||||
0x5F, 0x5F, 0x53, 0x5F, 0x1D, 0x00, 0x00, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
|
||||
0x14, 0x00, 0x0F, 0x0A, 0x61, 0x75, 0x74, 0x6F,
|
||||
0x63, 0x6F, 0x6D, 0x6D, 0x69, 0x74, 0x03, 0x4F,
|
||||
0x46, 0x46, 0x02, 0x01, 0x31, 0x07, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x14, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
|
||||
0x40, 0x00, 0x00, 0x00, 0x0B, 0x05, 0x09, 0x08,
|
||||
0x49, 0x5F, 0x5F, 0x5F, 0x57, 0x5F, 0x5F, 0x5F,
|
||||
0x01, 0x00, 0x00, 0x01, 0x04, 0x20, 0x00, 0x00,
|
||||
0x02, 0x03, 0x64, 0x65, 0x66, 0x04, 0x74, 0x65,
|
||||
0x73, 0x74, 0x02, 0x74, 0x31, 0x02, 0x74, 0x31,
|
||||
0x01, 0x61, 0x01, 0x61, 0x0C, 0x21, 0x00, 0x3C,
|
||||
0x00, 0x00, 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x20, 0x00, 0x00, 0x03, 0x03, 0x64, 0x65,
|
||||
0x66, 0x04, 0x74, 0x65, 0x73, 0x74, 0x02, 0x74,
|
||||
0x31, 0x02, 0x74, 0x31, 0x01, 0x62, 0x01, 0x62,
|
||||
0x0C, 0x3F, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
|
||||
0x04, 0x03, 0x64, 0x65, 0x66, 0x04, 0x74, 0x65,
|
||||
0x73, 0x74, 0x02, 0x74, 0x31, 0x02, 0x74, 0x31,
|
||||
0x01, 0x63, 0x01, 0x63, 0x0C, 0x3F, 0x00, 0x0B,
|
||||
0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x20, 0x00, 0x00, 0x05, 0x03, 0x64, 0x65,
|
||||
0x66, 0x04, 0x74, 0x65, 0x73, 0x74, 0x02, 0x74,
|
||||
0x31, 0x02, 0x74, 0x31, 0x01, 0x64, 0x01, 0x64,
|
||||
0x0C, 0x3F, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
|
||||
0x06, 0xFE, 0x00, 0x00, 0x21, 0x00, 0x05, 0x00,
|
||||
0x5F, 0x5F, 0x53, 0x5F, 0x1D, 0x00, 0x00, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
|
||||
0x14, 0x00, 0x0F, 0x0A, 0x61, 0x75, 0x74, 0x6F,
|
||||
0x63, 0x6F, 0x6D, 0x6D, 0x69, 0x74, 0x03, 0x4F,
|
||||
0x46, 0x46, 0x02, 0x01, 0x31, 0x07, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x14, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
|
||||
0x40, 0x00, 0x00, 0x00, 0x0B, 0x05, 0x09, 0x08,
|
||||
0x49, 0x5F, 0x5F, 0x5F, 0x57, 0x5F, 0x5F, 0x5F,
|
||||
0x01, 0x00, 0x00, 0x01, 0x04, 0x20, 0x00, 0x00,
|
||||
0x02, 0x03, 0x64, 0x65, 0x66, 0x04, 0x74, 0x65,
|
||||
0x73, 0x74, 0x02, 0x74, 0x31, 0x02, 0x74, 0x31,
|
||||
0x01, 0x61, 0x01, 0x61, 0x0C, 0x21, 0x00, 0x3C,
|
||||
0x00, 0x00, 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x20, 0x00, 0x00, 0x03, 0x03, 0x64, 0x65,
|
||||
0x66, 0x04, 0x74, 0x65, 0x73, 0x74, 0x02, 0x74,
|
||||
0x31, 0x02, 0x74, 0x31, 0x01, 0x62, 0x01, 0x62,
|
||||
0x0C, 0x3F, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
|
||||
0x04, 0x03, 0x64, 0x65, 0x66, 0x04, 0x74, 0x65,
|
||||
0x73, 0x74, 0x02, 0x74, 0x31, 0x02, 0x74, 0x31,
|
||||
0x01, 0x63, 0x01, 0x63, 0x0C, 0x3F, 0x00, 0x0B,
|
||||
0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x20, 0x00, 0x00, 0x05, 0x03, 0x64, 0x65,
|
||||
0x66, 0x04, 0x74, 0x65, 0x73, 0x74, 0x02, 0x74,
|
||||
0x31, 0x02, 0x74, 0x31, 0x01, 0x64, 0x01, 0x64,
|
||||
0x0C, 0x3F, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
|
||||
0x06, 0xFE, 0x00, 0x00, 0x21, 0x00, 0x05, 0x00,
|
||||
0x00, 0x07, 0xFE, 0x00, 0x00, 0x21, 0x00
|
||||
};
|
||||
|
||||
@ -170,46 +170,46 @@ void test1()
|
||||
GWBUF *buffer;
|
||||
proto.server_capabilities = GW_MYSQL_CAPABILITIES_SESSION_TRACK;
|
||||
proto.num_eof_packets = 0;
|
||||
ss_dfprintf(stderr,"test_session_track : Functional tests.\n");
|
||||
ss_dfprintf(stderr, "test_session_track : Functional tests.\n");
|
||||
//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);
|
||||
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_state"), "T_______", 8) == 0);
|
||||
gwbuf_free(buffer);
|
||||
//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);
|
||||
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_state"), "________", 8) == 0);
|
||||
gwbuf_free(buffer);
|
||||
//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);
|
||||
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_state"), "T_______", 8) == 0);
|
||||
gwbuf_free(buffer);
|
||||
//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);
|
||||
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);
|
||||
//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);
|
||||
ss_dassert(gwbuf_get_property(buffer, (char *)"trx_characteristics") == NULL);
|
||||
ss_dassert(gwbuf_get_property(buffer, (char *)"trx_state") == NULL);
|
||||
gwbuf_free(buffer);
|
||||
//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);
|
||||
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"autocommit"), "OFF", 3) == 0);
|
||||
gwbuf_free(buffer);
|
||||
//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);
|
||||
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_state"), "I___W___", 8) == 0);
|
||||
gwbuf_free(buffer);
|
||||
//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);
|
||||
ss_dassert(strncmp(gwbuf_get_property(buffer, (char *)"trx_state"), "________", 8) == 0);
|
||||
gwbuf_free(buffer);
|
||||
|
@ -410,8 +410,8 @@ int MySQLSendHandshake(DCB* dcb)
|
||||
* @param queue Queue of buffers to write
|
||||
*/
|
||||
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);
|
||||
}
|
||||
@ -1899,18 +1899,18 @@ static bool parse_kill_query(char *query, uint64_t *thread_id_out, kill_type_t *
|
||||
* Get lasted autocommit value;
|
||||
* https://dev.mysql.com/worklog/task/?id=6885
|
||||
* SESSION_TRACK_TRANSACTION_TYPE:
|
||||
* Get transaction boundaries
|
||||
* Get transaction boundaries
|
||||
* TX_EMPTY => SESSION_TRX_INACTIVE
|
||||
* TX_EXPLICIT | TX_IMPLICIT => SESSION_TRX_ACTIVE
|
||||
* https://dev.mysql.com/worklog/task/?id=6885
|
||||
* SESSION_TRACK_TRANSACTION_CHARACTERISTICS
|
||||
* Get trx characteristics such as read only, read write, snapshot ...
|
||||
*
|
||||
*/
|
||||
*
|
||||
*/
|
||||
static void parse_and_set_trx_state(MXS_SESSION *ses, GWBUF *data)
|
||||
{
|
||||
char *autocommit = gwbuf_get_property(data, (char *)"autocommit");
|
||||
|
||||
|
||||
if (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)
|
||||
{
|
||||
session_set_autocommit(ses, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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);
|
||||
|
||||
if (s == TX_EMPTY)
|
||||
if (s == TX_EMPTY)
|
||||
{
|
||||
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("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);
|
||||
const char* hard = (type & KT_HARD) ? "HARD " :
|
||||
(type & KT_SOFT) ? "SOFT " : "";
|
||||
(type & KT_SOFT) ? "SOFT " : "";
|
||||
const char* query = (type & KT_QUERY) ? "QUERY " : "";
|
||||
std::stringstream ss;
|
||||
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
|
||||
switch (type)
|
||||
{
|
||||
case SESSION_TRACK_STATE_CHANGE:
|
||||
case SESSION_TRACK_SCHEMA:
|
||||
case SESSION_TRACK_GTIDS:
|
||||
ptr += mxs_leint_consume(&ptr);
|
||||
break;
|
||||
case SESSION_TRACK_TRANSACTION_CHARACTERISTICS:
|
||||
mxs_leint_consume(&ptr); //length
|
||||
var_value = mxs_lestr_consume_dup(&ptr);
|
||||
gwbuf_add_property(buff, (char *)"trx_characteristics", var_value);
|
||||
MXS_FREE(var_value);
|
||||
break;
|
||||
case SESSION_TRACK_SYSTEM_VARIABLES:
|
||||
mxs_leint_consume(&ptr); //lenth
|
||||
// system variables like autocommit, schema, charset ...
|
||||
var_name = mxs_lestr_consume_dup(&ptr);
|
||||
var_value = mxs_lestr_consume_dup(&ptr);
|
||||
gwbuf_add_property(buff, 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_value);
|
||||
break;
|
||||
case SESSION_TRACK_TRANSACTION_TYPE:
|
||||
mxs_leint_consume(&ptr); // length
|
||||
trx_info = mxs_lestr_consume_dup(&ptr);
|
||||
MXS_DEBUG("get trx_info:%s", trx_info);
|
||||
gwbuf_add_property(buff, (char *)"trx_state", trx_info);
|
||||
MXS_FREE(trx_info);
|
||||
break;
|
||||
default:
|
||||
ptr += mxs_leint_consume(&ptr);
|
||||
MXS_WARNING("recieved unexpecting session track type:%d", type);
|
||||
break;
|
||||
case SESSION_TRACK_STATE_CHANGE:
|
||||
case SESSION_TRACK_SCHEMA:
|
||||
case SESSION_TRACK_GTIDS:
|
||||
ptr += mxs_leint_consume(&ptr);
|
||||
break;
|
||||
case SESSION_TRACK_TRANSACTION_CHARACTERISTICS:
|
||||
mxs_leint_consume(&ptr); //length
|
||||
var_value = mxs_lestr_consume_dup(&ptr);
|
||||
gwbuf_add_property(buff, (char *)"trx_characteristics", var_value);
|
||||
MXS_FREE(var_value);
|
||||
break;
|
||||
case SESSION_TRACK_SYSTEM_VARIABLES:
|
||||
mxs_leint_consume(&ptr); //lenth
|
||||
// system variables like autocommit, schema, charset ...
|
||||
var_name = mxs_lestr_consume_dup(&ptr);
|
||||
var_value = mxs_lestr_consume_dup(&ptr);
|
||||
gwbuf_add_property(buff, 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_value);
|
||||
break;
|
||||
case SESSION_TRACK_TRANSACTION_TYPE:
|
||||
mxs_leint_consume(&ptr); // length
|
||||
trx_info = mxs_lestr_consume_dup(&ptr);
|
||||
MXS_DEBUG("get trx_info:%s", trx_info);
|
||||
gwbuf_add_property(buff, (char *)"trx_state", trx_info);
|
||||
MXS_FREE(trx_info);
|
||||
break;
|
||||
default:
|
||||
ptr += mxs_leint_consume(&ptr);
|
||||
MXS_WARNING("recieved unexpecting session track type:%d", type);
|
||||
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)
|
||||
{
|
||||
size_t offset = 0;
|
||||
uint8_t header_and_command[MYSQL_HEADER_LEN+1];
|
||||
if (proto->server_capabilities&GW_MYSQL_CAPABILITIES_SESSION_TRACK)
|
||||
uint8_t header_and_command[MYSQL_HEADER_LEN + 1];
|
||||
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);
|
||||
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 ||
|
||||
proto->current_command == MXS_COM_STMT_FETCH ||
|
||||
proto->current_command == MXS_COM_STMT_EXECUTE) &&
|
||||
proto->current_command == MXS_COM_STMT_FETCH ||
|
||||
proto->current_command == MXS_COM_STMT_EXECUTE) &&
|
||||
cmd == MYSQL_REPLY_EOF)
|
||||
{
|
||||
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
|
||||
* _ no non-transactional tables were read within
|
||||
* the current transaction so far
|
||||
*
|
||||
*
|
||||
* Place 3: transactional read
|
||||
* R one/several transactional tables were read
|
||||
* _ 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
|
||||
* W one/several transactional tables were written to
|
||||
* _ no transactional tables were written to yet
|
||||
*
|
||||
*
|
||||
* Place 6: unsafe statements
|
||||
* s one/several unsafe statements (such as UUID())
|
||||
* were used.
|
||||
@ -1914,7 +1914,7 @@ void mxs_mysql_get_session_track_info(GWBUF *buff, MySQLProtocol *proto)
|
||||
* Place 7: result-set
|
||||
* S a result set was sent to the client
|
||||
* _ statement had no result-set
|
||||
*
|
||||
*
|
||||
* Place 8: LOCKed TABLES
|
||||
* L tables were explicitly locked using LOCK TABLES
|
||||
* _ LOCK TABLES is not active in this session
|
||||
@ -1927,38 +1927,39 @@ mysql_tx_state_t parse_trx_state(const char *str)
|
||||
{
|
||||
switch (*str)
|
||||
{
|
||||
case 'T':
|
||||
s |= TX_EXPLICIT;
|
||||
break;
|
||||
case 'I':
|
||||
s |= TX_IMPLICIT;
|
||||
break;
|
||||
case 'r':
|
||||
s |= TX_READ_UNSAFE;
|
||||
break;
|
||||
case 'R':
|
||||
s |= TX_READ_TRX;
|
||||
break;
|
||||
case 'w':
|
||||
s |= TX_WRITE_UNSAFE;
|
||||
break;
|
||||
case 'W':
|
||||
s |= TX_WRITE_TRX;
|
||||
break;
|
||||
case 's':
|
||||
s |= TX_STMT_UNSAFE;
|
||||
break;
|
||||
case 'S':
|
||||
s |= TX_RESULT_SET;
|
||||
break;
|
||||
case 'L':
|
||||
s |= TX_LOCKED_TABLES;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
case 'T':
|
||||
s |= TX_EXPLICIT;
|
||||
break;
|
||||
case 'I':
|
||||
s |= TX_IMPLICIT;
|
||||
break;
|
||||
case 'r':
|
||||
s |= TX_READ_UNSAFE;
|
||||
break;
|
||||
case 'R':
|
||||
s |= TX_READ_TRX;
|
||||
break;
|
||||
case 'w':
|
||||
s |= TX_WRITE_UNSAFE;
|
||||
break;
|
||||
case 'W':
|
||||
s |= TX_WRITE_TRX;
|
||||
break;
|
||||
case 's':
|
||||
s |= TX_STMT_UNSAFE;
|
||||
break;
|
||||
case 'S':
|
||||
s |= TX_RESULT_SET;
|
||||
break;
|
||||
case 'L':
|
||||
s |= TX_LOCKED_TABLES;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
} while(*(str++) != 0);
|
||||
}
|
||||
while (*(str++) != 0);
|
||||
|
||||
return (mysql_tx_state_t)s;
|
||||
}
|
||||
|
Reference in New Issue
Block a user