add mock fk parent table info to based_schema_object_infos
This commit is contained in:
@ -7446,6 +7446,39 @@ int ObDDLResolver::check_foreign_key_reference(
|
||||
K(ret), K(child_table_schema->is_user_table()));
|
||||
} else if (arg.is_parent_table_mock_) {
|
||||
// skip checking parent table
|
||||
uint64_t database_id = OB_INVALID_ID;
|
||||
const ObMockFKParentTableSchema *mock_fk_parent_table_schema = NULL;
|
||||
if (OB_FAIL(schema_checker_->get_database_id(
|
||||
arg.tenant_id_, arg.database_name_, database_id))) {
|
||||
LOG_WARN("failed to get_database_id", K(ret), K(arg.tenant_id_),
|
||||
K(arg.database_name_), K(database_id));
|
||||
} else if (OB_FAIL(schema_checker_->get_mock_fk_parent_table_with_name(
|
||||
arg.tenant_id_, database_id,
|
||||
arg.foreign_key_name_, mock_fk_parent_table_schema))) {
|
||||
LOG_WARN("failed to get_mock_fk_parent_table_schema_with_name", K(ret),
|
||||
K(arg.tenant_id_), K(database_id),
|
||||
K(arg.foreign_key_name_));
|
||||
} else if (OB_NOT_NULL(mock_fk_parent_table_schema)) {
|
||||
if (is_alter_table
|
||||
&& OB_FAIL(alter_table_stmt->get_alter_table_arg().based_schema_object_infos_.push_back(
|
||||
ObBasedSchemaObjectInfo(
|
||||
mock_fk_parent_table_schema->get_mock_fk_parent_table_id(),
|
||||
MOCK_FK_PARENT_TABLE_SHCEMA,
|
||||
mock_fk_parent_table_schema->get_schema_version())))) {
|
||||
LOG_WARN("failed to add based_schema_object_info to arg",
|
||||
K(ret), K(mock_fk_parent_table_schema->get_mock_fk_parent_table_id()),
|
||||
K(mock_fk_parent_table_schema->get_schema_version()));
|
||||
} else if (!is_alter_table
|
||||
&& OB_FAIL(create_table_stmt->get_create_table_arg().based_schema_object_infos_.push_back(
|
||||
ObBasedSchemaObjectInfo(
|
||||
mock_fk_parent_table_schema->get_mock_fk_parent_table_id(),
|
||||
MOCK_FK_PARENT_TABLE_SHCEMA,
|
||||
mock_fk_parent_table_schema->get_schema_version())))) {
|
||||
LOG_WARN("failed to add based_schema_object_info to arg",
|
||||
K(ret), K(mock_fk_parent_table_schema->get_mock_fk_parent_table_id()),
|
||||
K(mock_fk_parent_table_schema->get_schema_version()));
|
||||
}
|
||||
}
|
||||
} else if (!parent_table_schema->is_user_table()) {
|
||||
ret = OB_ERR_CANNOT_ADD_FOREIGN;
|
||||
LOG_WARN("foreign key cannot be based on non-user table",
|
||||
|
||||
Reference in New Issue
Block a user