[CP] [to #53512507]fixed cursor exec param in process_record

This commit is contained in:
LiuYoung00
2023-12-13 04:47:27 +00:00
committed by ob-robot
parent b51301d9c4
commit cb877daa13
4 changed files with 53 additions and 14 deletions

View File

@ -21,6 +21,7 @@
#include "observer/ob_server_struct.h"
#include "observer/mysql/ob_query_retry_ctrl.h"
#include "observer/mysql/ob_sync_cmd_driver.h"
#include "observer/mysql/obmp_stmt_execute.h"
#include "sql/parser/ob_parser.h"
#include "sql/resolver/expr/ob_raw_expr_util.h"
#include "sql/resolver/ob_stmt_resolver.h"
@ -1728,7 +1729,8 @@ int ObSPIService::spi_inner_execute(ObPLExecCtx *ctx,
exec_timestamp,
true,
sql != NULL ? sql : ps_sql,
true);
true,
spi_result.get_exec_params_str_ptr());
session_info->get_raw_audit_record().exec_record_ = record_bk;
session_info->get_raw_audit_record().try_cnt_ = try_cnt;
} else {
@ -1952,7 +1954,8 @@ int ObSPIService::dbms_cursor_execute(ObPLExecCtx *ctx,
exec_timestamp,
true,
ps_sql,
true);
true,
spi_result.get_exec_params_str_ptr());
} else {
LOG_DEBUG("result set is not inited, do not process record",
K(ret), K(ps_sql), K(sql_stmt), K(stmt_type));
@ -2928,7 +2931,8 @@ int ObSPIService::spi_execute_immediate(ObPLExecCtx *ctx,
exec_timestamp,
true,
0 == param_count ? sql_str.string() : ps_sql,
true);
true,
spi_result.get_exec_params_str_ptr());
session->get_raw_audit_record().exec_record_ = record_bk;
session->get_raw_audit_record().try_cnt_ = try_cnt;
} else {
@ -3773,6 +3777,8 @@ int ObSPIService::dbms_cursor_open(ObPLExecCtx *ctx,
exec_timestamp.exec_type_ = cursor.is_ps_cursor() ? sql::PSCursor : sql::DbmsCursor;
ObWaitEventDesc max_wait_desc;
ObWaitEventStat total_wait_desc;
ObArenaAllocator exec_param_alloc;
ObString exec_param_str;
const bool enable_perf_event = lib::is_diagnose_info_enabled();
const bool enable_sql_audit = GCONF.enable_sql_audit
&& ctx->exec_ctx_->get_my_session()->get_local_ob_enable_sql_audit();
@ -3804,6 +3810,17 @@ int ObSPIService::dbms_cursor_open(ObPLExecCtx *ctx,
}
}
if (OB_SUCC(ret) && exec_params.count() > 0) {
char *tmp_ptr = NULL;
int64_t tmp_len = 0;
OZ (ObMPStmtExecute::store_params_value_to_str(exec_param_alloc,
*session,
&exec_params,
tmp_ptr,
tmp_len));
OX (exec_param_str.assign(tmp_ptr, tmp_len));
}
if (OB_FAIL(ret)) {
// do nothing
} else if (!for_update && use_stream) {
@ -3916,7 +3933,8 @@ int ObSPIService::dbms_cursor_open(ObPLExecCtx *ctx,
exec_timestamp,
true,
(exec_params.count() > 0 || cursor.is_ps_cursor()) ? ps_sql : sql_str,
true);
true,
&exec_param_str);
session_info->get_raw_audit_record().exec_record_ = record_bk;
session_info->get_raw_audit_record().try_cnt_ = try_cnt;
}
@ -4021,7 +4039,8 @@ int ObSPIService::dbms_cursor_open(ObPLExecCtx *ctx,
exec_timestamp,
true,
(exec_params.count() > 0 || cursor.is_ps_cursor()) ? ps_sql : sql_str,
true);
true,
&exec_param_str);
session_info->get_raw_audit_record().exec_record_ = record_bk;
session_info->get_raw_audit_record().try_cnt_ = retry_cnt;
}
@ -4248,7 +4267,8 @@ int ObSPIService::do_cursor_fetch(ObPLExecCtx *ctx,
exec_timestamp,
true,
ObString(),
true);
true,
spi_result->get_exec_params_str_ptr());
session_info->get_raw_audit_record().exec_record_ = record_bk;
session_info->get_raw_audit_record().try_cnt_ = try_cnt;
}
@ -6323,6 +6343,20 @@ int ObSPIService::inner_open(ObPLExecCtx *ctx,
OZ (construct_exec_params(ctx, param_allocator, param_exprs, param_count,
into_exprs, into_count, exec_params, out_params, is_forall),
K(sql), K(type), K(param_count), K(out_params), K(exec_params));
if (OB_SUCC(ret)
&& OB_NOT_NULL(ctx)
&& OB_NOT_NULL(ctx->exec_ctx_)
&& OB_NOT_NULL(ctx->exec_ctx_->get_my_session())) {
// add exec_param_info for sql_audit
char *tmp_ptr = NULL;
int64_t tmp_len = 0;
OZ (ObMPStmtExecute::store_params_value_to_str(spi_result.get_allocaor(),
*ctx->exec_ctx_->get_my_session(),
&exec_params,
tmp_ptr,
tmp_len));
OX (spi_result.get_exec_params_str_ptr()->assign(tmp_ptr, tmp_len));
}
}
if (OB_SUCC(ret) && is_forall) {