提交 03249ec2 编写于 作者: 董宗磊

1、add table primary key null condition.

2、Fix log format.
上级 cf1cbc08
......@@ -19,6 +19,7 @@ package info.avalon566.shardingscaling.sync.jdbc;
import info.avalon566.shardingscaling.sync.core.*;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import lombok.var;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -33,10 +34,9 @@ import static java.sql.ResultSet.TYPE_FORWARD_ONLY;
/**
* @author avalon566
*/
@Slf4j
public abstract class AbstractJdbcReader extends AbstractRunner implements Reader {
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractJdbcReader.class);
protected final RdbmsConfiguration rdbmsConfiguration;
@Setter
......@@ -85,15 +85,19 @@ public abstract class AbstractJdbcReader extends AbstractRunner implements Reade
@Override
public List<RdbmsConfiguration> split(int concurrency) {
var primaryKeys = new DbMetaDataUtil(rdbmsConfiguration).getPrimaryKeys(rdbmsConfiguration.getTableName());
if (primaryKeys == null || primaryKeys.size() == 0) {
log.warn("{} 表主键不存在, 不支持并发执行", rdbmsConfiguration.getTableName());
return Arrays.asList(rdbmsConfiguration);
}
if (1 < primaryKeys.size()) {
LOGGER.warn("%s 为联合主键,不支持并发执行");
log.warn("{} 表为联合主键, 不支持并发执行", rdbmsConfiguration.getTableName());
return Arrays.asList(rdbmsConfiguration);
}
var metaData = new DbMetaDataUtil(rdbmsConfiguration).getColumNames(rdbmsConfiguration.getTableName());
var index = DbMetaDataUtil.findColumnIndex(metaData, primaryKeys.get(0));
try {
if (Types.INTEGER != metaData.get(index).getColumnType()) {
LOGGER.warn("%s 不是整形,不支持并发执行");
log.warn("{} 主键不是整形,不支持并发执行", rdbmsConfiguration.getTableName());
return Arrays.asList(rdbmsConfiguration);
}
} catch (Exception e) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册