优化isTableNotExist
This commit is contained in:
@@ -580,7 +580,10 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean isTableNotExist(EntityInfo info, String sqlCode) {
|
protected boolean isTableNotExist(EntityInfo info, Throwable exp, String sqlCode) {
|
||||||
|
if (exp instanceof java.sql.SQLSyntaxErrorException) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return sqlCode != null && !sqlCode.isEmpty() && tableNotExistSqlstates.contains(';' + sqlCode + ';');
|
return sqlCode != null && !sqlCode.isEmpty() && tableNotExistSqlstates.contains(';' + sqlCode + ';');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -710,35 +713,35 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
protected abstract <T> CompletableFuture<Integer> updateColumnDBAsync(final EntityInfo<T> info, Flipper flipper, final UpdateSqlInfo sql);
|
protected abstract <T> CompletableFuture<Integer> updateColumnDBAsync(final EntityInfo<T> info, Flipper flipper, final UpdateSqlInfo sql);
|
||||||
|
|
||||||
//查询Number Map数据
|
//查询Number Map数据
|
||||||
protected abstract <T, N extends Number> CompletableFuture<Map<String, N>> getNumberMapDBAsync(final EntityInfo<T> info,
|
protected abstract <T, N extends Number> CompletableFuture<Map<String, N>> getNumberMapDBAsync(final EntityInfo<T> info,
|
||||||
String[] tables, final String sql, final FilterNode node, final FilterFuncColumn... columns);
|
String[] tables, final String sql, final FilterNode node, final FilterFuncColumn... columns);
|
||||||
|
|
||||||
//查询Number数据
|
//查询Number数据
|
||||||
protected abstract <T> CompletableFuture<Number> getNumberResultDBAsync(final EntityInfo<T> info,
|
protected abstract <T> CompletableFuture<Number> getNumberResultDBAsync(final EntityInfo<T> info,
|
||||||
String[] tables, final String sql, final FilterFunc func, final Number defVal, final String column, final FilterNode node);
|
String[] tables, final String sql, final FilterFunc func, final Number defVal, final String column, final FilterNode node);
|
||||||
|
|
||||||
//查询Map数据
|
//查询Map数据
|
||||||
protected abstract <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapDBAsync(final EntityInfo<T> info,
|
protected abstract <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapDBAsync(final EntityInfo<T> info,
|
||||||
String[] tables, final String sql, final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node);
|
String[] tables, final String sql, final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node);
|
||||||
|
|
||||||
//查询Map数据
|
//查询Map数据
|
||||||
protected abstract <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapDBAsync(final EntityInfo<T> info,
|
protected abstract <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapDBAsync(final EntityInfo<T> info,
|
||||||
String[] tables, final String sql, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node);
|
String[] tables, final String sql, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node);
|
||||||
|
|
||||||
//查询单条记录
|
//查询单条记录
|
||||||
protected abstract <T> CompletableFuture<T> findDBAsync(final EntityInfo<T> info, String[] tables,
|
protected abstract <T> CompletableFuture<T> findDBAsync(final EntityInfo<T> info, String[] tables,
|
||||||
final String sql, final boolean onlypk, final SelectColumn selects, final Serializable pk, final FilterNode node);
|
final String sql, final boolean onlypk, final SelectColumn selects, final Serializable pk, final FilterNode node);
|
||||||
|
|
||||||
//查询单条记录的单个字段
|
//查询单条记录的单个字段
|
||||||
protected abstract <T> CompletableFuture<Serializable> findColumnDBAsync(final EntityInfo<T> info, String[] tables,
|
protected abstract <T> CompletableFuture<Serializable> findColumnDBAsync(final EntityInfo<T> info, String[] tables,
|
||||||
final String sql, final boolean onlypk, final String column, final Serializable defValue, final Serializable pk, final FilterNode node);
|
final String sql, final boolean onlypk, final String column, final Serializable defValue, final Serializable pk, final FilterNode node);
|
||||||
|
|
||||||
//判断记录是否存在
|
//判断记录是否存在
|
||||||
protected abstract <T> CompletableFuture<Boolean> existsDBAsync(final EntityInfo<T> info, final String[] tables,
|
protected abstract <T> CompletableFuture<Boolean> existsDBAsync(final EntityInfo<T> info, final String[] tables,
|
||||||
final String sql, final boolean onlypk, final Serializable pk, final FilterNode node);
|
final String sql, final boolean onlypk, final Serializable pk, final FilterNode node);
|
||||||
|
|
||||||
//查询一页数据
|
//查询一页数据
|
||||||
protected abstract <T> CompletableFuture<Sheet<T>> querySheetDBAsync(final EntityInfo<T> info, final boolean readcache,
|
protected abstract <T> CompletableFuture<Sheet<T>> querySheetDBAsync(final EntityInfo<T> info, final boolean readcache,
|
||||||
final boolean needtotal, final boolean distinct, final SelectColumn selects, final Flipper flipper, final FilterNode node);
|
final boolean needtotal, final boolean distinct, final SelectColumn selects, final Flipper flipper, final FilterNode node);
|
||||||
|
|
||||||
//插入纪录
|
//插入纪录
|
||||||
@@ -747,7 +750,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
//删除记录
|
//删除记录
|
||||||
protected <T> int deleteDB(final EntityInfo<T> info, String[] tables, Flipper flipper, FilterNode node,
|
protected <T> int deleteDB(final EntityInfo<T> info, String[] tables, Flipper flipper, FilterNode node,
|
||||||
Map<String, List<Serializable>> pkmap, final String... sqls) {
|
Map<String, List<Serializable>> pkmap, final String... sqls) {
|
||||||
return deleteDBAsync(info, tables, flipper, node, pkmap, sqls).join();
|
return deleteDBAsync(info, tables, flipper, node, pkmap, sqls).join();
|
||||||
}
|
}
|
||||||
@@ -778,54 +781,54 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
//查询Number Map数据
|
//查询Number Map数据
|
||||||
protected <T, N extends Number> Map<String, N> getNumberMapDB(final EntityInfo<T> info, String[] tables,
|
protected <T, N extends Number> Map<String, N> getNumberMapDB(final EntityInfo<T> info, String[] tables,
|
||||||
final String sql, final FilterNode node, final FilterFuncColumn... columns) {
|
final String sql, final FilterNode node, final FilterFuncColumn... columns) {
|
||||||
return (Map) getNumberMapDBAsync(info, tables, sql, node, columns).join();
|
return (Map) getNumberMapDBAsync(info, tables, sql, node, columns).join();
|
||||||
}
|
}
|
||||||
|
|
||||||
//查询Number数据
|
//查询Number数据
|
||||||
protected <T> Number getNumberResultDB(final EntityInfo<T> info, String[] tables, final String sql,
|
protected <T> Number getNumberResultDB(final EntityInfo<T> info, String[] tables, final String sql,
|
||||||
final FilterFunc func, final Number defVal, final String column, final FilterNode node) {
|
final FilterFunc func, final Number defVal, final String column, final FilterNode node) {
|
||||||
return getNumberResultDBAsync(info, tables, sql, func, defVal, column, node).join();
|
return getNumberResultDBAsync(info, tables, sql, func, defVal, column, node).join();
|
||||||
}
|
}
|
||||||
|
|
||||||
//查询Map数据
|
//查询Map数据
|
||||||
protected <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMapDB(final EntityInfo<T> info, String[] tables,
|
protected <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMapDB(final EntityInfo<T> info, String[] tables,
|
||||||
final String sql, final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) {
|
final String sql, final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) {
|
||||||
return (Map) queryColumnMapDBAsync(info, tables, sql, keyColumn, func, funcColumn, node).join();
|
return (Map) queryColumnMapDBAsync(info, tables, sql, keyColumn, func, funcColumn, node).join();
|
||||||
}
|
}
|
||||||
|
|
||||||
//查询Map数据
|
//查询Map数据
|
||||||
protected <T, K extends Serializable, N extends Number> Map<K[], N[]> queryColumnMapDB(final EntityInfo<T> info, String[] tables,
|
protected <T, K extends Serializable, N extends Number> Map<K[], N[]> queryColumnMapDB(final EntityInfo<T> info, String[] tables,
|
||||||
final String sql, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node) {
|
final String sql, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node) {
|
||||||
return (Map) queryColumnMapDBAsync(info, tables, sql, funcNodes, groupByColumns, node).join();
|
return (Map) queryColumnMapDBAsync(info, tables, sql, funcNodes, groupByColumns, node).join();
|
||||||
}
|
}
|
||||||
|
|
||||||
//查询单条记录
|
//查询单条记录
|
||||||
protected <T> T findDB(final EntityInfo<T> info, String[] tables, final String sql, final boolean onlypk,
|
protected <T> T findDB(final EntityInfo<T> info, String[] tables, final String sql, final boolean onlypk,
|
||||||
final SelectColumn selects, final Serializable pk, final FilterNode node) {
|
final SelectColumn selects, final Serializable pk, final FilterNode node) {
|
||||||
return findDBAsync(info, tables, sql, onlypk, selects, pk, node).join();
|
return findDBAsync(info, tables, sql, onlypk, selects, pk, node).join();
|
||||||
}
|
}
|
||||||
|
|
||||||
//查询单条记录的单个字段
|
//查询单条记录的单个字段
|
||||||
protected <T> Serializable findColumnDB(final EntityInfo<T> info, String[] tables, final String sql, final boolean onlypk,
|
protected <T> Serializable findColumnDB(final EntityInfo<T> info, String[] tables, final String sql, final boolean onlypk,
|
||||||
final String column, final Serializable defValue, final Serializable pk, final FilterNode node) {
|
final String column, final Serializable defValue, final Serializable pk, final FilterNode node) {
|
||||||
return findColumnDBAsync(info, tables, sql, onlypk, column, defValue, pk, node).join();
|
return findColumnDBAsync(info, tables, sql, onlypk, column, defValue, pk, node).join();
|
||||||
}
|
}
|
||||||
|
|
||||||
//判断记录是否存在
|
//判断记录是否存在
|
||||||
protected <T> boolean existsDB(final EntityInfo<T> info, final String[] tables, final String sql, final boolean onlypk,
|
protected <T> boolean existsDB(final EntityInfo<T> info, final String[] tables, final String sql, final boolean onlypk,
|
||||||
final Serializable pk, final FilterNode node) {
|
final Serializable pk, final FilterNode node) {
|
||||||
return existsDBAsync(info, tables, sql, onlypk, pk, node).join();
|
return existsDBAsync(info, tables, sql, onlypk, pk, node).join();
|
||||||
}
|
}
|
||||||
|
|
||||||
//查询一页数据
|
//查询一页数据
|
||||||
protected <T> Sheet<T> querySheetDB(final EntityInfo<T> info, final boolean readcache, final boolean needtotal,
|
protected <T> Sheet<T> querySheetDB(final EntityInfo<T> info, final boolean readcache, final boolean needtotal,
|
||||||
final boolean distinct, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
final boolean distinct, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||||
return querySheetDBAsync(info, readcache, needtotal, distinct, selects, flipper, node).join();
|
return querySheetDBAsync(info, readcache, needtotal, distinct, selects, flipper, node).join();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T> CharSequence createSQLJoin(FilterNode node, final Function<Class, EntityInfo> func, final boolean update,
|
protected <T> CharSequence createSQLJoin(FilterNode node, final Function<Class, EntityInfo> func, final boolean update,
|
||||||
final Map<Class, String> joinTabalis, final Set<String> haset, final EntityInfo<T> info) {
|
final Map<Class, String> joinTabalis, final Set<String> haset, final EntityInfo<T> info) {
|
||||||
return node == null ? null : node.createSQLJoin(func, update, joinTabalis, haset, info);
|
return node == null ? null : node.createSQLJoin(func, update, joinTabalis, haset, info);
|
||||||
}
|
}
|
||||||
@@ -1181,7 +1184,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
if ("postgresql".equals(dbtype()) && flipper != null && flipper.getLimit() > 0) {
|
if ("postgresql".equals(dbtype()) && flipper != null && flipper.getLimit() > 0) {
|
||||||
List<String> sqls = new ArrayList<>();
|
List<String> sqls = new ArrayList<>();
|
||||||
for (String table : tables) {
|
for (String table : tables) {
|
||||||
String sql = "DELETE FROM " + table + " a" + (join1 == null ? "" : (", " + join1))
|
String sql = "DELETE FROM " + table + " a" + (join1 == null ? "" : (", " + join1))
|
||||||
+ " WHERE " + info.getPrimarySQLColumn() + " IN (SELECT " + info.getPrimaryField() + " FROM " + table
|
+ " WHERE " + info.getPrimarySQLColumn() + " IN (SELECT " + info.getPrimaryField() + " FROM " + table
|
||||||
+ join2AndWhere + info.createSQLOrderby(flipper) + " OFFSET 0 LIMIT " + flipper.getLimit() + ")";
|
+ join2AndWhere + info.createSQLOrderby(flipper) + " OFFSET 0 LIMIT " + flipper.getLimit() + ")";
|
||||||
sqls.add(sql);
|
sqls.add(sql);
|
||||||
@@ -1191,7 +1194,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
boolean mysql = "mysql".equals(dbtype());
|
boolean mysql = "mysql".equals(dbtype());
|
||||||
List<String> sqls = new ArrayList<>();
|
List<String> sqls = new ArrayList<>();
|
||||||
for (String table : tables) {
|
for (String table : tables) {
|
||||||
String sql = "DELETE " + (mysql ? "a" : "") + " FROM " + table + " a"
|
String sql = "DELETE " + (mysql ? "a" : "") + " FROM " + table + " a"
|
||||||
+ (join1 == null ? "" : (", " + join1)) + join2AndWhere + info.createSQLOrderby(flipper)
|
+ (join1 == null ? "" : (", " + join1)) + join2AndWhere + info.createSQLOrderby(flipper)
|
||||||
+ ((mysql && flipper != null && flipper.getLimit() > 0) ? (" LIMIT " + flipper.getLimit()) : "");
|
+ ((mysql && flipper != null && flipper.getLimit() > 0) ? (" LIMIT " + flipper.getLimit()) : "");
|
||||||
sqls.add(sql);
|
sqls.add(sql);
|
||||||
@@ -1558,11 +1561,11 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
Attribute attr = info.getAttribute(column);
|
Attribute attr = info.getAttribute(column);
|
||||||
Serializable val = getSQLAttrValue(info, attr, colval);
|
Serializable val = getSQLAttrValue(info, attr, colval);
|
||||||
if (val instanceof byte[]) {
|
if (val instanceof byte[]) {
|
||||||
return new UpdateSqlInfo(true, "UPDATE " + info.getTable(pk) + " SET " + info.getSQLColumn(null, column) + "=" + prepareParamSign(1)
|
return new UpdateSqlInfo(true, "UPDATE " + info.getTable(pk) + " SET " + info.getSQLColumn(null, column) + "=" + prepareParamSign(1)
|
||||||
+ " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter), (byte[]) val);
|
+ " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter), (byte[]) val);
|
||||||
} else {
|
} else {
|
||||||
return new UpdateSqlInfo(false, "UPDATE " + info.getTable(pk) + " SET " + info.getSQLColumn(null, column) + "="
|
return new UpdateSqlInfo(false, "UPDATE " + info.getTable(pk) + " SET " + info.getSQLColumn(null, column) + "="
|
||||||
+ info.formatSQLValue(column, val, sqlFormatter)
|
+ info.formatSQLValue(column, val, sqlFormatter)
|
||||||
+ " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter));
|
+ " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1745,7 +1748,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
if (setsql.length() < 1) {
|
if (setsql.length() < 1) {
|
||||||
throw new SourceException("update non column-value array");
|
throw new SourceException("update non column-value array");
|
||||||
}
|
}
|
||||||
String sql = "UPDATE " + info.getTable(pk) + " SET " + setsql
|
String sql = "UPDATE " + info.getTable(pk) + " SET " + setsql
|
||||||
+ " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter);
|
+ " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter);
|
||||||
return new UpdateSqlInfo(false, sql, blobs);
|
return new UpdateSqlInfo(false, sql, blobs);
|
||||||
}
|
}
|
||||||
@@ -2240,7 +2243,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
return sql;
|
return sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T, N extends Number> CompletableFuture<Map<String, N>> getNumberMapDBApply(EntityInfo<T> info,
|
protected <T, N extends Number> CompletableFuture<Map<String, N>> getNumberMapDBApply(EntityInfo<T> info,
|
||||||
CompletableFuture<? extends DataResultSet> future, FilterFuncColumn... columns) {
|
CompletableFuture<? extends DataResultSet> future, FilterFuncColumn... columns) {
|
||||||
return future.thenApply((DataResultSet dataset) -> {
|
return future.thenApply((DataResultSet dataset) -> {
|
||||||
final Map map = new HashMap<>();
|
final Map map = new HashMap<>();
|
||||||
@@ -2264,7 +2267,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
|
|
||||||
//------------------------ getNumberResultCompose -----------------------
|
//------------------------ getNumberResultCompose -----------------------
|
||||||
@Override
|
@Override
|
||||||
public Number getNumberResult(final Class entityClass, final FilterFunc func, final Number defVal,
|
public Number getNumberResult(final Class entityClass, final FilterFunc func, final Number defVal,
|
||||||
final String column, final FilterNode node) {
|
final String column, final FilterNode node) {
|
||||||
final EntityInfo<?> info = loadEntityInfo(entityClass);
|
final EntityInfo<?> info = loadEntityInfo(entityClass);
|
||||||
final EntityCache cache = info.getCache();
|
final EntityCache cache = info.getCache();
|
||||||
@@ -2287,7 +2290,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<Number> getNumberResultAsync(final Class entityClass, final FilterFunc func,
|
public CompletableFuture<Number> getNumberResultAsync(final Class entityClass, final FilterFunc func,
|
||||||
final Number defVal, final String column, final FilterNode node) {
|
final Number defVal, final String column, final FilterNode node) {
|
||||||
final EntityInfo info = loadEntityInfo(entityClass);
|
final EntityInfo info = loadEntityInfo(entityClass);
|
||||||
final EntityCache cache = info.getCache();
|
final EntityCache cache = info.getCache();
|
||||||
@@ -2308,7 +2311,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T> String getNumberResultSql(final EntityInfo<T> info, final Class entityClass,
|
protected <T> String getNumberResultSql(final EntityInfo<T> info, final Class entityClass,
|
||||||
final String[] tables, final FilterFunc func, final Number defVal, final String column, final FilterNode node) {
|
final String[] tables, final FilterFunc func, final Number defVal, final String column, final FilterNode node) {
|
||||||
final Map<Class, String> joinTabalis = node == null ? null : node.getJoinTabalis();
|
final Map<Class, String> joinTabalis = node == null ? null : node.getJoinTabalis();
|
||||||
final Set<String> haset = new HashSet<>();
|
final Set<String> haset = new HashSet<>();
|
||||||
@@ -2319,7 +2322,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
return sql;
|
return sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T> CompletableFuture<Number> getNumberResultDBApply(EntityInfo<T> info,
|
protected <T> CompletableFuture<Number> getNumberResultDBApply(EntityInfo<T> info,
|
||||||
CompletableFuture<? extends DataResultSet> future, Number defVal, String column) {
|
CompletableFuture<? extends DataResultSet> future, Number defVal, String column) {
|
||||||
return future.thenApply((DataResultSet dataset) -> {
|
return future.thenApply((DataResultSet dataset) -> {
|
||||||
Number rs = defVal;
|
Number rs = defVal;
|
||||||
@@ -2336,7 +2339,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
|
|
||||||
//------------------------ queryColumnMapCompose ------------------------
|
//------------------------ queryColumnMapCompose ------------------------
|
||||||
@Override
|
@Override
|
||||||
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass,
|
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass,
|
||||||
final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) {
|
final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) {
|
||||||
final EntityInfo info = loadEntityInfo(entityClass);
|
final EntityInfo info = loadEntityInfo(entityClass);
|
||||||
final EntityCache cache = info.getCache();
|
final EntityCache cache = info.getCache();
|
||||||
@@ -2359,7 +2362,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapAsync(final Class<T> entityClass,
|
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapAsync(final Class<T> entityClass,
|
||||||
final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) {
|
final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) {
|
||||||
final EntityInfo info = loadEntityInfo(entityClass);
|
final EntityInfo info = loadEntityInfo(entityClass);
|
||||||
final EntityCache cache = info.getCache();
|
final EntityCache cache = info.getCache();
|
||||||
@@ -2380,14 +2383,14 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T> String queryColumnMapSql(final EntityInfo<T> info, final String[] tables, final String keyColumn,
|
protected <T> String queryColumnMapSql(final EntityInfo<T> info, final String[] tables, final String keyColumn,
|
||||||
final FilterFunc func, final String funcColumn, FilterNode node) {
|
final FilterFunc func, final String funcColumn, FilterNode node) {
|
||||||
final String keySqlColumn = info.getSQLColumn(null, keyColumn);
|
final String keySqlColumn = info.getSQLColumn(null, keyColumn);
|
||||||
final Map<Class, String> joinTabalis = node == null ? null : node.getJoinTabalis();
|
final Map<Class, String> joinTabalis = node == null ? null : node.getJoinTabalis();
|
||||||
final Set<String> haset = new HashSet<>();
|
final Set<String> haset = new HashSet<>();
|
||||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, false, joinTabalis, haset, info);
|
final CharSequence join = node == null ? null : node.createSQLJoin(this, false, joinTabalis, haset, info);
|
||||||
final CharSequence where = node == null ? null : node.createSQLExpress(this, info, joinTabalis);
|
final CharSequence where = node == null ? null : node.createSQLExpress(this, info, joinTabalis);
|
||||||
final String funcSqlColumn = func == null ? info.getSQLColumn("a", funcColumn)
|
final String funcSqlColumn = func == null ? info.getSQLColumn("a", funcColumn)
|
||||||
: func.getColumn((funcColumn == null || funcColumn.isEmpty() ? "*" : info.getSQLColumn("a", funcColumn)));
|
: func.getColumn((funcColumn == null || funcColumn.isEmpty() ? "*" : info.getSQLColumn("a", funcColumn)));
|
||||||
|
|
||||||
String joinAndWhere = (join == null ? "" : join) + ((where == null || where.length() == 0) ? "" : (" WHERE " + where));
|
String joinAndWhere = (join == null ? "" : join) + ((where == null || where.length() == 0) ? "" : (" WHERE " + where));
|
||||||
@@ -2409,7 +2412,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
return sql;
|
return sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapDBApply(EntityInfo<T> info,
|
protected <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapDBApply(EntityInfo<T> info,
|
||||||
CompletableFuture<? extends DataResultSet> future, final String keyColumn) {
|
CompletableFuture<? extends DataResultSet> future, final String keyColumn) {
|
||||||
return future.thenApply((DataResultSet dataset) -> {
|
return future.thenApply((DataResultSet dataset) -> {
|
||||||
Map<K, N> rs = new LinkedHashMap<>();
|
Map<K, N> rs = new LinkedHashMap<>();
|
||||||
@@ -2422,7 +2425,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, K extends Serializable, N extends Number> Map<K, N[]> queryColumnMap(final Class<T> entityClass,
|
public <T, K extends Serializable, N extends Number> Map<K, N[]> queryColumnMap(final Class<T> entityClass,
|
||||||
final ColumnNode[] funcNodes, final String groupByColumn, final FilterNode node) {
|
final ColumnNode[] funcNodes, final String groupByColumn, final FilterNode node) {
|
||||||
Map<K[], N[]> map = queryColumnMap(entityClass, funcNodes, Utility.ofArray(groupByColumn), node);
|
Map<K[], N[]> map = queryColumnMap(entityClass, funcNodes, Utility.ofArray(groupByColumn), node);
|
||||||
final Map<K, N[]> rs = new LinkedHashMap<>();
|
final Map<K, N[]> rs = new LinkedHashMap<>();
|
||||||
@@ -2431,7 +2434,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N[]>> queryColumnMapAsync(final Class<T> entityClass,
|
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N[]>> queryColumnMapAsync(final Class<T> entityClass,
|
||||||
final ColumnNode[] funcNodes, final String groupByColumn, final FilterNode node) {
|
final ColumnNode[] funcNodes, final String groupByColumn, final FilterNode node) {
|
||||||
CompletableFuture<Map<K[], N[]>> future = queryColumnMapAsync(entityClass, funcNodes, Utility.ofArray(groupByColumn), node);
|
CompletableFuture<Map<K[], N[]>> future = queryColumnMapAsync(entityClass, funcNodes, Utility.ofArray(groupByColumn), node);
|
||||||
return future.thenApply(map -> {
|
return future.thenApply(map -> {
|
||||||
@@ -2442,7 +2445,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, K extends Serializable, N extends Number> Map<K[], N[]> queryColumnMap(final Class<T> entityClass,
|
public <T, K extends Serializable, N extends Number> Map<K[], N[]> queryColumnMap(final Class<T> entityClass,
|
||||||
final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node) {
|
final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node) {
|
||||||
final EntityInfo info = loadEntityInfo(entityClass);
|
final EntityInfo info = loadEntityInfo(entityClass);
|
||||||
final EntityCache cache = info.getCache();
|
final EntityCache cache = info.getCache();
|
||||||
@@ -2464,7 +2467,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapAsync(final Class<T> entityClass,
|
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapAsync(final Class<T> entityClass,
|
||||||
final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node) {
|
final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node) {
|
||||||
final EntityInfo info = loadEntityInfo(entityClass);
|
final EntityInfo info = loadEntityInfo(entityClass);
|
||||||
final EntityCache cache = info.getCache();
|
final EntityCache cache = info.getCache();
|
||||||
@@ -2485,7 +2488,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T> String queryColumnMapSql(final EntityInfo<T> info, final String[] tables, final ColumnNode[] funcNodes,
|
protected <T> String queryColumnMapSql(final EntityInfo<T> info, final String[] tables, final ColumnNode[] funcNodes,
|
||||||
final String[] groupByColumns, final FilterNode node) {
|
final String[] groupByColumns, final FilterNode node) {
|
||||||
final StringBuilder groupBySqlColumns = new StringBuilder();
|
final StringBuilder groupBySqlColumns = new StringBuilder();
|
||||||
if (groupByColumns != null && groupByColumns.length > 0) {
|
if (groupByColumns != null && groupByColumns.length > 0) {
|
||||||
@@ -2545,7 +2548,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
return sql;
|
return sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapDBApply(EntityInfo<T> info,
|
protected <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapDBApply(EntityInfo<T> info,
|
||||||
CompletableFuture<? extends DataResultSet> future, final ColumnNode[] funcNodes, final String[] groupByColumns) {
|
CompletableFuture<? extends DataResultSet> future, final ColumnNode[] funcNodes, final String[] groupByColumns) {
|
||||||
return future.thenApply((DataResultSet dataset) -> {
|
return future.thenApply((DataResultSet dataset) -> {
|
||||||
Map rs = new LinkedHashMap<>();
|
Map rs = new LinkedHashMap<>();
|
||||||
@@ -2684,7 +2687,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
|
|
||||||
protected <T> String findSql(final EntityInfo<T> info, final SelectColumn selects, Serializable pk) {
|
protected <T> String findSql(final EntityInfo<T> info, final SelectColumn selects, Serializable pk) {
|
||||||
String column = info.getPrimarySQLColumn();
|
String column = info.getPrimarySQLColumn();
|
||||||
final String sql = "SELECT " + info.getQueryColumns(null, selects) + " FROM " + info.getTable(pk)
|
final String sql = "SELECT " + info.getQueryColumns(null, selects) + " FROM " + info.getTable(pk)
|
||||||
+ " WHERE " + column + "=" + info.formatSQLValue(column, pk, sqlFormatter);
|
+ " WHERE " + column + "=" + info.formatSQLValue(column, pk, sqlFormatter);
|
||||||
return sql;
|
return sql;
|
||||||
}
|
}
|
||||||
@@ -2748,7 +2751,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
return sql;
|
return sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T> CompletableFuture<T> findDBApply(EntityInfo<T> info, CompletableFuture<? extends DataResultSet> future,
|
protected <T> CompletableFuture<T> findDBApply(EntityInfo<T> info, CompletableFuture<? extends DataResultSet> future,
|
||||||
boolean onlypk, SelectColumn selects) {
|
boolean onlypk, SelectColumn selects) {
|
||||||
return future.thenApply((DataResultSet pgset) -> {
|
return future.thenApply((DataResultSet pgset) -> {
|
||||||
T rs = pgset.next() ? (onlypk && selects == null ? getEntityValue(info, null, pgset) : getEntityValue(info, selects, pgset)) : null;
|
T rs = pgset.next() ? (onlypk && selects == null ? getEntityValue(info, null, pgset) : getEntityValue(info, selects, pgset)) : null;
|
||||||
@@ -2802,7 +2805,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected <T> String findColumnSql(final EntityInfo<T> info, String column, final Serializable defValue, final Serializable pk) {
|
protected <T> String findColumnSql(final EntityInfo<T> info, String column, final Serializable defValue, final Serializable pk) {
|
||||||
return "SELECT " + info.getSQLColumn(null, column) + " FROM " + info.getTable(pk)
|
return "SELECT " + info.getSQLColumn(null, column) + " FROM " + info.getTable(pk)
|
||||||
+ " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter);
|
+ " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2871,7 +2874,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
return sql;
|
return sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T> CompletableFuture<Serializable> findColumnDBApply(EntityInfo<T> info,
|
protected <T> CompletableFuture<Serializable> findColumnDBApply(EntityInfo<T> info,
|
||||||
CompletableFuture<? extends DataResultSet> future, boolean onlypk, String column, Serializable defValue) {
|
CompletableFuture<? extends DataResultSet> future, boolean onlypk, String column, Serializable defValue) {
|
||||||
return future.thenApply((DataResultSet dataset) -> {
|
return future.thenApply((DataResultSet dataset) -> {
|
||||||
Serializable val = defValue;
|
Serializable val = defValue;
|
||||||
@@ -3024,7 +3027,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> CompletableFuture<Set<V>> queryColumnSetAsync(final String selectedColumn,
|
public <T, V extends Serializable> CompletableFuture<Set<V>> queryColumnSetAsync(final String selectedColumn,
|
||||||
final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||||
return querySetAsync(clazz, SelectColumn.includes(selectedColumn), flipper, node).thenApply((Set<T> list) -> {
|
return querySetAsync(clazz, SelectColumn.includes(selectedColumn), flipper, node).thenApply((Set<T> list) -> {
|
||||||
final Set<V> rs = new LinkedHashSet<>();
|
final Set<V> rs = new LinkedHashSet<>();
|
||||||
@@ -3041,7 +3044,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz,
|
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz,
|
||||||
final Flipper flipper, final FilterNode node) {
|
final Flipper flipper, final FilterNode node) {
|
||||||
final List<T> list = queryList(clazz, SelectColumn.includes(selectedColumn), flipper, node);
|
final List<T> list = queryList(clazz, SelectColumn.includes(selectedColumn), flipper, node);
|
||||||
final List<V> rs = new ArrayList<>();
|
final List<V> rs = new ArrayList<>();
|
||||||
@@ -3057,7 +3060,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> CompletableFuture<List<V>> queryColumnListAsync(final String selectedColumn,
|
public <T, V extends Serializable> CompletableFuture<List<V>> queryColumnListAsync(final String selectedColumn,
|
||||||
final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||||
return queryListAsync(clazz, SelectColumn.includes(selectedColumn), flipper, node).thenApply((List<T> list) -> {
|
return queryListAsync(clazz, SelectColumn.includes(selectedColumn), flipper, node).thenApply((List<T> list) -> {
|
||||||
final List<V> rs = new ArrayList<>();
|
final List<V> rs = new ArrayList<>();
|
||||||
@@ -3074,7 +3077,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> Sheet<V> queryColumnSheet(final String selectedColumn, final Class<T> clazz,
|
public <T, V extends Serializable> Sheet<V> queryColumnSheet(final String selectedColumn, final Class<T> clazz,
|
||||||
final Flipper flipper, final FilterNode node) {
|
final Flipper flipper, final FilterNode node) {
|
||||||
Sheet<T> sheet = querySheet(clazz, SelectColumn.includes(selectedColumn), flipper, node);
|
Sheet<T> sheet = querySheet(clazz, SelectColumn.includes(selectedColumn), flipper, node);
|
||||||
final Sheet<V> rs = new Sheet<>();
|
final Sheet<V> rs = new Sheet<>();
|
||||||
@@ -3093,7 +3096,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T, V extends Serializable> CompletableFuture<Sheet<V>> queryColumnSheetAsync(final String selectedColumn,
|
public <T, V extends Serializable> CompletableFuture<Sheet<V>> queryColumnSheetAsync(final String selectedColumn,
|
||||||
final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||||
return querySheetAsync(clazz, SelectColumn.includes(selectedColumn), flipper, node).thenApply((Sheet<T> sheet) -> {
|
return querySheetAsync(clazz, SelectColumn.includes(selectedColumn), flipper, node).thenApply((Sheet<T> sheet) -> {
|
||||||
final Sheet<V> rs = new Sheet<>();
|
final Sheet<V> rs = new Sheet<>();
|
||||||
@@ -3143,7 +3146,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <K extends Serializable, T> CompletableFuture<Map<K, T>> queryMapAsync(final Class<T> clazz,
|
public <K extends Serializable, T> CompletableFuture<Map<K, T>> queryMapAsync(final Class<T> clazz,
|
||||||
final SelectColumn selects, final Stream<K> keyStream) {
|
final SelectColumn selects, final Stream<K> keyStream) {
|
||||||
if (keyStream == null) {
|
if (keyStream == null) {
|
||||||
return CompletableFuture.completedFuture(new LinkedHashMap<>());
|
return CompletableFuture.completedFuture(new LinkedHashMap<>());
|
||||||
@@ -3190,7 +3193,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <K extends Serializable, T> CompletableFuture<Map<K, T>> queryMapAsync(final Class<T> clazz,
|
public <K extends Serializable, T> CompletableFuture<Map<K, T>> queryMapAsync(final Class<T> clazz,
|
||||||
final SelectColumn selects, final FilterNode node) {
|
final SelectColumn selects, final FilterNode node) {
|
||||||
return queryListAsync(clazz, selects, node).thenApply((List<T> rs) -> {
|
return queryListAsync(clazz, selects, node).thenApply((List<T> rs) -> {
|
||||||
final EntityInfo<T> info = loadEntityInfo(clazz);
|
final EntityInfo<T> info = loadEntityInfo(clazz);
|
||||||
@@ -3260,7 +3263,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T> Sheet<T> querySheet(final boolean readCache, final boolean needTotal, final boolean distinct,
|
protected <T> Sheet<T> querySheet(final boolean readCache, final boolean needTotal, final boolean distinct,
|
||||||
final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||||
final EntityInfo<T> info = loadEntityInfo(clazz);
|
final EntityInfo<T> info = loadEntityInfo(clazz);
|
||||||
final EntityCache<T> cache = info.getCache();
|
final EntityCache<T> cache = info.getCache();
|
||||||
@@ -3275,7 +3278,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
return querySheetDB(info, readCache, needTotal, distinct, selects, flipper, node);
|
return querySheetDB(info, readCache, needTotal, distinct, selects, flipper, node);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T> CompletableFuture<Sheet<T>> querySheetAsync(final boolean readCache, final boolean needTotal,
|
protected <T> CompletableFuture<Sheet<T>> querySheetAsync(final boolean readCache, final boolean needTotal,
|
||||||
final boolean distinct, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
final boolean distinct, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||||
final EntityInfo<T> info = loadEntityInfo(clazz);
|
final EntityInfo<T> info = loadEntityInfo(clazz);
|
||||||
final EntityCache<T> cache = info.getCache();
|
final EntityCache<T> cache = info.getCache();
|
||||||
|
|||||||
@@ -416,7 +416,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
} catch (SQLException se) {
|
} catch (SQLException se) {
|
||||||
conn.rollback(prestmt, prestmts);
|
conn.rollback(prestmt, prestmts);
|
||||||
stmtsRef.clear();
|
stmtsRef.clear();
|
||||||
if (!isTableNotExist(info, se.getSQLState())) {
|
if (!isTableNotExist(info, se, se.getSQLState())) {
|
||||||
throw se;
|
throw se;
|
||||||
}
|
}
|
||||||
if (info.getTableStrategy() == null) { //单库单表
|
if (info.getTableStrategy() == null) { //单库单表
|
||||||
@@ -460,7 +460,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
}
|
}
|
||||||
conn.offerUpdateStatement(stmt);
|
conn.offerUpdateStatement(stmt);
|
||||||
} catch (SQLException sqle) { //多进程并发时可能会出现重复建表
|
} catch (SQLException sqle) { //多进程并发时可能会出现重复建表
|
||||||
if (isTableNotExist(info, sqle.getSQLState())) {
|
if (isTableNotExist(info, sqle, sqle.getSQLState())) {
|
||||||
if (newCatalogs.isEmpty()) { //分表的原始表不存在
|
if (newCatalogs.isEmpty()) { //分表的原始表不存在
|
||||||
String[] tableSqls = createTableSqls(info);
|
String[] tableSqls = createTableSqls(info);
|
||||||
if (tableSqls != null) {
|
if (tableSqls != null) {
|
||||||
@@ -514,7 +514,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
}
|
}
|
||||||
conn.offerUpdateStatement(stmt);
|
conn.offerUpdateStatement(stmt);
|
||||||
} catch (SQLException sqle2) {
|
} catch (SQLException sqle2) {
|
||||||
if (isTableNotExist(info, sqle2.getSQLState())) {
|
if (isTableNotExist(info, sqle2, sqle2.getSQLState())) {
|
||||||
String[] tableSqls = createTableSqls(info);
|
String[] tableSqls = createTableSqls(info);
|
||||||
if (tableSqls != null) { //创建原始表
|
if (tableSqls != null) { //创建原始表
|
||||||
stmt = conn.createUpdateStatement();
|
stmt = conn.createUpdateStatement();
|
||||||
@@ -719,7 +719,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
return c;
|
return c;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
conn.rollback(stmt);
|
conn.rollback(stmt);
|
||||||
if (isTableNotExist(info, e.getSQLState())) {
|
if (isTableNotExist(info, e, e.getSQLState())) {
|
||||||
if (info.getTableStrategy() == null) {
|
if (info.getTableStrategy() == null) {
|
||||||
String[] tableSqls = createTableSqls(info);
|
String[] tableSqls = createTableSqls(info);
|
||||||
if (tableSqls != null) {
|
if (tableSqls != null) {
|
||||||
@@ -819,7 +819,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
slowLog(s, sqls);
|
slowLog(s, sqls);
|
||||||
return c;
|
return c;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
if (isTableNotExist(info, e.getSQLState())) {
|
if (isTableNotExist(info, e, e.getSQLState())) {
|
||||||
if (info.getTableStrategy() == null) {
|
if (info.getTableStrategy() == null) {
|
||||||
//单表结构不存在
|
//单表结构不存在
|
||||||
return 0;
|
return 0;
|
||||||
@@ -910,7 +910,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
stmt = conn.createUpdateStatement();
|
stmt = conn.createUpdateStatement();
|
||||||
c = stmt.executeUpdate(copyTableSql);
|
c = stmt.executeUpdate(copyTableSql);
|
||||||
} catch (SQLException se) {
|
} catch (SQLException se) {
|
||||||
if (isTableNotExist(info, se.getSQLState())) { //分表的原始表不存在
|
if (isTableNotExist(info, se, se.getSQLState())) { //分表的原始表不存在
|
||||||
conn.offerUpdateStatement(stmt);
|
conn.offerUpdateStatement(stmt);
|
||||||
final String newTable = info.getTable(pk);
|
final String newTable = info.getTable(pk);
|
||||||
if (newTable.indexOf('.') <= 0) { //分表的原始表不存在
|
if (newTable.indexOf('.') <= 0) { //分表的原始表不存在
|
||||||
@@ -958,7 +958,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
c = stmt.executeUpdate(copyTableSql);
|
c = stmt.executeUpdate(copyTableSql);
|
||||||
} catch (SQLException sqle2) {
|
} catch (SQLException sqle2) {
|
||||||
conn.offerUpdateStatement(stmt);
|
conn.offerUpdateStatement(stmt);
|
||||||
if (isTableNotExist(info, sqle2.getSQLState())) {
|
if (isTableNotExist(info, sqle2, sqle2.getSQLState())) {
|
||||||
if (info.isLoggable(logger, Level.FINEST, sqls[0])) {
|
if (info.isLoggable(logger, Level.FINEST, sqls[0])) {
|
||||||
logger.finest(info.getType().getSimpleName() + " createTable sql=" + Arrays.toString(sqls));
|
logger.finest(info.getType().getSimpleName() + " createTable sql=" + Arrays.toString(sqls));
|
||||||
}
|
}
|
||||||
@@ -1021,7 +1021,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
slowLog(s, sqls);
|
slowLog(s, sqls);
|
||||||
return c;
|
return c;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
if (isTableNotExist(info, e.getSQLState())) {
|
if (isTableNotExist(info, e, e.getSQLState())) {
|
||||||
if (info.getTableStrategy() == null) {
|
if (info.getTableStrategy() == null) {
|
||||||
//单表结构不存在
|
//单表结构不存在
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1136,7 +1136,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
}
|
}
|
||||||
} catch (SQLException se) {
|
} catch (SQLException se) {
|
||||||
conn.rollback(prestmt, prestmts);
|
conn.rollback(prestmt, prestmts);
|
||||||
if (isTableNotExist(info, se.getSQLState())) {
|
if (isTableNotExist(info, se, se.getSQLState())) {
|
||||||
if (info.getTableStrategy() == null) {
|
if (info.getTableStrategy() == null) {
|
||||||
String[] tableSqls = createTableSqls(info);
|
String[] tableSqls = createTableSqls(info);
|
||||||
if (tableSqls != null) {
|
if (tableSqls != null) {
|
||||||
@@ -1350,7 +1350,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
}
|
}
|
||||||
} catch (SQLException se) {
|
} catch (SQLException se) {
|
||||||
conn.rollback(onestmt, prestmts);
|
conn.rollback(onestmt, prestmts);
|
||||||
if (isTableNotExist(info, se.getSQLState())) {
|
if (isTableNotExist(info, se, se.getSQLState())) {
|
||||||
if (info.getTableStrategy() == null) {
|
if (info.getTableStrategy() == null) {
|
||||||
String[] tableSqls = createTableSqls(info);
|
String[] tableSqls = createTableSqls(info);
|
||||||
if (tableSqls != null) {
|
if (tableSqls != null) {
|
||||||
@@ -1467,7 +1467,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
return map;
|
return map;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
map.clear();
|
map.clear();
|
||||||
if (isTableNotExist(info, e.getSQLState())) {
|
if (isTableNotExist(info, e, e.getSQLState())) {
|
||||||
if (info.getTableStrategy() == null) {
|
if (info.getTableStrategy() == null) {
|
||||||
//读操作不自动创建表,可能存在读写分离
|
//读操作不自动创建表,可能存在读写分离
|
||||||
return map;
|
return map;
|
||||||
@@ -1563,7 +1563,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
slowLog(s, sql);
|
slowLog(s, sql);
|
||||||
return rs;
|
return rs;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
if (isTableNotExist(info, e.getSQLState())) {
|
if (isTableNotExist(info, e, e.getSQLState())) {
|
||||||
if (info.getTableStrategy() == null) {
|
if (info.getTableStrategy() == null) {
|
||||||
//读操作不自动创建表,可能存在读写分离
|
//读操作不自动创建表,可能存在读写分离
|
||||||
return defVal;
|
return defVal;
|
||||||
@@ -1654,7 +1654,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
return rs;
|
return rs;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
rs.clear();
|
rs.clear();
|
||||||
if (isTableNotExist(info, e.getSQLState())) {
|
if (isTableNotExist(info, e, e.getSQLState())) {
|
||||||
if (info.getTableStrategy() == null) {
|
if (info.getTableStrategy() == null) {
|
||||||
//读操作不自动创建表,可能存在读写分离
|
//读操作不自动创建表,可能存在读写分离
|
||||||
return rs;
|
return rs;
|
||||||
@@ -1757,7 +1757,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
return rs;
|
return rs;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
rs.clear();
|
rs.clear();
|
||||||
if (isTableNotExist(info, e.getSQLState())) {
|
if (isTableNotExist(info, e, e.getSQLState())) {
|
||||||
if (info.getTableStrategy() == null) {
|
if (info.getTableStrategy() == null) {
|
||||||
//读操作不自动创建表,可能存在读写分离
|
//读操作不自动创建表,可能存在读写分离
|
||||||
return rs;
|
return rs;
|
||||||
@@ -1851,7 +1851,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
slowLog(s, prepareSQL);
|
slowLog(s, prepareSQL);
|
||||||
return rs;
|
return rs;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
if (isTableNotExist(info, e.getSQLState())) {
|
if (isTableNotExist(info, e, e.getSQLState())) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
throw new SourceException(e);
|
throw new SourceException(e);
|
||||||
@@ -1884,7 +1884,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
slowLog(s, sql);
|
slowLog(s, sql);
|
||||||
return rs;
|
return rs;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
if (isTableNotExist(info, e.getSQLState())) {
|
if (isTableNotExist(info, e, e.getSQLState())) {
|
||||||
if (info.getTableStrategy() == null) {
|
if (info.getTableStrategy() == null) {
|
||||||
//读操作不自动创建表,可能存在读写分离
|
//读操作不自动创建表,可能存在读写分离
|
||||||
return null;
|
return null;
|
||||||
@@ -1968,7 +1968,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
slowLog(s, sql);
|
slowLog(s, sql);
|
||||||
return val == null ? defValue : val;
|
return val == null ? defValue : val;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
if (isTableNotExist(info, e.getSQLState())) {
|
if (isTableNotExist(info, e, e.getSQLState())) {
|
||||||
if (info.getTableStrategy() == null) {
|
if (info.getTableStrategy() == null) {
|
||||||
//读操作不自动创建表,可能存在读写分离
|
//读操作不自动创建表,可能存在读写分离
|
||||||
return defValue;
|
return defValue;
|
||||||
@@ -2054,7 +2054,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
slowLog(s, sql);
|
slowLog(s, sql);
|
||||||
return rs;
|
return rs;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
if (isTableNotExist(info, e.getSQLState())) {
|
if (isTableNotExist(info, e, e.getSQLState())) {
|
||||||
if (info.getTableStrategy() == null) {
|
if (info.getTableStrategy() == null) {
|
||||||
//读操作不自动创建表,可能存在读写分离
|
//读操作不自动创建表,可能存在读写分离
|
||||||
return false;
|
return false;
|
||||||
@@ -2142,7 +2142,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
slowLog(s, prepareSQL);
|
slowLog(s, prepareSQL);
|
||||||
return list;
|
return list;
|
||||||
} catch (SQLException se) {
|
} catch (SQLException se) {
|
||||||
if (isTableNotExist(info, se.getSQLState())) {
|
if (isTableNotExist(info, se, se.getSQLState())) {
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
throw new SourceException(se);
|
throw new SourceException(se);
|
||||||
@@ -2190,7 +2190,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
slowLog(s, prepareSQL);
|
slowLog(s, prepareSQL);
|
||||||
return Sheet.asSheet(list);
|
return Sheet.asSheet(list);
|
||||||
} catch (SQLException se) {
|
} catch (SQLException se) {
|
||||||
if (isTableNotExist(info, se.getSQLState())) {
|
if (isTableNotExist(info, se, se.getSQLState())) {
|
||||||
return Sheet.asSheet(list);
|
return Sheet.asSheet(list);
|
||||||
}
|
}
|
||||||
throw new SourceException(se);
|
throw new SourceException(se);
|
||||||
@@ -2228,7 +2228,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
|||||||
try {
|
try {
|
||||||
return executeQuerySheet(info, needTotal, flipper, sels, s, conn, mysqlOrPgsql, listSql, countSql);
|
return executeQuerySheet(info, needTotal, flipper, sels, s, conn, mysqlOrPgsql, listSql, countSql);
|
||||||
} catch (SQLException se) {
|
} catch (SQLException se) {
|
||||||
if (isTableNotExist(info, se.getSQLState())) {
|
if (isTableNotExist(info, se, se.getSQLState())) {
|
||||||
if (info.getTableStrategy() == null) {
|
if (info.getTableStrategy() == null) {
|
||||||
//读操作不自动创建表,可能存在读写分离
|
//读操作不自动创建表,可能存在读写分离
|
||||||
return new Sheet<>(0, new ArrayList());
|
return new Sheet<>(0, new ArrayList());
|
||||||
|
|||||||
Reference in New Issue
Block a user