fix: sync duplicate column
This commit is contained in:
parent
74d7d5d86b
commit
2e44576e7f
|
@ -15,6 +15,7 @@ public class TableCondition extends Condition {
|
||||||
return TableCondition.builder()
|
return TableCondition.builder()
|
||||||
.databaseName(condition.getDatabaseName())
|
.databaseName(condition.getDatabaseName())
|
||||||
.tableName(tableName)
|
.tableName(tableName)
|
||||||
|
.schemaName(condition.getSchemaName())
|
||||||
.ignoreTableNameRegex(condition.getIgnoreTableNameRegex())
|
.ignoreTableNameRegex(condition.getIgnoreTableNameRegex())
|
||||||
.ignoreTableColumnNameRegex(condition.getIgnoreTableColumnNameRegex())
|
.ignoreTableColumnNameRegex(condition.getIgnoreTableColumnNameRegex())
|
||||||
.build();
|
.build();
|
||||||
|
|
|
@ -30,10 +30,11 @@ public class JdbcColumnMetaRepository implements ColumnMetaRepository {
|
||||||
List<ColumnMeta> columnDocs = new ArrayList<>();
|
List<ColumnMeta> columnDocs = new ArrayList<>();
|
||||||
String databaseName = tableCondition.getDatabaseName();
|
String databaseName = tableCondition.getDatabaseName();
|
||||||
String tableName = tableCondition.getTableName();
|
String tableName = tableCondition.getTableName();
|
||||||
List<String> primaryKeyColumns = selectPrimaryKeyColumns(connection.getMetaData(), databaseName, tableName);
|
List<String> primaryKeyColumns = selectPrimaryKeyColumns(connection.getMetaData(), tableCondition);
|
||||||
ResultSet columnsResult;
|
ResultSet columnsResult;
|
||||||
try {
|
try {
|
||||||
columnsResult = connection.getMetaData().getColumns(databaseName, null, tableName, null);
|
columnsResult = connection.getMetaData()
|
||||||
|
.getColumns(databaseName, tableCondition.getSchemaName(), tableName, null);
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
log.warn("warn: ignore columns in " + databaseName + "." + tableName);
|
log.warn("warn: ignore columns in " + databaseName + "." + tableName);
|
||||||
return columnDocs;
|
return columnDocs;
|
||||||
|
@ -85,9 +86,9 @@ public class JdbcColumnMetaRepository implements ColumnMetaRepository {
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<String> selectPrimaryKeyColumns(DatabaseMetaData meta,
|
private List<String> selectPrimaryKeyColumns(DatabaseMetaData meta,
|
||||||
String catalog,
|
TableCondition tableCondition) throws SQLException {
|
||||||
String tableName) throws SQLException {
|
ResultSet result = meta.getPrimaryKeys(tableCondition.getDatabaseName(),
|
||||||
ResultSet result = meta.getPrimaryKeys(catalog, null, tableName);
|
tableCondition.getSchemaName(), tableCondition.getTableName());
|
||||||
List<String> columns = new ArrayList<>();
|
List<String> columns = new ArrayList<>();
|
||||||
while (result.next()) {
|
while (result.next()) {
|
||||||
String columnName = result.getString("COLUMN_NAME");
|
String columnName = result.getString("COLUMN_NAME");
|
||||||
|
|
|
@ -28,7 +28,8 @@ public class JdbcIndexMetaRepository implements IndexMetaRepository {
|
||||||
List<IndexMeta> indexMetas = new ArrayList<>();
|
List<IndexMeta> indexMetas = new ArrayList<>();
|
||||||
ResultSet indexResults;
|
ResultSet indexResults;
|
||||||
try {
|
try {
|
||||||
indexResults = connection.getMetaData().getIndexInfo(databaseName, null, tableName, false, false);
|
indexResults = connection.getMetaData()
|
||||||
|
.getIndexInfo(databaseName, condition.getSchemaName(), tableName, false, false);
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
log.warn("warn: ignore " + databaseName + "." + tableName);
|
log.warn("warn: ignore " + databaseName + "." + tableName);
|
||||||
return indexMetas;
|
return indexMetas;
|
||||||
|
|
Loading…
Reference in New Issue