From 3b390c9e61bcd1c4bb4c1de59bc72f6006e34fb1 Mon Sep 17 00:00:00 2001 From: haohao022 Date: Mon, 4 Dec 2023 12:11:46 +0000 Subject: [PATCH] [CP] [to #53467004] fix: detect mutual dependency in multiple user scenario --- src/sql/resolver/ddl/ob_create_udt_resolver.h | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/sql/resolver/ddl/ob_create_udt_resolver.h b/src/sql/resolver/ddl/ob_create_udt_resolver.h index 7558e577b8..7b529e3271 100644 --- a/src/sql/resolver/ddl/ob_create_udt_resolver.h +++ b/src/sql/resolver/ddl/ob_create_udt_resolver.h @@ -51,7 +51,7 @@ private: const share::schema::ObUDTTypeInfo* type_info, int64_t position, share::schema::ObUDTTypeAttr& type_attr, - ObString &db_name); + const ObString& db_name); int resolve_final_node(const ParseNode *final_node); int resolve_type_attr(const ParseNode *attr_node, int64_t position, @@ -68,12 +68,13 @@ private: obrpc::ObCreateUDTArg &crt_udt_arg, const ObString &object_spec); int resolve_udt_data_type(const ParseNode *type_node, - share::schema::ObUDTCollectionType& coll_type, - ObString &db_name); + share::schema::ObUDTCollectionType& coll_type, + const ObString& type_name, + const ObString& db_name); int resolve_type_varray(const ParseNode *varray_node, - share::schema::ObUDTTypeInfo *udt_info); + obrpc::ObCreateUDTArg &crt_udt_arg); int resolve_type_nested_table(const ParseNode *nested_node, - share::schema::ObUDTTypeInfo* udt_info); + obrpc::ObCreateUDTArg &crt_udt_arg); int resolve_type_define(const ParseNode *type_def_node, obrpc::ObCreateUDTArg &crt_udt_arg, const ObString &object_spec); @@ -82,9 +83,10 @@ private: obrpc::ObCreateUDTArg &crt_udt_arg, const ObString &db_name, const ObString &object_spec); - int detect_loop_dependency(const ObString &udt_name, - const share::schema::ObUDTTypeInfo *udt_info, - bool &is_dep); + int detect_loop_dependency(const ObString &target_udt_name, + uint64_t target_database_id, + const ObUDTTypeInfo *udt_info, + bool &has_mutual_dep); public: static int package_info_to_object_info(const share::schema::ObPackageInfo &pkg_info, share::schema::ObUDTObjectType &obj_info);