[CP] [to #54195891]cached dblink connection on the session when PL execute
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user