fix print ddl log coredump casued by genearted column index
This commit is contained in:
parent
e81af67898
commit
dcd9d2fab9
@ -498,9 +498,13 @@ int ObIndexBuilderUtil::adjust_fulltext_args(
|
||||
int ret = OB_SUCCESS;
|
||||
ObIArray<ObString>& fulltext_columns = arg.fulltext_columns_;
|
||||
ObIArray<ObColumnSortItem>& sort_items = arg.index_columns_;
|
||||
ObIAllocator *allocator = arg.index_schema_.get_allocator();
|
||||
ObArray<ObColumnSortItem> new_sort_items;
|
||||
uint64_t virtual_column_id = OB_INVALID_ID;
|
||||
if (fulltext_columns.count() > 0) {
|
||||
if (OB_ISNULL(allocator)) {
|
||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||
LOG_WARN("allocator is null", K(ret));
|
||||
} else if (fulltext_columns.count() > 0) {
|
||||
OrderFTColumns order_ft_columns;
|
||||
int64_t ft_begin_index = 0; // first column idx in ft index
|
||||
int64_t ft_end_index = 0; // last column idx in ft index
|
||||
@ -534,7 +538,9 @@ int ObIndexBuilderUtil::adjust_fulltext_args(
|
||||
LOG_WARN("generate fulltext column failed", K(ret));
|
||||
} else if (OB_ISNULL(tmp_ft_col)) {
|
||||
LOG_WARN("fulltext column schema is null", K(ret));
|
||||
} else if (FALSE_IT(ft_sort_item.column_name_ = tmp_ft_col->get_column_name_str())) {
|
||||
} else if (OB_FAIL(ob_write_string(*allocator, tmp_ft_col->get_column_name_str(), ft_sort_item.column_name_))) {
|
||||
// to keep the memory lifetime of column_name consistent with index_arg
|
||||
LOG_WARN("deep copy column name failed", K(ret));
|
||||
} else if (OB_FAIL(new_sort_items.push_back(ft_sort_item))) {
|
||||
LOG_WARN("store new sort items failed", K(ret));
|
||||
} else if (data_schema.get_column_count() > old_cnt) {
|
||||
@ -557,12 +563,17 @@ int ObIndexBuilderUtil::adjust_ordinary_index_column_args(
|
||||
ObCreateIndexArg& arg, ObTableSchema& data_schema, ObIArray<ObColumnSchemaV2*>& gen_columns)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObIArray<ObColumnSortItem>& sort_items = arg.index_columns_;
|
||||
ObIAllocator *allocator = arg.index_schema_.get_allocator();
|
||||
ObIArray<ObColumnSortItem> &sort_items = arg.index_columns_;
|
||||
ObArray<ObColumnSortItem> new_sort_items;
|
||||
ObWorker::CompatMode compat_mode = ObWorker::CompatMode::MYSQL;
|
||||
uint64_t tenant_id = extract_tenant_id(data_schema.get_table_id());
|
||||
ObCompatModeGetter::get_tenant_mode(tenant_id, compat_mode);
|
||||
CompatModeGuard compat_guard(compat_mode);
|
||||
if (OB_ISNULL(allocator)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("allocator is null", K(ret));
|
||||
}
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < sort_items.count(); ++i) {
|
||||
int64_t old_cnt = data_schema.get_column_count();
|
||||
ObColumnSortItem new_sort_item = sort_items.at(i);
|
||||
@ -628,7 +639,11 @@ int ObIndexBuilderUtil::adjust_ordinary_index_column_args(
|
||||
}
|
||||
}
|
||||
if (OB_SUCC(ret)) {
|
||||
if (OB_FAIL(new_sort_items.push_back(new_sort_item))) {
|
||||
ObString tmp_name = new_sort_item.column_name_;
|
||||
// Keep the memory lifetime of column_name consistent with index_arg
|
||||
if (OB_FAIL(ob_write_string(*allocator, tmp_name, new_sort_item.column_name_))) {
|
||||
LOG_WARN("deep copy column name failed", K(ret));
|
||||
} else if (OB_FAIL(new_sort_items.push_back(new_sort_item))) {
|
||||
LOG_WARN("store new sort item failed", K(ret), K(new_sort_item));
|
||||
} else if (data_schema.get_column_count() > old_cnt) {
|
||||
LOG_INFO("column info", KPC(gen_col), K(old_cnt), K(data_schema.get_column_count()));
|
||||
|
Loading…
x
Reference in New Issue
Block a user