fix print ddl log coredump casued by genearted column index
This commit is contained in:
committed by
LINxiansheng
parent
e81af67898
commit
dcd9d2fab9
@ -498,9 +498,13 @@ int ObIndexBuilderUtil::adjust_fulltext_args(
|
|||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
ObIArray<ObString>& fulltext_columns = arg.fulltext_columns_;
|
ObIArray<ObString>& fulltext_columns = arg.fulltext_columns_;
|
||||||
ObIArray<ObColumnSortItem>& sort_items = arg.index_columns_;
|
ObIArray<ObColumnSortItem>& sort_items = arg.index_columns_;
|
||||||
|
ObIAllocator *allocator = arg.index_schema_.get_allocator();
|
||||||
ObArray<ObColumnSortItem> new_sort_items;
|
ObArray<ObColumnSortItem> new_sort_items;
|
||||||
uint64_t virtual_column_id = OB_INVALID_ID;
|
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;
|
OrderFTColumns order_ft_columns;
|
||||||
int64_t ft_begin_index = 0; // first column idx in ft index
|
int64_t ft_begin_index = 0; // first column idx in ft index
|
||||||
int64_t ft_end_index = 0; // last 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));
|
LOG_WARN("generate fulltext column failed", K(ret));
|
||||||
} else if (OB_ISNULL(tmp_ft_col)) {
|
} else if (OB_ISNULL(tmp_ft_col)) {
|
||||||
LOG_WARN("fulltext column schema is null", K(ret));
|
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))) {
|
} else if (OB_FAIL(new_sort_items.push_back(ft_sort_item))) {
|
||||||
LOG_WARN("store new sort items failed", K(ret));
|
LOG_WARN("store new sort items failed", K(ret));
|
||||||
} else if (data_schema.get_column_count() > old_cnt) {
|
} 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)
|
ObCreateIndexArg& arg, ObTableSchema& data_schema, ObIArray<ObColumnSchemaV2*>& gen_columns)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
|
ObIAllocator *allocator = arg.index_schema_.get_allocator();
|
||||||
ObIArray<ObColumnSortItem> &sort_items = arg.index_columns_;
|
ObIArray<ObColumnSortItem> &sort_items = arg.index_columns_;
|
||||||
ObArray<ObColumnSortItem> new_sort_items;
|
ObArray<ObColumnSortItem> new_sort_items;
|
||||||
ObWorker::CompatMode compat_mode = ObWorker::CompatMode::MYSQL;
|
ObWorker::CompatMode compat_mode = ObWorker::CompatMode::MYSQL;
|
||||||
uint64_t tenant_id = extract_tenant_id(data_schema.get_table_id());
|
uint64_t tenant_id = extract_tenant_id(data_schema.get_table_id());
|
||||||
ObCompatModeGetter::get_tenant_mode(tenant_id, compat_mode);
|
ObCompatModeGetter::get_tenant_mode(tenant_id, compat_mode);
|
||||||
CompatModeGuard compat_guard(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) {
|
for (int64_t i = 0; OB_SUCC(ret) && i < sort_items.count(); ++i) {
|
||||||
int64_t old_cnt = data_schema.get_column_count();
|
int64_t old_cnt = data_schema.get_column_count();
|
||||||
ObColumnSortItem new_sort_item = sort_items.at(i);
|
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_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));
|
LOG_WARN("store new sort item failed", K(ret), K(new_sort_item));
|
||||||
} else if (data_schema.get_column_count() > old_cnt) {
|
} 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()));
|
LOG_INFO("column info", KPC(gen_col), K(old_cnt), K(data_schema.get_column_count()));
|
||||||
|
|||||||
Reference in New Issue
Block a user