fix get lob failed because lob schema version larger than data table's.
This commit is contained in:
@ -13345,8 +13345,6 @@ int ObDDLService::create_hidden_table(
|
|||||||
allocator,
|
allocator,
|
||||||
tenant_data_version))) {
|
tenant_data_version))) {
|
||||||
LOG_WARN("fail to create hidden table", K(ret));
|
LOG_WARN("fail to create hidden table", K(ret));
|
||||||
} else if (OB_FAIL(ddl_operator.update_table_attribute(new_table_schema, trans, OB_DDL_ALTER_TABLE))) {
|
|
||||||
LOG_WARN("failed to update data table schema attribute", K(ret));
|
|
||||||
} else {
|
} else {
|
||||||
LOG_INFO("create hidden table success!", K(table_id), K(new_table_schema));
|
LOG_INFO("create hidden table success!", K(table_id), K(new_table_schema));
|
||||||
}
|
}
|
||||||
@ -13680,8 +13678,6 @@ int ObDDLService::recover_restore_table_ddl_task(
|
|||||||
false/*bind_tablets*/, *src_tenant_schema_guard, *dst_tenant_schema_guard, ddl_operator,
|
false/*bind_tablets*/, *src_tenant_schema_guard, *dst_tenant_schema_guard, ddl_operator,
|
||||||
dst_tenant_trans, allocator, tenant_data_version))) {
|
dst_tenant_trans, allocator, tenant_data_version))) {
|
||||||
LOG_WARN("create user hidden table failed", K(ret), K(arg), K(tenant_data_version));
|
LOG_WARN("create user hidden table failed", K(ret), K(arg), K(tenant_data_version));
|
||||||
} else if (OB_FAIL(ddl_operator.update_table_attribute(dst_table_schema, dst_tenant_trans, OB_DDL_ALTER_TABLE))) {
|
|
||||||
LOG_WARN("failed to update data table schema attribute", K(ret), K(arg));
|
|
||||||
} else {
|
} else {
|
||||||
ObPrepareAlterTableArgParam param;
|
ObPrepareAlterTableArgParam param;
|
||||||
if (OB_FAIL(param.init(arg.consumer_group_id_, session_id, 0/*sql_mode, unused*/, arg.ddl_stmt_str_,
|
if (OB_FAIL(param.init(arg.consumer_group_id_, session_id, 0/*sql_mode, unused*/, arg.ddl_stmt_str_,
|
||||||
@ -16442,7 +16438,6 @@ int ObDDLService::create_user_hidden_table(const ObTableSchema &orig_table_schem
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (OB_SUCC(ret)) {
|
if (OB_SUCC(ret)) {
|
||||||
bool need_sync_schema_version = false;
|
|
||||||
ObTableCreator table_creator(
|
ObTableCreator table_creator(
|
||||||
tenant_id,
|
tenant_id,
|
||||||
frozen_scn,
|
frozen_scn,
|
||||||
@ -16460,7 +16455,8 @@ int ObDDLService::create_user_hidden_table(const ObTableSchema &orig_table_schem
|
|||||||
}
|
}
|
||||||
for (int64_t i = 0; OB_SUCC(ret) && i < schemas.count(); i++) {
|
for (int64_t i = 0; OB_SUCC(ret) && i < schemas.count(); i++) {
|
||||||
share::schema::ObTableSchema *table_schema = const_cast<ObTableSchema*>(schemas.at(i));
|
share::schema::ObTableSchema *table_schema = const_cast<ObTableSchema*>(schemas.at(i));
|
||||||
if (OB_FAIL(ddl_operator.create_table(*table_schema, trans, NULL, need_sync_schema_version))) {
|
if (OB_FAIL(ddl_operator.create_table(*table_schema, trans, NULL,
|
||||||
|
i == schemas.count() - 1/*need_sync_schema_version, to update data table schema version*/))) {
|
||||||
LOG_WARN("failed to create table schema", K(ret));
|
LOG_WARN("failed to create table schema", K(ret));
|
||||||
} else if (OB_FAIL(ddl_operator.insert_temp_table_info(trans, *table_schema))) {
|
} else if (OB_FAIL(ddl_operator.insert_temp_table_info(trans, *table_schema))) {
|
||||||
LOG_WARN("failed to insert temp table info", K(ret), KPC(table_schema));
|
LOG_WARN("failed to insert temp table info", K(ret), KPC(table_schema));
|
||||||
@ -16468,12 +16464,20 @@ int ObDDLService::create_user_hidden_table(const ObTableSchema &orig_table_schem
|
|||||||
}
|
}
|
||||||
|
|
||||||
int64_t last_schema_version = OB_INVALID_VERSION;
|
int64_t last_schema_version = OB_INVALID_VERSION;
|
||||||
|
if (FAILEDx(get_last_schema_version(last_schema_version))) {
|
||||||
|
LOG_WARN("get last schema version failed", K(ret), K(last_schema_version));
|
||||||
|
} else if (OB_UNLIKELY(last_schema_version < schemas.at(schemas.count() - 1)->get_schema_version())) {
|
||||||
|
ret = OB_ERR_UNEXPECTED;
|
||||||
|
LOG_WARN("unexpected last schema version", K(ret), K(last_schema_version),
|
||||||
|
"table schema version", schemas.at(schemas.count() - 1)->get_schema_version());
|
||||||
|
} else {
|
||||||
|
// update schema version after sync version by creating lob table.
|
||||||
|
hidden_table_schema.set_schema_version(last_schema_version);
|
||||||
|
}
|
||||||
|
|
||||||
for (int64_t i = 0; OB_SUCC(ret) && i < schemas.count(); i++) {
|
for (int64_t i = 0; OB_SUCC(ret) && i < schemas.count(); i++) {
|
||||||
share::schema::ObTableSchema *table_schema = const_cast<ObTableSchema*>(schemas.at(i));
|
share::schema::ObTableSchema *table_schema = const_cast<ObTableSchema*>(schemas.at(i));
|
||||||
if (OB_INVALID_VERSION == last_schema_version
|
if (OB_FAIL(ddl_operator.insert_ori_schema_version(trans, tenant_id,
|
||||||
&& OB_FAIL(get_last_schema_version(last_schema_version))) {
|
|
||||||
LOG_WARN("get last schema version failed", K(ret), K(last_schema_version));
|
|
||||||
} else if (OB_FAIL(ddl_operator.insert_ori_schema_version(trans, tenant_id,
|
|
||||||
table_schema->get_table_id(), last_schema_version))) {
|
table_schema->get_table_id(), last_schema_version))) {
|
||||||
LOG_WARN("failed to insert_ori_schema_version!", K(ret), KPC(table_schema), K(last_schema_version));
|
LOG_WARN("failed to insert_ori_schema_version!", K(ret), KPC(table_schema), K(last_schema_version));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user