[CP] fix ash report bug
This commit is contained in:
21
deps/oblib/src/lib/mysqlclient/ob_mysql_result.h
vendored
21
deps/oblib/src/lib/mysqlclient/ob_mysql_result.h
vendored
@ -862,6 +862,27 @@
|
||||
} \
|
||||
}
|
||||
|
||||
#define EXTRACT_STRBUF_FIELD_MYSQL_SKIP_RET_AND_TRUNCATION(result, column_name, field, max_length, real_length) \
|
||||
if (OB_SUCC(ret)) \
|
||||
{ \
|
||||
ObString str_value; \
|
||||
if (OB_SUCCESS == (ret = (result).get_varchar(column_name, str_value))) \
|
||||
{ \
|
||||
real_length = MIN(str_value.length(), max_length); \
|
||||
MEMCPY(field, str_value.ptr(), real_length); \
|
||||
field[real_length] = '\0'; \
|
||||
} \
|
||||
else if (OB_ERR_NULL_VALUE == ret || OB_ERR_COLUMN_NOT_FOUND == ret) \
|
||||
{ \
|
||||
ret = OB_SUCCESS; \
|
||||
real_length = 0; \
|
||||
field[0] = '\0'; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
SQL_LOG(WARN, "fail to extract strbuf field mysql. ", K(ret)); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define EXTRACT_STRBUF_FIELD_TO_CLASS_MYSQL_SKIP_RET(result, column_name, class_obj, max_length) \
|
||||
if (OB_SUCC(ret)) \
|
||||
|
@ -1295,8 +1295,8 @@ int ObDbmsWorkloadRepository::print_ash_top_sql_with_event(
|
||||
|
||||
tmp_real_str_len = 0;
|
||||
char query_sql[64] = "";
|
||||
EXTRACT_STRBUF_FIELD_MYSQL_SKIP_RET(
|
||||
*result, "QUERY_SQL", query_sql, 64, tmp_real_str_len);
|
||||
EXTRACT_STRBUF_FIELD_MYSQL_SKIP_RET_AND_TRUNCATION(
|
||||
*result, "QUERY_SQL", query_sql, 63, tmp_real_str_len);
|
||||
if (OB_SUCC(ret)) {
|
||||
const char *column_content[] = {
|
||||
sql_id, plan_id_char, event_cnt_char, event, event_radio_char, query_sql};
|
||||
@ -1414,8 +1414,8 @@ int ObDbmsWorkloadRepository::print_ash_top_sql_with_blocking_event(
|
||||
|
||||
tmp_real_str_len = 0;
|
||||
char query_sql[64] = "";
|
||||
EXTRACT_STRBUF_FIELD_MYSQL_SKIP_RET(
|
||||
*result, "QUERY_SQL", query_sql, 64, tmp_real_str_len);
|
||||
EXTRACT_STRBUF_FIELD_MYSQL_SKIP_RET_AND_TRUNCATION(
|
||||
*result, "QUERY_SQL", query_sql, 63, tmp_real_str_len);
|
||||
if (OB_SUCC(ret)) {
|
||||
const char *column_content[] = {
|
||||
sql_id, plan_id_char, event_cnt_char, event, event_radio_char, query_sql};
|
||||
@ -1517,8 +1517,8 @@ int ObDbmsWorkloadRepository::print_ash_sql_text_list(
|
||||
HEAP_VAR(char[4005], sql_text)
|
||||
{
|
||||
sql_text[0] = '\0';
|
||||
EXTRACT_STRBUF_FIELD_MYSQL_SKIP_RET(
|
||||
*result, "QUERY_SQL", sql_text, 4005, tmp_real_str_len);
|
||||
EXTRACT_STRBUF_FIELD_MYSQL_SKIP_RET_AND_TRUNCATION(
|
||||
*result, "QUERY_SQL", sql_text, 4000, tmp_real_str_len);
|
||||
if (OB_FAIL(ret)) {
|
||||
} else if (OB_FAIL(buff.append("SQL Text: "))) {
|
||||
LOG_WARN("failed to push string into buff", K(ret));
|
||||
|
Reference in New Issue
Block a user