优化isTableNotExist

This commit is contained in:
redkale
2024-02-29 14:48:32 +08:00
parent 49405c509b
commit 6f21745537
2 changed files with 77 additions and 74 deletions

View File

@@ -580,7 +580,10 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
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 + ';');
}
@@ -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);
//查询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);
//查询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);
//查询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);
//查询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);
//查询单条记录
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);
//查询单条记录的单个字段
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);
//判断记录是否存在
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);
//查询一页数据
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);
//插入纪录
@@ -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) {
return deleteDBAsync(info, tables, flipper, node, pkmap, sqls).join();
}
@@ -778,54 +781,54 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
}
//查询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) {
return (Map) getNumberMapDBAsync(info, tables, sql, node, columns).join();
}
//查询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) {
return getNumberResultDBAsync(info, tables, sql, func, defVal, column, node).join();
}
//查询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) {
return (Map) queryColumnMapDBAsync(info, tables, sql, keyColumn, func, funcColumn, node).join();
}
//查询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) {
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) {
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) {
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) {
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) {
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) {
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) {
List<String> sqls = new ArrayList<>();
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
+ join2AndWhere + info.createSQLOrderby(flipper) + " OFFSET 0 LIMIT " + flipper.getLimit() + ")";
sqls.add(sql);
@@ -1191,7 +1194,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
boolean mysql = "mysql".equals(dbtype());
List<String> sqls = new ArrayList<>();
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)
+ ((mysql && flipper != null && flipper.getLimit() > 0) ? (" LIMIT " + flipper.getLimit()) : "");
sqls.add(sql);
@@ -1558,11 +1561,11 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
Attribute attr = info.getAttribute(column);
Serializable val = getSQLAttrValue(info, attr, colval);
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);
} else {
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));
}
}
@@ -1745,7 +1748,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
if (setsql.length() < 1) {
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);
return new UpdateSqlInfo(false, sql, blobs);
}
@@ -2240,7 +2243,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
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) {
return future.thenApply((DataResultSet dataset) -> {
final Map map = new HashMap<>();
@@ -2264,7 +2267,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
//------------------------ getNumberResultCompose -----------------------
@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 EntityInfo<?> info = loadEntityInfo(entityClass);
final EntityCache cache = info.getCache();
@@ -2287,7 +2290,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
}
@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 EntityInfo info = loadEntityInfo(entityClass);
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 Map<Class, String> joinTabalis = node == null ? null : node.getJoinTabalis();
final Set<String> haset = new HashSet<>();
@@ -2319,7 +2322,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
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) {
return future.thenApply((DataResultSet dataset) -> {
Number rs = defVal;
@@ -2336,7 +2339,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
//------------------------ queryColumnMapCompose ------------------------
@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 EntityInfo info = loadEntityInfo(entityClass);
final EntityCache cache = info.getCache();
@@ -2359,7 +2362,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
}
@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 EntityInfo info = loadEntityInfo(entityClass);
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 String keySqlColumn = info.getSQLColumn(null, keyColumn);
final Map<Class, String> joinTabalis = node == null ? null : node.getJoinTabalis();
final Set<String> haset = new HashSet<>();
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 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)));
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;
}
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) {
return future.thenApply((DataResultSet dataset) -> {
Map<K, N> rs = new LinkedHashMap<>();
@@ -2422,7 +2425,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
}
@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) {
Map<K[], N[]> map = queryColumnMap(entityClass, funcNodes, Utility.ofArray(groupByColumn), node);
final Map<K, N[]> rs = new LinkedHashMap<>();
@@ -2431,7 +2434,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
}
@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) {
CompletableFuture<Map<K[], N[]>> future = queryColumnMapAsync(entityClass, funcNodes, Utility.ofArray(groupByColumn), node);
return future.thenApply(map -> {
@@ -2442,7 +2445,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
}
@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 EntityInfo info = loadEntityInfo(entityClass);
final EntityCache cache = info.getCache();
@@ -2464,7 +2467,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
}
@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 EntityInfo info = loadEntityInfo(entityClass);
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 StringBuilder groupBySqlColumns = new StringBuilder();
if (groupByColumns != null && groupByColumns.length > 0) {
@@ -2545,7 +2548,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
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) {
return future.thenApply((DataResultSet dataset) -> {
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) {
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);
return sql;
}
@@ -2748,7 +2751,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
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) {
return future.thenApply((DataResultSet pgset) -> {
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) {
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);
}
@@ -2871,7 +2874,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
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) {
return future.thenApply((DataResultSet dataset) -> {
Serializable val = defValue;
@@ -3024,7 +3027,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
}
@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) {
return querySetAsync(clazz, SelectColumn.includes(selectedColumn), flipper, node).thenApply((Set<T> list) -> {
final Set<V> rs = new LinkedHashSet<>();
@@ -3041,7 +3044,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
}
@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 List<T> list = queryList(clazz, SelectColumn.includes(selectedColumn), flipper, node);
final List<V> rs = new ArrayList<>();
@@ -3057,7 +3060,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
}
@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) {
return queryListAsync(clazz, SelectColumn.includes(selectedColumn), flipper, node).thenApply((List<T> list) -> {
final List<V> rs = new ArrayList<>();
@@ -3074,7 +3077,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
}
@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) {
Sheet<T> sheet = querySheet(clazz, SelectColumn.includes(selectedColumn), flipper, node);
final Sheet<V> rs = new Sheet<>();
@@ -3093,7 +3096,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
}
@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) {
return querySheetAsync(clazz, SelectColumn.includes(selectedColumn), flipper, node).thenApply((Sheet<T> sheet) -> {
final Sheet<V> rs = new Sheet<>();
@@ -3143,7 +3146,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
}
@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) {
if (keyStream == null) {
return CompletableFuture.completedFuture(new LinkedHashMap<>());
@@ -3190,7 +3193,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
}
@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) {
return queryListAsync(clazz, selects, node).thenApply((List<T> rs) -> {
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 EntityInfo<T> info = loadEntityInfo(clazz);
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);
}
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 EntityInfo<T> info = loadEntityInfo(clazz);
final EntityCache<T> cache = info.getCache();

View File

@@ -416,7 +416,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
} catch (SQLException se) {
conn.rollback(prestmt, prestmts);
stmtsRef.clear();
if (!isTableNotExist(info, se.getSQLState())) {
if (!isTableNotExist(info, se, se.getSQLState())) {
throw se;
}
if (info.getTableStrategy() == null) { //单库单表
@@ -460,7 +460,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
}
conn.offerUpdateStatement(stmt);
} catch (SQLException sqle) { //多进程并发时可能会出现重复建表
if (isTableNotExist(info, sqle.getSQLState())) {
if (isTableNotExist(info, sqle, sqle.getSQLState())) {
if (newCatalogs.isEmpty()) { //分表的原始表不存在
String[] tableSqls = createTableSqls(info);
if (tableSqls != null) {
@@ -514,7 +514,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
}
conn.offerUpdateStatement(stmt);
} catch (SQLException sqle2) {
if (isTableNotExist(info, sqle2.getSQLState())) {
if (isTableNotExist(info, sqle2, sqle2.getSQLState())) {
String[] tableSqls = createTableSqls(info);
if (tableSqls != null) { //创建原始表
stmt = conn.createUpdateStatement();
@@ -719,7 +719,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
return c;
} catch (SQLException e) {
conn.rollback(stmt);
if (isTableNotExist(info, e.getSQLState())) {
if (isTableNotExist(info, e, e.getSQLState())) {
if (info.getTableStrategy() == null) {
String[] tableSqls = createTableSqls(info);
if (tableSqls != null) {
@@ -819,7 +819,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
slowLog(s, sqls);
return c;
} catch (SQLException e) {
if (isTableNotExist(info, e.getSQLState())) {
if (isTableNotExist(info, e, e.getSQLState())) {
if (info.getTableStrategy() == null) {
//单表结构不存在
return 0;
@@ -910,7 +910,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
stmt = conn.createUpdateStatement();
c = stmt.executeUpdate(copyTableSql);
} catch (SQLException se) {
if (isTableNotExist(info, se.getSQLState())) { //分表的原始表不存在
if (isTableNotExist(info, se, se.getSQLState())) { //分表的原始表不存在
conn.offerUpdateStatement(stmt);
final String newTable = info.getTable(pk);
if (newTable.indexOf('.') <= 0) { //分表的原始表不存在
@@ -958,7 +958,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
c = stmt.executeUpdate(copyTableSql);
} catch (SQLException sqle2) {
conn.offerUpdateStatement(stmt);
if (isTableNotExist(info, sqle2.getSQLState())) {
if (isTableNotExist(info, sqle2, sqle2.getSQLState())) {
if (info.isLoggable(logger, Level.FINEST, sqls[0])) {
logger.finest(info.getType().getSimpleName() + " createTable sql=" + Arrays.toString(sqls));
}
@@ -1021,7 +1021,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
slowLog(s, sqls);
return c;
} catch (SQLException e) {
if (isTableNotExist(info, e.getSQLState())) {
if (isTableNotExist(info, e, e.getSQLState())) {
if (info.getTableStrategy() == null) {
//单表结构不存在
return 0;
@@ -1136,7 +1136,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
}
} catch (SQLException se) {
conn.rollback(prestmt, prestmts);
if (isTableNotExist(info, se.getSQLState())) {
if (isTableNotExist(info, se, se.getSQLState())) {
if (info.getTableStrategy() == null) {
String[] tableSqls = createTableSqls(info);
if (tableSqls != null) {
@@ -1350,7 +1350,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
}
} catch (SQLException se) {
conn.rollback(onestmt, prestmts);
if (isTableNotExist(info, se.getSQLState())) {
if (isTableNotExist(info, se, se.getSQLState())) {
if (info.getTableStrategy() == null) {
String[] tableSqls = createTableSqls(info);
if (tableSqls != null) {
@@ -1467,7 +1467,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
return map;
} catch (SQLException e) {
map.clear();
if (isTableNotExist(info, e.getSQLState())) {
if (isTableNotExist(info, e, e.getSQLState())) {
if (info.getTableStrategy() == null) {
//读操作不自动创建表,可能存在读写分离
return map;
@@ -1563,7 +1563,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
slowLog(s, sql);
return rs;
} catch (SQLException e) {
if (isTableNotExist(info, e.getSQLState())) {
if (isTableNotExist(info, e, e.getSQLState())) {
if (info.getTableStrategy() == null) {
//读操作不自动创建表,可能存在读写分离
return defVal;
@@ -1654,7 +1654,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
return rs;
} catch (SQLException e) {
rs.clear();
if (isTableNotExist(info, e.getSQLState())) {
if (isTableNotExist(info, e, e.getSQLState())) {
if (info.getTableStrategy() == null) {
//读操作不自动创建表,可能存在读写分离
return rs;
@@ -1757,7 +1757,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
return rs;
} catch (SQLException e) {
rs.clear();
if (isTableNotExist(info, e.getSQLState())) {
if (isTableNotExist(info, e, e.getSQLState())) {
if (info.getTableStrategy() == null) {
//读操作不自动创建表,可能存在读写分离
return rs;
@@ -1851,7 +1851,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
slowLog(s, prepareSQL);
return rs;
} catch (SQLException e) {
if (isTableNotExist(info, e.getSQLState())) {
if (isTableNotExist(info, e, e.getSQLState())) {
return null;
}
throw new SourceException(e);
@@ -1884,7 +1884,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
slowLog(s, sql);
return rs;
} catch (SQLException e) {
if (isTableNotExist(info, e.getSQLState())) {
if (isTableNotExist(info, e, e.getSQLState())) {
if (info.getTableStrategy() == null) {
//读操作不自动创建表,可能存在读写分离
return null;
@@ -1968,7 +1968,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
slowLog(s, sql);
return val == null ? defValue : val;
} catch (SQLException e) {
if (isTableNotExist(info, e.getSQLState())) {
if (isTableNotExist(info, e, e.getSQLState())) {
if (info.getTableStrategy() == null) {
//读操作不自动创建表,可能存在读写分离
return defValue;
@@ -2054,7 +2054,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
slowLog(s, sql);
return rs;
} catch (SQLException e) {
if (isTableNotExist(info, e.getSQLState())) {
if (isTableNotExist(info, e, e.getSQLState())) {
if (info.getTableStrategy() == null) {
//读操作不自动创建表,可能存在读写分离
return false;
@@ -2142,7 +2142,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
slowLog(s, prepareSQL);
return list;
} catch (SQLException se) {
if (isTableNotExist(info, se.getSQLState())) {
if (isTableNotExist(info, se, se.getSQLState())) {
return list;
}
throw new SourceException(se);
@@ -2190,7 +2190,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
slowLog(s, prepareSQL);
return Sheet.asSheet(list);
} catch (SQLException se) {
if (isTableNotExist(info, se.getSQLState())) {
if (isTableNotExist(info, se, se.getSQLState())) {
return Sheet.asSheet(list);
}
throw new SourceException(se);
@@ -2228,7 +2228,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
try {
return executeQuerySheet(info, needTotal, flipper, sels, s, conn, mysqlOrPgsql, listSql, countSql);
} catch (SQLException se) {
if (isTableNotExist(info, se.getSQLState())) {
if (isTableNotExist(info, se, se.getSQLState())) {
if (info.getTableStrategy() == null) {
//读操作不自动创建表,可能存在读写分离
return new Sheet<>(0, new ArrayList());