From 6bb6c68dae69348aca97c9d45ecbffe85378eb9d Mon Sep 17 00:00:00 2001 From: "791065426@qq.com" <791065426@qq.com> Date: Mon, 20 Nov 2023 17:11:02 +0000 Subject: [PATCH] fixbug: drop database error, the database name address of stmt is illegal. --- src/sql/resolver/ddl/ob_drop_database_resolver.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/sql/resolver/ddl/ob_drop_database_resolver.cpp b/src/sql/resolver/ddl/ob_drop_database_resolver.cpp index 44a0a583b1..a64a23aa6c 100644 --- a/src/sql/resolver/ddl/ob_drop_database_resolver.cpp +++ b/src/sql/resolver/ddl/ob_drop_database_resolver.cpp @@ -43,7 +43,8 @@ int ObDropDatabaseResolver::resolve(const ParseNode &parse_tree) if (OB_ISNULL(node) || OB_UNLIKELY(node->type_ != T_DROP_DATABASE) || OB_UNLIKELY(node->num_child_ != DB_NODE_COUNT) - || OB_ISNULL(node->children_)) { + || OB_ISNULL(node->children_) + || OB_ISNULL(allocator_)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("invalid parse tree", K(ret), K(node)); } else if (OB_ISNULL(session_info_)) { @@ -92,12 +93,16 @@ int ObDropDatabaseResolver::resolve(const ParseNode &parse_tree) cs_type, perserve_lettercase, database_name))) { LOG_WARN("fail to check and convert database name", K(database_name), K(ret)); } else { + ObString deep_copy_database_name; CK (OB_NOT_NULL(schema_checker_)); CK (OB_NOT_NULL(schema_checker_->get_schema_guard())); OZ (ObSQLUtils::cvt_db_name_to_org(*schema_checker_->get_schema_guard(), session_info_, database_name)); - OX (drop_database_stmt->set_database_name(database_name)); + OZ (deep_copy_ob_string(*allocator_, + database_name, + deep_copy_database_name), database_name); + OX (drop_database_stmt->set_database_name(deep_copy_database_name)); } } }