From aacc84bfc98179a58ba6ab9ad3a297ffa6e94e51 Mon Sep 17 00:00:00 2001 From: hanr881 <1741282579@qq.com> Date: Wed, 24 Apr 2024 10:26:37 +0000 Subject: [PATCH] to issue<56337229>:adjust delete from __all_ncomp_dll filter condition --- src/pl/ob_pl_persistent.cpp | 5 +++-- src/pl/ob_pl_persistent.h | 3 ++- src/rootserver/ob_ddl_operator.cpp | 27 ++++++++++++++++++--------- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/pl/ob_pl_persistent.cpp b/src/pl/ob_pl_persistent.cpp index 499d7951c8..152af33637 100644 --- a/src/pl/ob_pl_persistent.cpp +++ b/src/pl/ob_pl_persistent.cpp @@ -549,7 +549,8 @@ int ObRoutinePersistentInfo::process_storage_dll(ObIAllocator &alloc, int ObRoutinePersistentInfo::delete_dll_from_disk(common::ObISQLClient &trans, uint64_t tenant_id, - uint64_t key_id) + uint64_t key_id, + uint64_t database_id) { int ret = OB_SUCCESS; @@ -579,7 +580,7 @@ int ObRoutinePersistentInfo::delete_dll_from_disk(common::ObISQLClient &trans, if (OB_INVALID_ID == key_id) { ret = OB_ERR_UNEXPECTED; LOG_WARN("unexpected key id.", K(ret)); - } else if (OB_FAIL(sql.assign_fmt("delete FROM %s where key_id = %ld", OB_ALL_NCOMP_DLL_TNAME, key_id))) { + } else if (OB_FAIL(sql.assign_fmt("delete FROM %s where database_id = %ld and key_id = %ld", OB_ALL_NCOMP_DLL_TNAME, database_id, key_id))) { LOG_WARN("delete from __all_ncomp_dll table failed.", K(ret), K(key_id)); } else { if (OB_FAIL(trans.write(exec_tenant_id, sql.ptr(), affected_rows))) { diff --git a/src/pl/ob_pl_persistent.h b/src/pl/ob_pl_persistent.h index 2a271ab000..ab5cbdc919 100644 --- a/src/pl/ob_pl_persistent.h +++ b/src/pl/ob_pl_persistent.h @@ -130,7 +130,8 @@ public: static int delete_dll_from_disk(common::ObISQLClient &trans, uint64_t tenant_id, - uint64_t key_id); + uint64_t key_id, + uint64_t database_id); private: uint64_t tenant_id_; diff --git a/src/rootserver/ob_ddl_operator.cpp b/src/rootserver/ob_ddl_operator.cpp index 13cfbcece3..fd31c502e9 100644 --- a/src/rootserver/ob_ddl_operator.cpp +++ b/src/rootserver/ob_ddl_operator.cpp @@ -8912,7 +8912,8 @@ int ObDDLOperator::drop_routine(const ObRoutineInfo &routine_info, routine_info, new_schema_version, trans, ddl_stmt_str))) { LOG_WARN("drop routine info failed", K(routine_info), K(ret)); } - OZ (pl::ObRoutinePersistentInfo::delete_dll_from_disk(trans, routine_info.get_tenant_id(), routine_info.get_routine_id())); + OZ (pl::ObRoutinePersistentInfo::delete_dll_from_disk(trans, routine_info.get_tenant_id(), + routine_info.get_routine_id(), routine_info.get_database_id())); OZ (ObDependencyInfo::delete_schema_object_dependency(trans, routine_info.get_tenant_id(), routine_info.get_routine_id(), new_schema_version, @@ -9253,17 +9254,20 @@ int ObDDLOperator::drop_package(const ObPackageInfo &package_info, package_info.get_package_id(), new_schema_version, package_info.get_object_type())); - OZ (pl::ObRoutinePersistentInfo::delete_dll_from_disk(trans, tenant_id, package_info.get_package_id())); + OZ (pl::ObRoutinePersistentInfo::delete_dll_from_disk(trans, tenant_id, package_info.get_package_id(), + package_info.get_database_id())); if (OB_NOT_NULL(package_body_info)) { OZ (ObDependencyInfo::delete_schema_object_dependency(trans, tenant_id, package_body_info->get_package_id(), new_schema_version, package_body_info->get_object_type())); - OZ (pl::ObRoutinePersistentInfo::delete_dll_from_disk(trans, tenant_id, package_body_info->get_package_id())); + OZ (pl::ObRoutinePersistentInfo::delete_dll_from_disk(trans, tenant_id, package_body_info->get_package_id(), + package_body_info->get_database_id())); } } } else { - OZ (pl::ObRoutinePersistentInfo::delete_dll_from_disk(trans, tenant_id, package_info.get_package_id())); + OZ (pl::ObRoutinePersistentInfo::delete_dll_from_disk(trans, tenant_id, package_info.get_package_id(), + package_info.get_database_id())); } } @@ -9437,9 +9441,11 @@ int ObDDLOperator::drop_trigger(const ObTriggerInfo &trigger_info, new_schema_version, trigger_info.get_object_type())); OZ (pl::ObRoutinePersistentInfo::delete_dll_from_disk(trans, tenant_id, - share::schema::ObTriggerInfo::get_trigger_spec_package_id(trigger_info.get_trigger_id()))); + share::schema::ObTriggerInfo::get_trigger_spec_package_id(trigger_info.get_trigger_id()), + trigger_info.get_database_id())); OZ (pl::ObRoutinePersistentInfo::delete_dll_from_disk(trans, tenant_id, - share::schema::ObTriggerInfo::get_trigger_body_package_id(trigger_info.get_trigger_id()))); + share::schema::ObTriggerInfo::get_trigger_body_package_id(trigger_info.get_trigger_id()), + trigger_info.get_database_id())); if (OB_SUCC(ret) && !trigger_info.is_system_type() && is_update_table_schema_version) { uint64_t base_table_id = trigger_info.get_base_object_id(); OZ (schema_service->get_table_sql_service().update_data_table_schema_version(trans, @@ -9942,16 +9948,19 @@ int ObDDLOperator::drop_udt(const ObUDTTypeInfo &udt_info, if (udt_info.is_object_spec_ddl() && OB_INVALID_ID != ObUDTObjectType::mask_object_id(udt_info.get_object_spec_id(tenant_id))) { OZ (pl::ObRoutinePersistentInfo::delete_dll_from_disk(trans, tenant_id, - ObUDTObjectType::mask_object_id(udt_info.get_object_spec_id(tenant_id)))); + ObUDTObjectType::mask_object_id(udt_info.get_object_spec_id(tenant_id)), + udt_info.get_database_id())); if (udt_info.has_type_body() && OB_INVALID_ID != ObUDTObjectType::mask_object_id(udt_info.get_object_body_id(tenant_id))) { OZ (pl::ObRoutinePersistentInfo::delete_dll_from_disk(trans, tenant_id, - ObUDTObjectType::mask_object_id(udt_info.get_object_body_id(tenant_id)))); + ObUDTObjectType::mask_object_id(udt_info.get_object_body_id(tenant_id)), + udt_info.get_database_id())); } } else if (udt_info.is_object_body_ddl() && OB_INVALID_ID != ObUDTObjectType::mask_object_id(udt_info.get_object_body_id(tenant_id))) { OZ (pl::ObRoutinePersistentInfo::delete_dll_from_disk(trans, tenant_id, - ObUDTObjectType::mask_object_id(udt_info.get_object_body_id(tenant_id)))); + ObUDTObjectType::mask_object_id(udt_info.get_object_body_id(tenant_id)), + udt_info.get_database_id())); } }