From 830b1e3d76b2dfd0018a13e1544d770b1162e742 Mon Sep 17 00:00:00 2001 From: obdev Date: Mon, 13 Mar 2023 08:41:04 +0000 Subject: [PATCH] fix param info field is not deep copied --- src/observer/virtual_table/ob_gv_sql.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/observer/virtual_table/ob_gv_sql.cpp b/src/observer/virtual_table/ob_gv_sql.cpp index 8c2462a977..e1f076c304 100644 --- a/src/observer/virtual_table/ob_gv_sql.cpp +++ b/src/observer/virtual_table/ob_gv_sql.cpp @@ -346,10 +346,17 @@ int ObGVSql::fill_cells(const ObILibCacheObject *cache_obj, const ObPlanCache &p } case share::ALL_VIRTUAL_PLAN_STAT_CDE::PARAM_INFOS: { if (cache_obj->is_sql_crsr()) { - cells[i].set_lob_value(ObLongTextType, plan->stat_.param_infos_.ptr(), - static_cast(plan->stat_.param_infos_.length())); - cells[i].set_collation_type(ObCharset::get_default_collation( - ObCharset::get_default_charset())); + ObString param_info_lob_str; + if (OB_FAIL(ob_write_string(*allocator_, + plan->stat_.param_infos_, + param_info_lob_str))) { + SERVER_LOG(ERROR, "copy param_infos failed", K(ret)); + } else { + cells[i].set_lob_value(ObLongTextType, param_info_lob_str.ptr(), + static_cast(param_info_lob_str.length())); + cells[i].set_collation_type(ObCharset::get_default_collation( + ObCharset::get_default_charset())); + } } else { cells[i].set_null(); }