apache / apache/shardingsphere
Consider adding ConstraintMetaData to metadata to support constraint segment merge logic
- Dominant language
- Java
- Stars
- 20.8k
- Forks
- 6.9k
- Avg merge
- 11h 35m
- Merged PRs (30d)
- 326
Description
## Feature Request
To support handling of foreign key constraints in issue #16050, ConstraintMetaData needs to be added to the metadata.
Add `Map constraints` to TableMetaData:
```java
/**
* Table meta data.
*/
@Getter
@EqualsAndHashCode
@ToString
public final class TableMetaData {
private final String name;
private final Map columns;
private final Map indexes;
private final Map constrains;
private final List primaryKeyColumns = new ArrayList<>();
}
/**
* Constraint meta data.
*/
@RequiredArgsConstructor
@Getter
@EqualsAndHashCode
@ToString
public final class ConstraintMetaData {
private final String name;
private final String referencedTableName;
}
```
Then add query logic for constraints in MySQLTableMetaDataLoader.
```sql
SELECT CONSTRAINT_NAME, TABLE_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_NAME IN ('bmsql_district_0') AND REFERENCED_TABLE_SCHEMA IS NOT NULL;
```
- [x] Support MySQL constraint meta data load
- [x] Support Postgresql constraint meta data load
- [ ] Support openGauss constraint meta data load
- [ ] Support Oracle constraint meta data load
- [ ] Support SQLServer constraint meta data load
### Is your feature request related to a problem?
issue #16050
### Describe the feature you would like.
Contributor guide
Assessment
This issue has not been assessed yet.