diff --git a/src/pl/ob_pl.cpp b/src/pl/ob_pl.cpp index 1f29688f8c..ad70296330 100644 --- a/src/pl/ob_pl.cpp +++ b/src/pl/ob_pl.cpp @@ -584,12 +584,14 @@ int ObPLContext::init(ObSQLSessionInfo &session_info, routine->get_has_parallel_affect_factor()) { // 并行场景下不能创建stash savepoint, 只有当udf/trigger内部有tcl语句时, stash savepoint才有意义 // udf内部有tcl语句时,该标记为true - last_insert_id_ = session_info.get_local_last_insert_id(); const ObString stash_savepoint_name("PL stash savepoint"); OZ (ObSqlTransControl::create_stash_savepoint(ctx, stash_savepoint_name)); OX (has_stash_savepoint_ = true); } - if (is_autonomous_) { + if (OB_SUCC(ret) && is_function_or_trigger && lib::is_mysql_mode()) { + last_insert_id_ = session_info.get_local_last_insert_id(); + } + if (OB_SUCC(ret) && is_autonomous_) { has_inner_dml_write_ = session_info.has_exec_inner_dml(); session_info.set_has_exec_inner_dml(false); diff --git a/src/sql/resolver/ob_resolver_utils.cpp b/src/sql/resolver/ob_resolver_utils.cpp index c2bdc01256..582697f153 100644 --- a/src/sql/resolver/ob_resolver_utils.cpp +++ b/src/sql/resolver/ob_resolver_utils.cpp @@ -6495,6 +6495,10 @@ int ObResolverUtils::set_parallel_info(sql::ObSQLSessionInfo &session_info, OZ (schema_guard.get_routine_info(tenant_id, udf_raw_expr.get_udf_id(), routine_info)); + if (OB_FAIL(ret)) { + ret = OB_ERR_PRIVATE_UDF_USE_IN_SQL; + LOG_WARN("function 'string' may not be used in SQL", K(ret), K(udf_raw_expr)); + } } if (OB_SUCC(ret) && OB_NOT_NULL(routine_info)) {