reform order autoinc

This commit is contained in:
obdev
2023-07-05 10:54:10 +00:00
committed by ob-robot
parent 6fb782096e
commit 34bc7336c0
24 changed files with 389 additions and 210 deletions

View File

@ -929,9 +929,15 @@ int ObDDLRedefinitionTask::sync_auto_increment_position()
} else if (OB_FAIL(schema_service.get_tenant_schema_guard(tenant_id_, schema_guard))) {
LOG_WARN("get schema guard failed", K(ret), K(tenant_id_));
} else if (OB_FAIL(schema_guard.get_table_schema(tenant_id_, object_id_, data_table_schema))) {
LOG_WARN("get data table schema failed", K(ret), K(tenant_id_), K(object_id_));
LOG_WARN("get data table schema failed", KR(ret), K(tenant_id_), K(object_id_));
} else if (OB_ISNULL(data_table_schema)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("data_table_schema is NULL", KR(ret), K_(tenant_id), K_(object_id));
} else if (OB_FAIL(schema_guard.get_table_schema(tenant_id_, target_object_id_, dest_table_schema))) {
LOG_WARN("get dest table schema failed", K(ret), K(tenant_id_), K(target_object_id_));
LOG_WARN("get dest table schema failed", KR(ret), K(tenant_id_), K(target_object_id_));
} else if (OB_ISNULL(dest_table_schema)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("dest_table_schema is NULL", KR(ret), K_(tenant_id), K_(target_object_id));
} else {
ObArray<uint64_t> column_ids;
if (OB_FAIL(data_table_schema->get_column_ids(column_ids))) {
@ -969,8 +975,9 @@ int ObDDLRedefinitionTask::sync_auto_increment_position()
param.auto_increment_cache_size_ = 1; // TODO(shuangcan): should we use the sysvar on session?
param.autoinc_mode_is_order_ = dest_table_schema->is_order_auto_increment_mode();
param.autoinc_auto_increment_ = dest_table_schema->get_auto_increment();
if (OB_FAIL(auto_inc_service.get_sequence_value(tenant_id_, object_id_, cur_column_id, param.autoinc_mode_is_order_, sequence_value))) {
LOG_WARN("get sequence value failed", K(ret), K(tenant_id_), K(object_id_), K(cur_column_id));
param.autoinc_version_ = dest_table_schema->get_truncate_version();
if (OB_FAIL(auto_inc_service.get_sequence_value(tenant_id_, object_id_, cur_column_id, param.autoinc_mode_is_order_, data_table_schema->get_truncate_version(), sequence_value))) {
LOG_WARN("get sequence value failed", KR(ret), K(tenant_id_), K(object_id_), K(cur_column_id));
} else if (FALSE_IT(param.global_value_to_sync_ = sequence_value - 1)) {
// as sequence_value is an avaliable value. sync value will not be avaliable to user
} else if (OB_FAIL(auto_inc_service.sync_insert_value_global(param))) {
@ -1096,6 +1103,7 @@ int ObDDLRedefinitionTask::modify_autoinc(const ObDDLTaskStatus next_task_status
param.autoinc_offset_ = 1;
param.global_value_to_sync_ = autoinc_val - 1;
param.auto_increment_cache_size_ = 1; // TODO(shuangcan): should we use the sysvar on session?
param.autoinc_version_ = new_table_schema->get_truncate_version();
if (OB_FAIL(auto_inc_service.sync_insert_value_global(param))) {
LOG_WARN("fail to clear autoinc cache", K(ret), K(param));
}
@ -2108,7 +2116,7 @@ int ObSyncTabletAutoincSeqCtx::call_and_process_all_tablet_autoinc_seqs(P &proxy
if (is_get) {
new_params_cnt++;
}
}
}
}
}
}