diff --git a/libmariadb/mariadb_lib.c b/libmariadb/mariadb_lib.c index fc3f179..009d7be 100644 --- a/libmariadb/mariadb_lib.c +++ b/libmariadb/mariadb_lib.c @@ -2091,9 +2091,8 @@ get_info: char *data; old_pos= pos; si_type= (enum enum_session_state_type)net_field_length(&pos); - switch(si_type) { + switch(si_type) { case SESSION_TRACK_SCHEMA: - case SESSION_TRACK_STATE_CHANGE: case SESSION_TRACK_TRANSACTION_CHARACTERISTICS: case SESSION_TRACK_SYSTEM_VARIABLES: net_field_length(&pos); /* ignore total length, item length will follow next */ @@ -2156,6 +2155,24 @@ get_info: } } break; + case SESSION_TRACK_STATE_CHANGE: + plen = net_field_length(&pos); + if (!ma_multi_malloc(0, + &session_item, sizeof(LIST), + &str, sizeof(MYSQL_LEX_STRING), + &data, plen, + NULL)) + { + SET_CLIENT_ERROR(mysql, CR_OUT_OF_MEMORY, SQLSTATE_UNKNOWN, 0); + return -1; + } + str->length= plen; + str->str= data; + memcpy(str->str, (char *)pos, plen); + pos+= plen; + session_item->data= str; + mysql->extension->session_state[si_type].list= list_add(mysql->extension->session_state[si_type].list, session_item); + break; default: /* not supported yet */ plen= net_field_length(&pos);