From 6f217455375e7a394c4eae41899741f24c99be1e Mon Sep 17 00:00:00 2001 From: redkale Date: Thu, 29 Feb 2024 14:48:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96isTableNotExist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../redkale/source/AbstractDataSqlSource.java | 109 +++++++++--------- .../org/redkale/source/DataJdbcSource.java | 42 +++---- 2 files changed, 77 insertions(+), 74 deletions(-) diff --git a/src/main/java/org/redkale/source/AbstractDataSqlSource.java b/src/main/java/org/redkale/source/AbstractDataSqlSource.java index b69f43d72..f64f66cc2 100644 --- a/src/main/java/org/redkale/source/AbstractDataSqlSource.java +++ b/src/main/java/org/redkale/source/AbstractDataSqlSource.java @@ -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 CompletableFuture updateColumnDBAsync(final EntityInfo info, Flipper flipper, final UpdateSqlInfo sql); //查询Number Map数据 - protected abstract CompletableFuture> getNumberMapDBAsync(final EntityInfo info, + protected abstract CompletableFuture> getNumberMapDBAsync(final EntityInfo info, String[] tables, final String sql, final FilterNode node, final FilterFuncColumn... columns); //查询Number数据 - protected abstract CompletableFuture getNumberResultDBAsync(final EntityInfo info, + protected abstract CompletableFuture getNumberResultDBAsync(final EntityInfo info, String[] tables, final String sql, final FilterFunc func, final Number defVal, final String column, final FilterNode node); //查询Map数据 - protected abstract CompletableFuture> queryColumnMapDBAsync(final EntityInfo info, + protected abstract CompletableFuture> queryColumnMapDBAsync(final EntityInfo info, String[] tables, final String sql, final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node); //查询Map数据 - protected abstract CompletableFuture> queryColumnMapDBAsync(final EntityInfo info, + protected abstract CompletableFuture> queryColumnMapDBAsync(final EntityInfo info, String[] tables, final String sql, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node); //查询单条记录 - protected abstract CompletableFuture findDBAsync(final EntityInfo info, String[] tables, + protected abstract CompletableFuture findDBAsync(final EntityInfo info, String[] tables, final String sql, final boolean onlypk, final SelectColumn selects, final Serializable pk, final FilterNode node); //查询单条记录的单个字段 - protected abstract CompletableFuture findColumnDBAsync(final EntityInfo info, String[] tables, + protected abstract CompletableFuture findColumnDBAsync(final EntityInfo info, String[] tables, final String sql, final boolean onlypk, final String column, final Serializable defValue, final Serializable pk, final FilterNode node); //判断记录是否存在 - protected abstract CompletableFuture existsDBAsync(final EntityInfo info, final String[] tables, + protected abstract CompletableFuture existsDBAsync(final EntityInfo info, final String[] tables, final String sql, final boolean onlypk, final Serializable pk, final FilterNode node); //查询一页数据 - protected abstract CompletableFuture> querySheetDBAsync(final EntityInfo info, final boolean readcache, + protected abstract CompletableFuture> querySheetDBAsync(final EntityInfo 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 int deleteDB(final EntityInfo info, String[] tables, Flipper flipper, FilterNode node, + protected int deleteDB(final EntityInfo info, String[] tables, Flipper flipper, FilterNode node, Map> 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 Map getNumberMapDB(final EntityInfo info, String[] tables, + protected Map getNumberMapDB(final EntityInfo info, String[] tables, final String sql, final FilterNode node, final FilterFuncColumn... columns) { return (Map) getNumberMapDBAsync(info, tables, sql, node, columns).join(); } //查询Number数据 - protected Number getNumberResultDB(final EntityInfo info, String[] tables, final String sql, + protected Number getNumberResultDB(final EntityInfo 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 Map queryColumnMapDB(final EntityInfo info, String[] tables, + protected Map queryColumnMapDB(final EntityInfo 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 Map queryColumnMapDB(final EntityInfo info, String[] tables, + protected Map queryColumnMapDB(final EntityInfo 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 findDB(final EntityInfo info, String[] tables, final String sql, final boolean onlypk, + protected T findDB(final EntityInfo 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 Serializable findColumnDB(final EntityInfo info, String[] tables, final String sql, final boolean onlypk, + protected Serializable findColumnDB(final EntityInfo 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 boolean existsDB(final EntityInfo info, final String[] tables, final String sql, final boolean onlypk, + protected boolean existsDB(final EntityInfo 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 Sheet querySheetDB(final EntityInfo info, final boolean readcache, final boolean needtotal, + protected Sheet querySheetDB(final EntityInfo 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 CharSequence createSQLJoin(FilterNode node, final Function func, final boolean update, + protected CharSequence createSQLJoin(FilterNode node, final Function func, final boolean update, final Map joinTabalis, final Set haset, final EntityInfo 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 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 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 CompletableFuture> getNumberMapDBApply(EntityInfo info, + protected CompletableFuture> getNumberMapDBApply(EntityInfo info, CompletableFuture 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 getNumberResultAsync(final Class entityClass, final FilterFunc func, + public CompletableFuture 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 String getNumberResultSql(final EntityInfo info, final Class entityClass, + protected String getNumberResultSql(final EntityInfo info, final Class entityClass, final String[] tables, final FilterFunc func, final Number defVal, final String column, final FilterNode node) { final Map joinTabalis = node == null ? null : node.getJoinTabalis(); final Set haset = new HashSet<>(); @@ -2319,7 +2322,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement return sql; } - protected CompletableFuture getNumberResultDBApply(EntityInfo info, + protected CompletableFuture getNumberResultDBApply(EntityInfo info, CompletableFuture 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 Map queryColumnMap(final Class entityClass, + public Map queryColumnMap(final Class 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 CompletableFuture> queryColumnMapAsync(final Class entityClass, + public CompletableFuture> queryColumnMapAsync(final Class 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 String queryColumnMapSql(final EntityInfo info, final String[] tables, final String keyColumn, + protected String queryColumnMapSql(final EntityInfo info, final String[] tables, final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) { final String keySqlColumn = info.getSQLColumn(null, keyColumn); final Map joinTabalis = node == null ? null : node.getJoinTabalis(); final Set 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 CompletableFuture> queryColumnMapDBApply(EntityInfo info, + protected CompletableFuture> queryColumnMapDBApply(EntityInfo info, CompletableFuture future, final String keyColumn) { return future.thenApply((DataResultSet dataset) -> { Map rs = new LinkedHashMap<>(); @@ -2422,7 +2425,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement } @Override - public Map queryColumnMap(final Class entityClass, + public Map queryColumnMap(final Class entityClass, final ColumnNode[] funcNodes, final String groupByColumn, final FilterNode node) { Map map = queryColumnMap(entityClass, funcNodes, Utility.ofArray(groupByColumn), node); final Map rs = new LinkedHashMap<>(); @@ -2431,7 +2434,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement } @Override - public CompletableFuture> queryColumnMapAsync(final Class entityClass, + public CompletableFuture> queryColumnMapAsync(final Class entityClass, final ColumnNode[] funcNodes, final String groupByColumn, final FilterNode node) { CompletableFuture> 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 Map queryColumnMap(final Class entityClass, + public Map queryColumnMap(final Class 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 CompletableFuture> queryColumnMapAsync(final Class entityClass, + public CompletableFuture> queryColumnMapAsync(final Class 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 String queryColumnMapSql(final EntityInfo info, final String[] tables, final ColumnNode[] funcNodes, + protected String queryColumnMapSql(final EntityInfo 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 CompletableFuture> queryColumnMapDBApply(EntityInfo info, + protected CompletableFuture> queryColumnMapDBApply(EntityInfo info, CompletableFuture 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 String findSql(final EntityInfo 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 CompletableFuture findDBApply(EntityInfo info, CompletableFuture future, + protected CompletableFuture findDBApply(EntityInfo info, CompletableFuture 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 String findColumnSql(final EntityInfo 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 CompletableFuture findColumnDBApply(EntityInfo info, + protected CompletableFuture findColumnDBApply(EntityInfo info, CompletableFuture 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 CompletableFuture> queryColumnSetAsync(final String selectedColumn, + public CompletableFuture> queryColumnSetAsync(final String selectedColumn, final Class clazz, final Flipper flipper, final FilterNode node) { return querySetAsync(clazz, SelectColumn.includes(selectedColumn), flipper, node).thenApply((Set list) -> { final Set rs = new LinkedHashSet<>(); @@ -3041,7 +3044,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement } @Override - public List queryColumnList(final String selectedColumn, final Class clazz, + public List queryColumnList(final String selectedColumn, final Class clazz, final Flipper flipper, final FilterNode node) { final List list = queryList(clazz, SelectColumn.includes(selectedColumn), flipper, node); final List rs = new ArrayList<>(); @@ -3057,7 +3060,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement } @Override - public CompletableFuture> queryColumnListAsync(final String selectedColumn, + public CompletableFuture> queryColumnListAsync(final String selectedColumn, final Class clazz, final Flipper flipper, final FilterNode node) { return queryListAsync(clazz, SelectColumn.includes(selectedColumn), flipper, node).thenApply((List list) -> { final List rs = new ArrayList<>(); @@ -3074,7 +3077,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement } @Override - public Sheet queryColumnSheet(final String selectedColumn, final Class clazz, + public Sheet queryColumnSheet(final String selectedColumn, final Class clazz, final Flipper flipper, final FilterNode node) { Sheet sheet = querySheet(clazz, SelectColumn.includes(selectedColumn), flipper, node); final Sheet rs = new Sheet<>(); @@ -3093,7 +3096,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement } @Override - public CompletableFuture> queryColumnSheetAsync(final String selectedColumn, + public CompletableFuture> queryColumnSheetAsync(final String selectedColumn, final Class clazz, final Flipper flipper, final FilterNode node) { return querySheetAsync(clazz, SelectColumn.includes(selectedColumn), flipper, node).thenApply((Sheet sheet) -> { final Sheet rs = new Sheet<>(); @@ -3143,7 +3146,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement } @Override - public CompletableFuture> queryMapAsync(final Class clazz, + public CompletableFuture> queryMapAsync(final Class clazz, final SelectColumn selects, final Stream keyStream) { if (keyStream == null) { return CompletableFuture.completedFuture(new LinkedHashMap<>()); @@ -3190,7 +3193,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement } @Override - public CompletableFuture> queryMapAsync(final Class clazz, + public CompletableFuture> queryMapAsync(final Class clazz, final SelectColumn selects, final FilterNode node) { return queryListAsync(clazz, selects, node).thenApply((List rs) -> { final EntityInfo info = loadEntityInfo(clazz); @@ -3260,7 +3263,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement } } - protected Sheet querySheet(final boolean readCache, final boolean needTotal, final boolean distinct, + protected Sheet querySheet(final boolean readCache, final boolean needTotal, final boolean distinct, final Class clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) { final EntityInfo info = loadEntityInfo(clazz); final EntityCache cache = info.getCache(); @@ -3275,7 +3278,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement return querySheetDB(info, readCache, needTotal, distinct, selects, flipper, node); } - protected CompletableFuture> querySheetAsync(final boolean readCache, final boolean needTotal, + protected CompletableFuture> querySheetAsync(final boolean readCache, final boolean needTotal, final boolean distinct, final Class clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) { final EntityInfo info = loadEntityInfo(clazz); final EntityCache cache = info.getCache(); diff --git a/src/main/java/org/redkale/source/DataJdbcSource.java b/src/main/java/org/redkale/source/DataJdbcSource.java index 71a5197c2..dc37a783a 100644 --- a/src/main/java/org/redkale/source/DataJdbcSource.java +++ b/src/main/java/org/redkale/source/DataJdbcSource.java @@ -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());