[CP] fix a core caused by omitting the deep copy
This commit is contained in:
		@ -2234,6 +2234,7 @@ int ObAlterTableResolver::resolve_alter_index(const ParseNode &node)
 | 
			
		||||
int ObAlterTableResolver::resolve_alter_index_parallel_oracle(const ParseNode &node)
 | 
			
		||||
{
 | 
			
		||||
  int ret = OB_SUCCESS;
 | 
			
		||||
  ObString tmp_index_name;
 | 
			
		||||
  ObString index_name;
 | 
			
		||||
  if (T_PARALLEL != node.type_ || OB_ISNULL(node.children_)) {
 | 
			
		||||
    ret = OB_ERR_UNEXPECTED;
 | 
			
		||||
@ -2244,8 +2245,10 @@ int ObAlterTableResolver::resolve_alter_index_parallel_oracle(const ParseNode &n
 | 
			
		||||
  } else if (OB_ISNULL(index_schema_)) {
 | 
			
		||||
    ret = OB_ERR_UNEXPECTED;
 | 
			
		||||
    LOG_WARN("the index schema is null", K(ret));
 | 
			
		||||
  } else if (OB_FAIL(index_schema_->get_index_name(index_name))) {
 | 
			
		||||
  } else if (OB_FAIL(index_schema_->get_index_name(tmp_index_name))) {
 | 
			
		||||
    LOG_WARN("failed get index name", K(ret));
 | 
			
		||||
  } else if (OB_FAIL(deep_copy_str(tmp_index_name, index_name))) {
 | 
			
		||||
    LOG_WARN("failed to deep copy new_db_name", K(ret));
 | 
			
		||||
  } else {
 | 
			
		||||
    int64_t index_dop = node.children_[0]->value_;
 | 
			
		||||
    LOG_DEBUG("alter index table dop",
 | 
			
		||||
@ -2375,14 +2378,17 @@ int ObAlterTableResolver::resolve_rename_index(const ParseNode &node)
 | 
			
		||||
      } else if (OB_FAIL(ObSQLUtils::check_index_name(cs_type, tmp_new_index_name))) {
 | 
			
		||||
        LOG_WARN("fail to check index name", K(tmp_new_index_name), K(ret));
 | 
			
		||||
      } else {
 | 
			
		||||
        ObString tmp_index_name;
 | 
			
		||||
        ObString ori_index_name;
 | 
			
		||||
        ObString new_index_name;
 | 
			
		||||
        if (lib::is_mysql_mode()) {
 | 
			
		||||
          ori_index_name.assign_ptr(index_node->str_value_,
 | 
			
		||||
                                    static_cast<int32_t>(index_node->str_len_));
 | 
			
		||||
        } else if (lib::is_oracle_mode()) {
 | 
			
		||||
          if (OB_FAIL(index_schema_->get_index_name(ori_index_name))) {
 | 
			
		||||
          if (OB_FAIL(index_schema_->get_index_name(tmp_index_name))) {
 | 
			
		||||
            LOG_WARN("fail to get origin index name", K(ret));
 | 
			
		||||
          } else if (OB_FAIL(deep_copy_str(tmp_index_name, ori_index_name))) {
 | 
			
		||||
            LOG_WARN("failed to deep copy new_db_name", K(ret));
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        new_index_name.assign_ptr(new_name_node->str_value_, static_cast<int32_t>(new_name_node->str_len_));
 | 
			
		||||
@ -2703,6 +2709,7 @@ int ObAlterTableResolver::resolve_drop_primary(const ParseNode &action_node_list
 | 
			
		||||
int ObAlterTableResolver::resolve_alter_index_tablespace_oracle(const ParseNode &node)
 | 
			
		||||
{
 | 
			
		||||
  int ret = OB_SUCCESS;
 | 
			
		||||
  ObString tmp_index_name;
 | 
			
		||||
  ObString index_name;
 | 
			
		||||
  if (T_TABLESPACE != node.type_|| OB_ISNULL(node.children_[0]) || OB_ISNULL(session_info_)) {
 | 
			
		||||
    ret = OB_ERR_UNEXPECTED;
 | 
			
		||||
@ -2710,8 +2717,10 @@ int ObAlterTableResolver::resolve_alter_index_tablespace_oracle(const ParseNode
 | 
			
		||||
  } else if (OB_ISNULL(index_schema_)) {
 | 
			
		||||
    ret = OB_ERR_UNEXPECTED;
 | 
			
		||||
    LOG_WARN("the index schema is null", K(ret));
 | 
			
		||||
  } else if (OB_FAIL(index_schema_->get_index_name(index_name))) {
 | 
			
		||||
  } else if (OB_FAIL(index_schema_->get_index_name(tmp_index_name))) {
 | 
			
		||||
    LOG_WARN("failed to get index name", K(ret));
 | 
			
		||||
  } else if (OB_FAIL(deep_copy_str(tmp_index_name, index_name))) {
 | 
			
		||||
    LOG_WARN("failed to deep copy new_db_name", K(ret));
 | 
			
		||||
  } else {
 | 
			
		||||
    const uint64_t tenant_id = session_info_->get_effective_tenant_id();
 | 
			
		||||
    const ObTablespaceSchema *tablespace_schema = NULL;
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user