[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) \
|
#define EXTRACT_STRBUF_FIELD_TO_CLASS_MYSQL_SKIP_RET(result, column_name, class_obj, max_length) \
|
||||||
if (OB_SUCC(ret)) \
|
if (OB_SUCC(ret)) \
|
||||||
|
@ -1295,8 +1295,8 @@ int ObDbmsWorkloadRepository::print_ash_top_sql_with_event(
|
|||||||
|
|
||||||
tmp_real_str_len = 0;
|
tmp_real_str_len = 0;
|
||||||
char query_sql[64] = "";
|
char query_sql[64] = "";
|
||||||
EXTRACT_STRBUF_FIELD_MYSQL_SKIP_RET(
|
EXTRACT_STRBUF_FIELD_MYSQL_SKIP_RET_AND_TRUNCATION(
|
||||||
*result, "QUERY_SQL", query_sql, 64, tmp_real_str_len);
|
*result, "QUERY_SQL", query_sql, 63, tmp_real_str_len);
|
||||||
if (OB_SUCC(ret)) {
|
if (OB_SUCC(ret)) {
|
||||||
const char *column_content[] = {
|
const char *column_content[] = {
|
||||||
sql_id, plan_id_char, event_cnt_char, event, event_radio_char, query_sql};
|
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;
|
tmp_real_str_len = 0;
|
||||||
char query_sql[64] = "";
|
char query_sql[64] = "";
|
||||||
EXTRACT_STRBUF_FIELD_MYSQL_SKIP_RET(
|
EXTRACT_STRBUF_FIELD_MYSQL_SKIP_RET_AND_TRUNCATION(
|
||||||
*result, "QUERY_SQL", query_sql, 64, tmp_real_str_len);
|
*result, "QUERY_SQL", query_sql, 63, tmp_real_str_len);
|
||||||
if (OB_SUCC(ret)) {
|
if (OB_SUCC(ret)) {
|
||||||
const char *column_content[] = {
|
const char *column_content[] = {
|
||||||
sql_id, plan_id_char, event_cnt_char, event, event_radio_char, query_sql};
|
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)
|
HEAP_VAR(char[4005], sql_text)
|
||||||
{
|
{
|
||||||
sql_text[0] = '\0';
|
sql_text[0] = '\0';
|
||||||
EXTRACT_STRBUF_FIELD_MYSQL_SKIP_RET(
|
EXTRACT_STRBUF_FIELD_MYSQL_SKIP_RET_AND_TRUNCATION(
|
||||||
*result, "QUERY_SQL", sql_text, 4005, tmp_real_str_len);
|
*result, "QUERY_SQL", sql_text, 4000, tmp_real_str_len);
|
||||||
if (OB_FAIL(ret)) {
|
if (OB_FAIL(ret)) {
|
||||||
} else if (OB_FAIL(buff.append("SQL Text: "))) {
|
} else if (OB_FAIL(buff.append("SQL Text: "))) {
|
||||||
LOG_WARN("failed to push string into buff", K(ret));
|
LOG_WARN("failed to push string into buff", K(ret));
|
||||||
|
Reference in New Issue
Block a user