[CP] [to #54195891]cached dblink connection on the session when PL execute

This commit is contained in:
seuwebber
2024-02-26 12:45:53 +00:00
committed by ob-robot
parent 700130ad05
commit 71e8253ad4
2 changed files with 4 additions and 13 deletions

View File

@ -56,7 +56,7 @@ int ObPLDbLinkGuard::get_routine_infos_with_synonym(sql::ObSQLSessionInfo &sessi
int64_t object_type;
OZ (schema_guard.get_dblink_schema(tenant_id, dblink_name, dblink_schema), tenant_id, dblink_name);
OV (OB_NOT_NULL(dblink_schema), OB_DBLINK_NOT_EXIST_TO_ACCESS, dblink_name);
OZ (ObPLDblinkUtil::init_dblink(dblink_proxy, dblink_conn, session_info, schema_guard, dblink_name, link_type));
OZ (ObPLDblinkUtil::init_dblink(dblink_proxy, dblink_conn, session_info, schema_guard, dblink_name, link_type, false));
CK (OB_NOT_NULL(dblink_proxy));
CK (OB_NOT_NULL(dblink_conn));
OZ (ObPLDblinkUtil::print_full_name(alloc_, full_name, part1, part2, part3));
@ -183,7 +183,7 @@ int ObPLDbLinkGuard::get_dblink_type_with_synonym(sql::ObSQLSessionInfo &session
common::ObDbLinkProxy *dblink_proxy = NULL;
common::sqlclient::ObISQLConnection *dblink_conn = NULL;
common::sqlclient::DblinkDriverProto link_type = DBLINK_UNKNOWN;
OZ (ObPLDblinkUtil::init_dblink(dblink_proxy, dblink_conn, session_info, schema_guard, dblink_name, link_type));
OZ (ObPLDblinkUtil::init_dblink(dblink_proxy, dblink_conn, session_info, schema_guard, dblink_name, link_type, false));
CK (OB_NOT_NULL(dblink_proxy));
CK (OB_NOT_NULL(dblink_conn));
if (OB_SUCC(ret)) {
@ -527,7 +527,7 @@ int ObPLDbLinkGuard::get_dblink_info(const uint64_t dblink_id,
if (OB_ISNULL(dblink_infos_.at(i))) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("dblink_info is null", K(ret), K(i));
} else {
} else if (dblink_infos_.at(i)->get_dblink_id() == dblink_id) {
dblink_info = dblink_infos_.at(i);
}
}

View File

@ -8764,7 +8764,7 @@ int ObSPIService::spi_execute_dblink(ObExecContext &exec_ctx,
CK (OB_NOT_NULL(routine_info));
CK (OB_NOT_NULL(dblink_proxy = GCTX.dblink_proxy_));
OX (tenant_id = session->get_effective_tenant_id());
OZ (ObPLDblinkUtil::init_dblink(dblink_proxy, dblink_conn, routine_info->get_dblink_id(), *session, link_type));
OZ (ObPLDblinkUtil::init_dblink(dblink_proxy, dblink_conn, routine_info->get_dblink_id(), *session, link_type, true));
CK (OB_NOT_NULL(dblink_conn));
if (DBLINK_DRV_OB == link_type) {
OZ (ObPLDblinkUtil::print_dblink_call_stmt(allocator, *session, call_stmt, params, routine_info));
@ -8799,15 +8799,6 @@ int ObSPIService::spi_execute_dblink(ObExecContext &exec_ctx,
OZ (spi_after_execute_dblink(session, routine_info, allocator, params, exec_params));
}
if (OB_NOT_NULL(dblink_proxy) && OB_NOT_NULL(dblink_conn)) {
int tmp_ret = OB_SUCCESS;
if (OB_SUCCESS != (tmp_ret = dblink_proxy->release_dblink(link_type, dblink_conn))) {
LOG_WARN("failed to relese connection", K(tmp_ret));
}
if (OB_SUCC(ret)) {
ret = tmp_ret;
}
}
return ret;
}