diff --git a/src/main/java/io/mycat/backend/mysql/nio/handler/builder/MergeBuilder.java b/src/main/java/io/mycat/backend/mysql/nio/handler/builder/MergeBuilder.java
index cba3d437c..b2089827e 100644
--- a/src/main/java/io/mycat/backend/mysql/nio/handler/builder/MergeBuilder.java
+++ b/src/main/java/io/mycat/backend/mysql/nio/handler/builder/MergeBuilder.java
@@ -1,12 +1,8 @@
package io.mycat.backend.mysql.nio.handler.builder;
-import java.sql.SQLNonTransientException;
-import java.sql.SQLSyntaxErrorException;
-
import com.alibaba.druid.sql.ast.statement.SQLSelectStatement;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.alibaba.druid.sql.parser.SQLStatementParser;
-
import io.mycat.MycatServer;
import io.mycat.backend.mysql.nio.handler.builder.BaseHandlerBuilder.MySQLNodeType;
import io.mycat.backend.mysql.nio.handler.builder.sqlvisitor.PushDownVisitor;
@@ -22,6 +18,10 @@ import io.mycat.route.util.RouterUtil;
import io.mycat.server.NonBlockingSession;
import io.mycat.server.parser.ServerParse;
+import java.sql.SQLException;
+import java.sql.SQLNonTransientException;
+import java.sql.SQLSyntaxErrorException;
+
public class MergeBuilder {
private boolean needCommonFlag;
private boolean needSendMakerFlag;
@@ -52,7 +52,7 @@ public class MergeBuilder {
* @throws SQLNonTransientException
* @throws SQLSyntaxErrorException
*/
- public RouteResultset construct() throws SQLNonTransientException {
+ public RouteResultset construct() throws SQLException {
pdVisitor.visit();
String sql = pdVisitor.getSql().toString();
SQLStatementParser parser = new MySqlStatementParser(sql);
diff --git a/src/main/java/io/mycat/route/RouteService.java b/src/main/java/io/mycat/route/RouteService.java
index 82f3ca804..001b0152c 100644
--- a/src/main/java/io/mycat/route/RouteService.java
+++ b/src/main/java/io/mycat/route/RouteService.java
@@ -23,18 +23,10 @@
*/
package io.mycat.route;
-import java.sql.SQLNonTransientException;
-import java.sql.SQLSyntaxErrorException;
-import java.util.HashMap;
-import java.util.Map;
-
-import io.mycat.config.Versions;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import io.mycat.cache.CachePool;
import io.mycat.cache.CacheService;
import io.mycat.cache.LayerCachePool;
+import io.mycat.config.Versions;
import io.mycat.config.model.SchemaConfig;
import io.mycat.config.model.SystemConfig;
import io.mycat.route.factory.RouteStrategyFactory;
@@ -43,6 +35,13 @@ import io.mycat.route.handler.HintHandlerFactory;
import io.mycat.route.handler.HintSQLHandler;
import io.mycat.server.ServerConnection;
import io.mycat.server.parser.ServerParse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.sql.SQLException;
+import java.sql.SQLSyntaxErrorException;
+import java.util.HashMap;
+import java.util.Map;
public class RouteService {
private static final Logger LOGGER = LoggerFactory
@@ -68,7 +67,7 @@ public class RouteService {
public RouteResultset route(SystemConfig sysconf, SchemaConfig schema,
int sqlType, String stmt, String charset, ServerConnection sc)
- throws SQLNonTransientException {
+ throws SQLException {
RouteResultset rrs = null;
String cacheKey = null;
diff --git a/src/main/java/io/mycat/route/RouteStrategy.java b/src/main/java/io/mycat/route/RouteStrategy.java
index 55eb60e63..a091eb43b 100644
--- a/src/main/java/io/mycat/route/RouteStrategy.java
+++ b/src/main/java/io/mycat/route/RouteStrategy.java
@@ -1,12 +1,12 @@
package io.mycat.route;
-import java.sql.SQLNonTransientException;
-
import io.mycat.cache.LayerCachePool;
import io.mycat.config.model.SchemaConfig;
import io.mycat.config.model.SystemConfig;
import io.mycat.server.ServerConnection;
+import java.sql.SQLException;
+
/**
* 路由策略接口
* @author wang.dw
@@ -15,5 +15,5 @@ import io.mycat.server.ServerConnection;
public interface RouteStrategy {
public RouteResultset route(SystemConfig sysConfig,
SchemaConfig schema,int sqlType, String origSQL, String charset, ServerConnection sc, LayerCachePool cachePool)
- throws SQLNonTransientException;
+ throws SQLException;
}
diff --git a/src/main/java/io/mycat/route/handler/HintHandler.java b/src/main/java/io/mycat/route/handler/HintHandler.java
index 8ce04d17b..75f6b723b 100644
--- a/src/main/java/io/mycat/route/handler/HintHandler.java
+++ b/src/main/java/io/mycat/route/handler/HintHandler.java
@@ -1,14 +1,14 @@
package io.mycat.route.handler;
-import java.sql.SQLNonTransientException;
-import java.util.Map;
-
import io.mycat.cache.LayerCachePool;
import io.mycat.config.model.SchemaConfig;
import io.mycat.config.model.SystemConfig;
import io.mycat.route.RouteResultset;
import io.mycat.server.ServerConnection;
+import java.sql.SQLException;
+import java.util.Map;
+
/**
* 按照注释中包含指定类型的内容做路由解析
*
@@ -18,5 +18,5 @@ public interface HintHandler {
public RouteResultset route(SystemConfig sysConfig, SchemaConfig schema,
int sqlType, String realSQL, String charset, ServerConnection sc,
LayerCachePool cachePool, String hintSQLValue, int hintSqlType, Map hintMap)
- throws SQLNonTransientException;
+ throws SQLException;
}
diff --git a/src/main/java/io/mycat/route/handler/HintMasterDBHandler.java b/src/main/java/io/mycat/route/handler/HintMasterDBHandler.java
index c575c5db9..5db6325df 100644
--- a/src/main/java/io/mycat/route/handler/HintMasterDBHandler.java
+++ b/src/main/java/io/mycat/route/handler/HintMasterDBHandler.java
@@ -1,10 +1,6 @@
package io.mycat.route.handler;
-import java.sql.SQLNonTransientException;
-import java.util.Map;
-
-import org.slf4j.Logger; import org.slf4j.LoggerFactory;
import io.mycat.cache.LayerCachePool;
import io.mycat.config.model.SchemaConfig;
import io.mycat.config.model.SystemConfig;
@@ -12,6 +8,11 @@ import io.mycat.route.RouteResultset;
import io.mycat.route.factory.RouteStrategyFactory;
import io.mycat.server.ServerConnection;
import io.mycat.server.parser.ServerParse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.sql.SQLException;
+import java.util.Map;
/**
* 处理情况 sql hint: mycat:db_type=master/slave
@@ -30,7 +31,7 @@ public class HintMasterDBHandler implements HintHandler {
public RouteResultset route(SystemConfig sysConfig, SchemaConfig schema, int sqlType,
String realSQL, String charset,
ServerConnection sc, LayerCachePool cachePool, String hintSQLValue, int hintSqlType, Map hintMap)
- throws SQLNonTransientException {
+ throws SQLException {
// LOGGER.debug("realSQL: " + realSQL); // select * from travelrecord limit 1
// LOGGER.debug("sqlType: " + sqlType); // 7
diff --git a/src/main/java/io/mycat/route/handler/HintSQLHandler.java b/src/main/java/io/mycat/route/handler/HintSQLHandler.java
index 9729ffaa6..a27955123 100644
--- a/src/main/java/io/mycat/route/handler/HintSQLHandler.java
+++ b/src/main/java/io/mycat/route/handler/HintSQLHandler.java
@@ -1,41 +1,32 @@
package io.mycat.route.handler;
-import java.sql.SQLNonTransientException;
-import java.sql.Types;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
import com.alibaba.druid.sql.ast.expr.SQLNumberExpr;
import com.alibaba.druid.sql.ast.expr.SQLTextLiteralExpr;
import com.alibaba.druid.sql.ast.expr.SQLValuableExpr;
-import com.alibaba.druid.sql.ast.statement.SQLAssignItem;
-import com.alibaba.druid.sql.ast.statement.SQLCallStatement;
-import com.alibaba.druid.sql.ast.statement.SQLSelectItem;
-import com.alibaba.druid.sql.ast.statement.SQLSelectStatement;
-import com.alibaba.druid.sql.ast.statement.SQLSetStatement;
+import com.alibaba.druid.sql.ast.statement.*;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.alibaba.druid.sql.parser.SQLStatementParser;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
-
import io.mycat.cache.LayerCachePool;
import io.mycat.config.model.SchemaConfig;
import io.mycat.config.model.SystemConfig;
-import io.mycat.route.Procedure;
-import io.mycat.route.ProcedureParameter;
-import io.mycat.route.RouteResultset;
-import io.mycat.route.RouteResultsetNode;
-import io.mycat.route.RouteStrategy;
+import io.mycat.route.*;
import io.mycat.route.factory.RouteStrategyFactory;
import io.mycat.server.ServerConnection;
import io.mycat.server.parser.ServerParse;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
/**
* 处理注释中 类型为sql的情况 (按照 注释中的sql做路由解析,而不是实际的sql)
*/
@@ -51,7 +42,7 @@ public class HintSQLHandler implements HintHandler {
public RouteResultset route(SystemConfig sysConfig, SchemaConfig schema,
int sqlType, String realSQL, String charset, ServerConnection sc,
LayerCachePool cachePool, String hintSQLValue,int hintSqlType, Map hintMap)
- throws SQLNonTransientException {
+ throws SQLException {
RouteResultset rrs = routeStrategy.route(sysConfig, schema, hintSqlType,
hintSQLValue, charset, sc, cachePool);
diff --git a/src/main/java/io/mycat/route/handler/HintSchemaHandler.java b/src/main/java/io/mycat/route/handler/HintSchemaHandler.java
index ed94f1c85..7f3770654 100644
--- a/src/main/java/io/mycat/route/handler/HintSchemaHandler.java
+++ b/src/main/java/io/mycat/route/handler/HintSchemaHandler.java
@@ -1,5 +1,6 @@
package io.mycat.route.handler;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import java.util.Map;
@@ -45,7 +46,7 @@ public class HintSchemaHandler implements HintHandler {
public RouteResultset route(SystemConfig sysConfig, SchemaConfig schema,
int sqlType, String realSQL, String charset, ServerConnection sc,
LayerCachePool cachePool, String hintSQLValue,int hintSqlType, Map hintMap)
- throws SQLNonTransientException {
+ throws SQLException {
SchemaConfig tempSchema = MycatServer.getInstance().getConfig().getSchemas().get(hintSQLValue);
if (tempSchema != null) {
return routeStrategy.route(sysConfig, tempSchema, sqlType, realSQL, charset, sc, cachePool);
diff --git a/src/main/java/io/mycat/route/impl/AbstractRouteStrategy.java b/src/main/java/io/mycat/route/impl/AbstractRouteStrategy.java
index 306cbd3a1..9a8165d99 100644
--- a/src/main/java/io/mycat/route/impl/AbstractRouteStrategy.java
+++ b/src/main/java/io/mycat/route/impl/AbstractRouteStrategy.java
@@ -1,5 +1,6 @@
package io.mycat.route.impl;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import java.sql.SQLSyntaxErrorException;
@@ -20,7 +21,7 @@ public abstract class AbstractRouteStrategy implements RouteStrategy {
@Override
public RouteResultset route(SystemConfig sysConfig, SchemaConfig schema, int sqlType, String origSQL,
- String charset, ServerConnection sc, LayerCachePool cachePool) throws SQLNonTransientException {
+ String charset, ServerConnection sc, LayerCachePool cachePool) throws SQLException {
RouteResultset rrs = new RouteResultset(origSQL, sqlType, sc.getSession2());
@@ -56,18 +57,18 @@ public abstract class AbstractRouteStrategy implements RouteStrategy {
* 通过解析AST语法树类来寻找路由
*/
public abstract RouteResultset routeNormalSqlWithAST(SchemaConfig schema, String stmt, RouteResultset rrs,
- String charset, LayerCachePool cachePool) throws SQLNonTransientException;
+ String charset, LayerCachePool cachePool) throws SQLException;
/**
* 路由信息指令, 如 SHOW、SELECT@@、DESCRIBE
*/
public abstract RouteResultset routeSystemInfo(SchemaConfig schema, int sqlType, String stmt, RouteResultset rrs)
- throws SQLSyntaxErrorException;
+ throws SQLException;
/**
* 解析 Show 之类的语句
*/
public abstract RouteResultset analyseShowSQL(SchemaConfig schema, RouteResultset rrs, String stmt)
- throws SQLNonTransientException;
+ throws SQLException;
}
diff --git a/src/main/java/io/mycat/route/impl/DruidMycatRouteStrategy.java b/src/main/java/io/mycat/route/impl/DruidMycatRouteStrategy.java
index 28babbc99..9ec1f0bea 100644
--- a/src/main/java/io/mycat/route/impl/DruidMycatRouteStrategy.java
+++ b/src/main/java/io/mycat/route/impl/DruidMycatRouteStrategy.java
@@ -1,18 +1,10 @@
package io.mycat.route.impl;
-import java.sql.SQLNonTransientException;
-import java.sql.SQLSyntaxErrorException;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlReplaceStatement;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.alibaba.druid.sql.parser.SQLStatementParser;
import com.google.common.base.Strings;
-
import io.mycat.cache.LayerCachePool;
import io.mycat.config.model.SchemaConfig;
import io.mycat.route.RouteResultset;
@@ -21,6 +13,12 @@ import io.mycat.route.parser.druid.DruidParserFactory;
import io.mycat.route.parser.druid.MycatSchemaStatVisitor;
import io.mycat.route.util.RouterUtil;
import io.mycat.server.parser.ServerParse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.sql.SQLException;
+import java.sql.SQLSyntaxErrorException;
+import java.util.List;
public class DruidMycatRouteStrategy extends AbstractRouteStrategy {
@@ -29,7 +27,7 @@ public class DruidMycatRouteStrategy extends AbstractRouteStrategy {
@Override
public RouteResultset routeNormalSqlWithAST(SchemaConfig schema,
String originSql, RouteResultset rrs, String charset,
- LayerCachePool cachePool) throws SQLNonTransientException {
+ LayerCachePool cachePool) throws SQLException {
SQLStatementParser parser = new MySqlStatementParser(originSql);
MycatSchemaStatVisitor visitor = null;
SQLStatement statement;
@@ -80,7 +78,7 @@ public class DruidMycatRouteStrategy extends AbstractRouteStrategy {
*/
@Override
public RouteResultset analyseShowSQL(SchemaConfig schema,
- RouteResultset rrs, String stmt) throws SQLSyntaxErrorException {
+ RouteResultset rrs, String stmt) throws SQLException {
String upStmt = stmt.toUpperCase();
int tabInd = upStmt.indexOf(" TABLES");
if (tabInd > 0) {// show tables
@@ -227,7 +225,7 @@ public class DruidMycatRouteStrategy extends AbstractRouteStrategy {
// }
public RouteResultset routeSystemInfo(SchemaConfig schema, int sqlType,
- String stmt, RouteResultset rrs) throws SQLSyntaxErrorException {
+ String stmt, RouteResultset rrs) throws SQLException {
switch(sqlType){
case ServerParse.SHOW:// if origSQL is like show tables
return analyseShowSQL(schema, rrs, stmt);
@@ -250,7 +248,7 @@ public class DruidMycatRouteStrategy extends AbstractRouteStrategy {
* @author mycat
*/
private static RouteResultset analyseDescrSQL(SchemaConfig schema,
- RouteResultset rrs, String stmt, int ind) {
+ RouteResultset rrs, String stmt, int ind) throws SQLException {
final String MATCHED_FEATURE = "DESCRIBE ";
final String MATCHED2_FEATURE = "DESC ";
diff --git a/src/main/java/io/mycat/route/parser/druid/DruidParser.java b/src/main/java/io/mycat/route/parser/druid/DruidParser.java
index f79291b49..1cc630d35 100644
--- a/src/main/java/io/mycat/route/parser/druid/DruidParser.java
+++ b/src/main/java/io/mycat/route/parser/druid/DruidParser.java
@@ -5,6 +5,7 @@ import io.mycat.cache.LayerCachePool;
import io.mycat.config.model.SchemaConfig;
import io.mycat.route.RouteResultset;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
/**
@@ -21,14 +22,14 @@ public interface DruidParser {
* @param schema
* @param stmt
*/
- SchemaConfig parser(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt, String originSql,LayerCachePool cachePool,MycatSchemaStatVisitor schemaStatVisitor) throws SQLNonTransientException;
+ SchemaConfig parser(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt, String originSql,LayerCachePool cachePool,MycatSchemaStatVisitor schemaStatVisitor) throws SQLException;
/**
* 子类可覆盖(如果该方法解析得不到表名、字段等信息的,就覆盖该方法,覆盖成空方法,然后通过statementPparse去解析)
* 通过visitor解析:有些类型的Statement通过visitor解析得不到表名、
* @param stmt
*/
- SchemaConfig visitorParse(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt,MycatSchemaStatVisitor visitor) throws SQLNonTransientException;
+ SchemaConfig visitorParse(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt,MycatSchemaStatVisitor visitor) throws SQLException;
/**
* 改写sql:加limit,加group by、加order by如有些没有加limit的可以通过该方法增加
@@ -37,7 +38,7 @@ public interface DruidParser {
* @param stmt
* @throws SQLNonTransientException
*/
- void changeSql(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt,LayerCachePool cachePool) throws SQLNonTransientException;
+ void changeSql(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt,LayerCachePool cachePool) throws SQLException;
/**
* 获取解析到的信息
* @return
diff --git a/src/main/java/io/mycat/route/parser/druid/impl/DefaultDruidParser.java b/src/main/java/io/mycat/route/parser/druid/impl/DefaultDruidParser.java
index c55cc1ee0..6d2b1fdb0 100644
--- a/src/main/java/io/mycat/route/parser/druid/impl/DefaultDruidParser.java
+++ b/src/main/java/io/mycat/route/parser/druid/impl/DefaultDruidParser.java
@@ -1,5 +1,6 @@
package io.mycat.route.parser.druid.impl;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -43,7 +44,7 @@ public class DefaultDruidParser implements DruidParser {
* @param schema
* @param stmt
*/
- public SchemaConfig parser(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt, String originSql,LayerCachePool cachePool,MycatSchemaStatVisitor schemaStatVisitor) throws SQLNonTransientException {
+ public SchemaConfig parser(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt, String originSql,LayerCachePool cachePool,MycatSchemaStatVisitor schemaStatVisitor) throws SQLException {
ctx = new DruidShardingParseInfo();
//通过visitor解析
schema = visitorParse(schema, rrs,stmt,schemaStatVisitor);
@@ -60,7 +61,7 @@ public class DefaultDruidParser implements DruidParser {
*/
@Override
public void changeSql(SchemaConfig schema, RouteResultset rrs,
- SQLStatement stmt,LayerCachePool cachePool) throws SQLNonTransientException {
+ SQLStatement stmt,LayerCachePool cachePool) throws SQLException {
}
@@ -71,7 +72,7 @@ public class DefaultDruidParser implements DruidParser {
*/
@Override
public SchemaConfig visitorParse(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt, MycatSchemaStatVisitor visitor)
- throws SQLNonTransientException {
+ throws SQLException {
stmt.accept(visitor);
if(visitor.getNotSupportMsg()!= null){
throw new SQLNonTransientException(visitor.getNotSupportMsg());
diff --git a/src/main/java/io/mycat/route/parser/druid/impl/DruidDeleteParser.java b/src/main/java/io/mycat/route/parser/druid/impl/DruidDeleteParser.java
index 488662fb1..8be9a40ec 100644
--- a/src/main/java/io/mycat/route/parser/druid/impl/DruidDeleteParser.java
+++ b/src/main/java/io/mycat/route/parser/druid/impl/DruidDeleteParser.java
@@ -1,5 +1,6 @@
package io.mycat.route.parser.druid.impl;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import com.alibaba.druid.sql.ast.SQLStatement;
@@ -8,6 +9,7 @@ import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource;
import com.alibaba.druid.sql.ast.statement.SQLTableSource;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlDeleteStatement;
+import io.mycat.config.ErrorCode;
import io.mycat.config.MycatPrivileges;
import io.mycat.config.MycatPrivileges.Checktype;
import io.mycat.config.model.SchemaConfig;
@@ -27,7 +29,7 @@ import io.mycat.server.util.SchemaUtil.SchemaInfo;
public class DruidDeleteParser extends DefaultDruidParser {
@Override
public SchemaConfig visitorParse(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt, MycatSchemaStatVisitor visitor)
- throws SQLNonTransientException {
+ throws SQLException {
String schemaName = schema == null ? null : schema.getName();
MySqlDeleteStatement delete = (MySqlDeleteStatement) stmt;
SQLTableSource tableSource = delete.getTableSource();
@@ -49,8 +51,8 @@ public class DruidDeleteParser extends DefaultDruidParser {
SQLExprTableSource deleteTableSource = (SQLExprTableSource) tableSource;
SchemaInfo schemaInfo = SchemaUtil.getSchemaInfo(schemaName, deleteTableSource);
if (schemaInfo == null) {
- String msg = "No MyCAT Database is selected Or defined, sql:" + stmt;
- throw new SQLNonTransientException(msg);
+ String msg = "No database selected";
+ throw new SQLException(msg,"3D000", ErrorCode.ER_NO_DB_ERROR);
}
if(!MycatPrivileges.checkPrivilege(rrs.getSession().getSource(), schemaInfo.schema, schemaInfo.table, Checktype.DELETE)){
String msg = "The statement DML privilege check is not passed, sql:" + stmt;
diff --git a/src/main/java/io/mycat/route/parser/druid/impl/DruidInsertParser.java b/src/main/java/io/mycat/route/parser/druid/impl/DruidInsertParser.java
index 39b0af5c0..b89f3cb7c 100644
--- a/src/main/java/io/mycat/route/parser/druid/impl/DruidInsertParser.java
+++ b/src/main/java/io/mycat/route/parser/druid/impl/DruidInsertParser.java
@@ -1,5 +1,6 @@
package io.mycat.route.parser.druid.impl;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import java.util.ArrayList;
import java.util.Date;
@@ -22,6 +23,7 @@ import com.alibaba.druid.sql.parser.SQLStatementParser;
import io.mycat.MycatServer;
import io.mycat.backend.mysql.nio.handler.FetchStoreNodeOfChildTableHandler;
+import io.mycat.config.ErrorCode;
import io.mycat.config.MycatPrivileges;
import io.mycat.config.MycatPrivileges.Checktype;
import io.mycat.config.model.SchemaConfig;
@@ -42,14 +44,14 @@ import io.mycat.util.StringUtil;
public class DruidInsertParser extends DefaultDruidParser {
@Override
public SchemaConfig visitorParse(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt, MycatSchemaStatVisitor visitor)
- throws SQLNonTransientException {
+ throws SQLException {
MySqlInsertStatement insert = (MySqlInsertStatement) stmt;
String schemaName = schema == null ? null : schema.getName();
SQLExprTableSource tableSource = insert.getTableSource();
SchemaInfo schemaInfo = SchemaUtil.getSchemaInfo(schemaName, tableSource);
if (schemaInfo == null) {
- String msg = "No MyCAT Database is selected Or defined";
- throw new SQLNonTransientException(msg);
+ String msg = "No database selected";
+ throw new SQLException(msg,"3D000", ErrorCode.ER_NO_DB_ERROR);
}
if(!MycatPrivileges.checkPrivilege(rrs.getSession().getSource(), schemaInfo.schema, schemaInfo.table, Checktype.INSERT)){
String msg = "The statement DML privilege check is not passed, sql:" + stmt;
@@ -64,12 +66,12 @@ public class DruidInsertParser extends DefaultDruidParser {
// 整个schema都不分库或者该表不拆分
TableConfig tc = schema.getTables().get(tableName);
if (tc == null) {
- String msg = "can't find table [" + tableName + "] define in schema:" + schema.getName();
- throw new SQLNonTransientException(msg);
+ String msg = "Table '"+schema.getName()+"."+tableName+"' doesn't exist";
+ throw new SQLException(msg, "42S02", ErrorCode.ER_NO_SUCH_TABLE);
}
if (insert.getQuery() != null) {
// insert into .... select ....
- String msg = "TODO:insert into .... select .... not supported!";
+ String msg = "insert into .... select .... not supported!";
LOGGER.warn(msg);
throw new SQLNonTransientException(msg);
}
@@ -375,7 +377,7 @@ public class DruidInsertParser extends DefaultDruidParser {
if (insertStmt.getColumns() == null || insertStmt.getColumns().size() == 0) {
TableMeta tbMeta = MycatServer.getInstance().getTmManager().getSyncTableMeta(schemaInfo.schema, schemaInfo.table);
if (tbMeta == null) {
- String msg = "can't find table [" + schemaInfo.table + "] define in schema:" + schemaInfo.schema;
+ String msg = "Meta data of table '"+schemaInfo.schema+"."+schemaInfo.table+"' doesn't exist";
LOGGER.warn(msg);
throw new SQLNonTransientException(msg);
}
diff --git a/src/main/java/io/mycat/route/parser/druid/impl/DruidSelectParser.java b/src/main/java/io/mycat/route/parser/druid/impl/DruidSelectParser.java
index cc299c8a6..1f121503d 100644
--- a/src/main/java/io/mycat/route/parser/druid/impl/DruidSelectParser.java
+++ b/src/main/java/io/mycat/route/parser/druid/impl/DruidSelectParser.java
@@ -1,6 +1,7 @@
package io.mycat.route.parser.druid.impl;
import java.sql.SQLNonTransientException;
+import java.sql.SQLException;
import java.util.*;
import com.alibaba.druid.sql.ast.*;
@@ -48,7 +49,7 @@ public class DruidSelectParser extends DefaultDruidParser {
}
@Override
public SchemaConfig visitorParse(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt,
- MycatSchemaStatVisitor visitor) throws SQLNonTransientException {
+ MycatSchemaStatVisitor visitor) throws SQLException {
SQLSelectStatement selectStmt = (SQLSelectStatement) stmt;
SQLSelectQuery sqlSelectQuery = selectStmt.getSelect().getQuery();
String schemaName = schema == null ? null : schema.getName();
@@ -76,8 +77,8 @@ public class DruidSelectParser extends DefaultDruidParser {
SQLExprTableSource fromSource = (SQLExprTableSource) mysqlFrom;
schemaInfo = SchemaUtil.getSchemaInfo(schemaName, fromSource);
if (schemaInfo == null) {
- String msg = "No MyCAT Database is selected Or defined, sql:" + stmt;
- throw new SQLNonTransientException(msg);
+ String msg = "No database selected";
+ throw new SQLException(msg,"3D000",ErrorCode.ER_NO_DB_ERROR);
}
// 兼容PhpAdmin's, 支持对MySQL元数据的模拟返回
//TODO:refactor INFORMATION_SCHEMA,MYSQL 等系統表的去向???
@@ -106,7 +107,7 @@ public class DruidSelectParser extends DefaultDruidParser {
return schema;
}
if (schemaInfo.schemaConfig == null) {
- String msg = "No MyCAT Database is selected Or defined, sql:" + stmt;
+ String msg = "No Supported, sql:" + stmt;
throw new SQLNonTransientException(msg);
}
if (!MycatPrivileges.checkPrivilege(rrs.getSession().getSource(), schemaInfo.schema, schemaInfo.table, Checktype.SELECT)) {
@@ -121,8 +122,8 @@ public class DruidSelectParser extends DefaultDruidParser {
}
TableConfig tc= schema.getTables().get(schemaInfo.table);
if (tc == null) {
- String msg = "can't find table [" + schemaInfo.table + "] define in schema:" + schema.getName();
- throw new SQLNonTransientException(msg);
+ String msg = "Table '"+schema.getName()+"."+schemaInfo.table+"' doesn't exist";
+ throw new SQLException(msg, "42S02", ErrorCode.ER_NO_SUCH_TABLE);
}
super.visitorParse(schema, rrs, stmt, visitor);
if(visitor.isHasSubQuery()){
@@ -154,7 +155,7 @@ public class DruidSelectParser extends DefaultDruidParser {
}
private void parseOrderAggGroupMysql(SchemaConfig schema, SQLStatement stmt, RouteResultset rrs,
- MySqlSelectQueryBlock mysqlSelectQuery, TableConfig tc) throws SQLNonTransientException {
+ MySqlSelectQueryBlock mysqlSelectQuery, TableConfig tc) throws SQLException {
if (mysqlSelectQuery.getOrderBy() != null) {
rrs.setSqlStatement(stmt);
rrs.setNeedOptimizer(true);
@@ -171,7 +172,7 @@ public class DruidSelectParser extends DefaultDruidParser {
// }
}
- private void parseAggExprCommon(SchemaConfig schema, RouteResultset rrs, SQLSelectQueryBlock mysqlSelectQuery, Map aliaColumns, TableConfig tc) throws SQLNonTransientException {
+ private void parseAggExprCommon(SchemaConfig schema, RouteResultset rrs, SQLSelectQueryBlock mysqlSelectQuery, Map aliaColumns, TableConfig tc) throws SQLException {
List selectList = mysqlSelectQuery.getSelectList();
for (SQLSelectItem item : selectList) {
SQLExpr itemExpr = item.getExpr();
@@ -199,7 +200,7 @@ public class DruidSelectParser extends DefaultDruidParser {
} else if (itemExpr instanceof SQLAllColumnExpr) {
TableMeta tbMeta = MycatServer.getInstance().getTmManager().getSyncTableMeta(schema.getName(),tc.getName());
if (tbMeta == null) {
- String msg = "can't find table [" + tc.getName() + "] define in schema:" + schema.getName();
+ String msg = "Meta data of table '"+schema.getName()+"."+tc.getName()+"' doesn't exist";
LOGGER.warn(msg);
throw new SQLNonTransientException(msg);
}
@@ -289,7 +290,7 @@ public class DruidSelectParser extends DefaultDruidParser {
}
}
private Map parseAggGroupCommon(SchemaConfig schema, SQLStatement stmt, RouteResultset rrs,
- SQLSelectQueryBlock mysqlSelectQuery, TableConfig tc) throws SQLNonTransientException {
+ SQLSelectQueryBlock mysqlSelectQuery, TableConfig tc) throws SQLException {
Map aliaColumns = new HashMap();
Map aggrColumns = new HashMap();
List havingColsName = new ArrayList();
@@ -445,7 +446,7 @@ public class DruidSelectParser extends DefaultDruidParser {
// return map;
// }
private SchemaConfig executeComplexSQL(String schemaName, SchemaConfig schema, RouteResultset rrs, SQLSelectStatement selectStmt)
- throws SQLNonTransientException {
+ throws SQLException {
SchemaInfo schemaInfo = SchemaUtil.isNoSharding(rrs.getSession().getSource(), schemaName, selectStmt.getSelect().getQuery(), selectStmt);
if (schemaInfo == null) {
rrs.setSqlStatement(selectStmt);
@@ -462,7 +463,7 @@ public class DruidSelectParser extends DefaultDruidParser {
*/
@Override
public void changeSql(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt, LayerCachePool cachePool)
- throws SQLNonTransientException {
+ throws SQLException {
if (rrs.isFinishedExecute() || rrs.isNeedOptimizer()) {
return;
}
@@ -528,7 +529,7 @@ public class DruidSelectParser extends DefaultDruidParser {
}
private void tryRouteSingleTable(SchemaConfig schema, RouteResultset rrs, LayerCachePool cachePool)
- throws SQLNonTransientException {
+ throws SQLException {
if (rrs.isFinishedRoute()) {
return;// 避免重复路由
}
diff --git a/src/main/java/io/mycat/route/parser/druid/impl/DruidSingleUnitSelectParser.java b/src/main/java/io/mycat/route/parser/druid/impl/DruidSingleUnitSelectParser.java
index 71149fb8e..63394a3d0 100644
--- a/src/main/java/io/mycat/route/parser/druid/impl/DruidSingleUnitSelectParser.java
+++ b/src/main/java/io/mycat/route/parser/druid/impl/DruidSingleUnitSelectParser.java
@@ -1,5 +1,6 @@
package io.mycat.route.parser.druid.impl;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import com.alibaba.druid.sql.ast.SQLStatement;
@@ -14,6 +15,7 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUnionQuery;
import io.mycat.MycatServer;
+import io.mycat.config.ErrorCode;
import io.mycat.config.MycatPrivileges;
import io.mycat.config.MycatPrivileges.Checktype;
import io.mycat.config.model.SchemaConfig;
@@ -29,7 +31,7 @@ import io.mycat.server.util.SchemaUtil.SchemaInfo;
public class DruidSingleUnitSelectParser extends DefaultDruidParser {
@Override
public SchemaConfig visitorParse(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt,
- MycatSchemaStatVisitor visitor) throws SQLNonTransientException {
+ MycatSchemaStatVisitor visitor) throws SQLException {
SQLSelectStatement selectStmt = (SQLSelectStatement) stmt;
SQLSelectQuery sqlSelectQuery = selectStmt.getSelect().getQuery();
String schemaName = schema == null ? null : schema.getName();
@@ -62,8 +64,8 @@ public class DruidSingleUnitSelectParser extends DefaultDruidParser {
SQLExprTableSource fromSource = (SQLExprTableSource) mysqlFrom;
SchemaInfo schemaInfo = SchemaUtil.getSchemaInfo(schemaName, fromSource);
if (schemaInfo == null) {
- String msg = "No MyCAT Database is selected Or defined, sql:" + stmt;
- throw new SQLNonTransientException(msg);
+ String msg = "No database selected";
+ throw new SQLException(msg,"3D000", ErrorCode.ER_NO_DB_ERROR);
}
// 兼容PhpAdmin's, 支持对MySQL元数据的模拟返回
if (SchemaUtil.INFORMATION_SCHEMA.equals(schemaInfo.schema)) {
@@ -91,7 +93,7 @@ public class DruidSingleUnitSelectParser extends DefaultDruidParser {
return schema;
}
if (schemaInfo.schemaConfig == null) {
- String msg = "No MyCAT Database is selected Or defined, sql:" + stmt;
+ String msg = "No Supported, sql:" + stmt;
throw new SQLNonTransientException(msg);
}
if (!MycatPrivileges.checkPrivilege(rrs.getSession().getSource(), schemaInfo.schema, schemaInfo.table, Checktype.SELECT)) {
diff --git a/src/main/java/io/mycat/route/parser/druid/impl/DruidUpdateParser.java b/src/main/java/io/mycat/route/parser/druid/impl/DruidUpdateParser.java
index 7b829aca7..385f13993 100644
--- a/src/main/java/io/mycat/route/parser/druid/impl/DruidUpdateParser.java
+++ b/src/main/java/io/mycat/route/parser/druid/impl/DruidUpdateParser.java
@@ -1,5 +1,6 @@
package io.mycat.route.parser.druid.impl;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import java.util.Date;
import java.util.List;
@@ -26,6 +27,7 @@ import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUpdateStatement;
import io.mycat.MycatServer;
+import io.mycat.config.ErrorCode;
import io.mycat.config.MycatPrivileges;
import io.mycat.config.MycatPrivileges.Checktype;
import io.mycat.config.model.ERTable;
@@ -46,7 +48,7 @@ import io.mycat.util.StringUtil;
*/
public class DruidUpdateParser extends DefaultDruidParser {
public SchemaConfig visitorParse(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt, MycatSchemaStatVisitor visitor)
- throws SQLNonTransientException {
+ throws SQLException {
MySqlUpdateStatement update = (MySqlUpdateStatement) stmt;
SQLTableSource tableSource = update.getTableSource();
String schemaName = schema == null ? null : schema.getName();
@@ -65,8 +67,8 @@ public class DruidUpdateParser extends DefaultDruidParser {
SchemaInfo schemaInfo = SchemaUtil.getSchemaInfo(schemaName, (SQLExprTableSource) tableSource);
//数据库校验
if (schemaInfo == null) {
- String msg = "No MyCAT Database is selected Or defined, sql:" + stmt;
- throw new SQLNonTransientException(msg);
+ String msg = "No database selected";
+ throw new SQLException(msg,"3D000", ErrorCode.ER_NO_DB_ERROR);
}
//权限控制
if(!MycatPrivileges.checkPrivilege(rrs.getSession().getSource(), schemaInfo.schema, schemaInfo.table, Checktype.UPDATE)){
diff --git a/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidAlterTableParser.java b/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidAlterTableParser.java
index 63d672857..2e03f68ad 100644
--- a/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidAlterTableParser.java
+++ b/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidAlterTableParser.java
@@ -1,5 +1,6 @@
package io.mycat.route.parser.druid.impl.ddl;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import java.util.ArrayList;
import java.util.List;
@@ -25,6 +26,7 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterTableChangeCo
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlAlterTableModifyColumn;
import io.mycat.MycatServer;
+import io.mycat.config.ErrorCode;
import io.mycat.config.model.SchemaConfig;
import io.mycat.config.model.TableConfig;
import io.mycat.meta.protocol.MyCatMeta.ColumnMeta;
@@ -46,13 +48,13 @@ import io.mycat.util.StringUtil;
public class DruidAlterTableParser extends DefaultDruidParser {
@Override
public SchemaConfig visitorParse(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt, MycatSchemaStatVisitor visitor)
- throws SQLNonTransientException {
+ throws SQLException {
SQLAlterTableStatement alterTable = (SQLAlterTableStatement) stmt;
String schemaName = schema == null ? null : schema.getName();
SchemaInfo schemaInfo = SchemaUtil.getSchemaInfo(schemaName, alterTable.getTableSource());
if (schemaInfo == null) {
- String msg = "No MyCAT Database is selected Or defined, sql:" + stmt;
- throw new SQLNonTransientException(msg);
+ String msg = "No database selected";
+ throw new SQLException(msg,"3D000", ErrorCode.ER_NO_DB_ERROR);
}
boolean support = false;
for (SQLAlterTableItem alterItem : alterTable.getItems()) {
diff --git a/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidCreateIndexParser.java b/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidCreateIndexParser.java
index 317801eff..791d0cc26 100644
--- a/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidCreateIndexParser.java
+++ b/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidCreateIndexParser.java
@@ -1,5 +1,6 @@
package io.mycat.route.parser.druid.impl.ddl;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import com.alibaba.druid.sql.ast.SQLStatement;
@@ -7,6 +8,7 @@ import com.alibaba.druid.sql.ast.statement.SQLCreateIndexStatement;
import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
import com.alibaba.druid.sql.ast.statement.SQLTableSource;
+import io.mycat.config.ErrorCode;
import io.mycat.config.model.SchemaConfig;
import io.mycat.route.RouteResultset;
import io.mycat.route.parser.druid.MycatSchemaStatVisitor;
@@ -18,15 +20,15 @@ import io.mycat.server.util.SchemaUtil.SchemaInfo;
public class DruidCreateIndexParser extends DefaultDruidParser {
@Override
public SchemaConfig visitorParse(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt,
- MycatSchemaStatVisitor visitor) throws SQLNonTransientException {
+ MycatSchemaStatVisitor visitor) throws SQLException {
SQLCreateIndexStatement createStmt = (SQLCreateIndexStatement) stmt;
SQLTableSource tableSource = createStmt.getTable();
if (tableSource instanceof SQLExprTableSource) {
String schemaName = schema == null ? null : schema.getName();
SchemaInfo schemaInfo = SchemaUtil.getSchemaInfo(schemaName, (SQLExprTableSource) tableSource);
if (schemaInfo == null) {
- String msg = "No MyCAT Database is selected Or defined, sql:" + stmt;
- throw new SQLNonTransientException(msg);
+ String msg = "No database selected";
+ throw new SQLException(msg,"3D000", ErrorCode.ER_NO_DB_ERROR);
}
RouterUtil.routeToDDLNode(schemaInfo, rrs);
return schemaInfo.schemaConfig;
diff --git a/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidCreateTableParser.java b/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidCreateTableParser.java
index 3a524a1d0..7955390d3 100644
--- a/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidCreateTableParser.java
+++ b/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidCreateTableParser.java
@@ -1,5 +1,6 @@
package io.mycat.route.parser.druid.impl.ddl;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import com.alibaba.druid.sql.ast.SQLName;
@@ -12,6 +13,7 @@ import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement;
import com.alibaba.druid.sql.ast.statement.SQLTableElement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStatement;
+import io.mycat.config.ErrorCode;
import io.mycat.config.model.SchemaConfig;
import io.mycat.route.RouteResultset;
import io.mycat.route.parser.druid.MycatSchemaStatVisitor;
@@ -26,7 +28,7 @@ import io.mycat.util.StringUtil;
public class DruidCreateTableParser extends DefaultDruidParser {
@Override
public SchemaConfig visitorParse(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt, MycatSchemaStatVisitor visitor)
- throws SQLNonTransientException {
+ throws SQLException {
MySqlCreateTableStatement createStmt = (MySqlCreateTableStatement)stmt;
//创建新表select from禁止
if(createStmt.getSelect() != null) {
@@ -44,8 +46,8 @@ public class DruidCreateTableParser extends DefaultDruidParser {
String schemaName = schema == null ? null : schema.getName();
SchemaInfo schemaInfo = SchemaUtil.getSchemaInfo(schemaName, createStmt.getTableSource());
if (schemaInfo == null) {
- String msg = "No MyCAT Database is selected Or defined, sql:" + stmt;
- throw new SQLNonTransientException(msg);
+ String msg = "No database selected";
+ throw new SQLException(msg,"3D000", ErrorCode.ER_NO_DB_ERROR);
}
//如果这个不是no_sharing表格那么就需要这么进行检查
diff --git a/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidDropIndexParser.java b/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidDropIndexParser.java
index 26069f809..98427f2dc 100644
--- a/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidDropIndexParser.java
+++ b/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidDropIndexParser.java
@@ -1,10 +1,8 @@
package io.mycat.route.parser.druid.impl.ddl;
-import java.sql.SQLNonTransientException;
-
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropIndexStatement;
-
+import io.mycat.config.ErrorCode;
import io.mycat.config.model.SchemaConfig;
import io.mycat.route.RouteResultset;
import io.mycat.route.parser.druid.MycatSchemaStatVisitor;
@@ -13,6 +11,8 @@ import io.mycat.route.util.RouterUtil;
import io.mycat.server.util.SchemaUtil;
import io.mycat.server.util.SchemaUtil.SchemaInfo;
+import java.sql.SQLException;
+
/**
*
* @author huqing.yan
@@ -21,13 +21,13 @@ import io.mycat.server.util.SchemaUtil.SchemaInfo;
public class DruidDropIndexParser extends DefaultDruidParser {
@Override
public SchemaConfig visitorParse(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt, MycatSchemaStatVisitor visitor)
- throws SQLNonTransientException {
+ throws SQLException {
String schemaName = schema == null ? null : schema.getName();
SQLDropIndexStatement dropStmt = (SQLDropIndexStatement) stmt;
SchemaInfo schemaInfo = SchemaUtil.getSchemaInfo(schemaName, dropStmt.getTableName());
if (schemaInfo == null) {
- String msg = "No MyCAT Database is selected Or defined, sql:" + stmt;
- throw new SQLNonTransientException(msg);
+ String msg = "No database selected";
+ throw new SQLException(msg,"3D000", ErrorCode.ER_NO_DB_ERROR);
}
RouterUtil.routeToDDLNode(schemaInfo, rrs);
return schemaInfo.schemaConfig;
diff --git a/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidDropTableParser.java b/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidDropTableParser.java
index 942238613..c79fe1f90 100644
--- a/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidDropTableParser.java
+++ b/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidDropTableParser.java
@@ -1,10 +1,8 @@
package io.mycat.route.parser.druid.impl.ddl;
-import java.sql.SQLNonTransientException;
-
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.ast.statement.SQLDropTableStatement;
-
+import io.mycat.config.ErrorCode;
import io.mycat.config.model.SchemaConfig;
import io.mycat.route.RouteResultset;
import io.mycat.route.parser.druid.MycatSchemaStatVisitor;
@@ -13,10 +11,13 @@ import io.mycat.route.util.RouterUtil;
import io.mycat.server.util.SchemaUtil;
import io.mycat.server.util.SchemaUtil.SchemaInfo;
+import java.sql.SQLException;
+import java.sql.SQLNonTransientException;
+
public class DruidDropTableParser extends DefaultDruidParser {
@Override
public SchemaConfig visitorParse(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt, MycatSchemaStatVisitor visitor)
- throws SQLNonTransientException {
+ throws SQLException {
SQLDropTableStatement dropTable = (SQLDropTableStatement) stmt;
if(dropTable.getTableSources().size()>1){
String msg = "dropping multi-tables is not supported, sql:" + stmt;
@@ -25,8 +26,8 @@ public class DruidDropTableParser extends DefaultDruidParser {
String schemaName = schema == null ? null : schema.getName();
SchemaInfo schemaInfo = SchemaUtil.getSchemaInfo(schemaName, dropTable.getTableSources().get(0));
if (schemaInfo == null) {
- String msg = "No MyCAT Database is selected Or defined, sql:" + stmt;
- throw new SQLNonTransientException(msg);
+ String msg = "No database selected";
+ throw new SQLException(msg,"3D000", ErrorCode.ER_NO_DB_ERROR);
}
RouterUtil.routeToDDLNode(schemaInfo, rrs);
return schemaInfo.schemaConfig;
diff --git a/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidTruncateTableParser.java b/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidTruncateTableParser.java
index 4c58be881..736173066 100644
--- a/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidTruncateTableParser.java
+++ b/src/main/java/io/mycat/route/parser/druid/impl/ddl/DruidTruncateTableParser.java
@@ -1,10 +1,8 @@
package io.mycat.route.parser.druid.impl.ddl;
-import java.sql.SQLNonTransientException;
-
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.ast.statement.SQLTruncateStatement;
-
+import io.mycat.config.ErrorCode;
import io.mycat.config.model.SchemaConfig;
import io.mycat.route.RouteResultset;
import io.mycat.route.parser.druid.MycatSchemaStatVisitor;
@@ -13,16 +11,18 @@ import io.mycat.route.util.RouterUtil;
import io.mycat.server.util.SchemaUtil;
import io.mycat.server.util.SchemaUtil.SchemaInfo;
+import java.sql.SQLException;
+
public class DruidTruncateTableParser extends DefaultDruidParser {
@Override
public SchemaConfig visitorParse(SchemaConfig schema, RouteResultset rrs, SQLStatement stmt, MycatSchemaStatVisitor visitor)
- throws SQLNonTransientException {
+ throws SQLException {
String schemaName = schema == null ? null : schema.getName();
SQLTruncateStatement truncateTable = (SQLTruncateStatement) stmt;
SchemaInfo schemaInfo = SchemaUtil.getSchemaInfo(schemaName, truncateTable.getTableSources().get(0));
if (schemaInfo == null) {
- String msg = "No MyCAT Database is selected Or defined, sql:" + stmt;
- throw new SQLNonTransientException(msg);
+ String msg = "No database selected";
+ throw new SQLException(msg,"3D000", ErrorCode.ER_NO_DB_ERROR);
}
RouterUtil.routeToDDLNode(schemaInfo, rrs);
return schemaInfo.schemaConfig;
diff --git a/src/main/java/io/mycat/route/sequence/BatchInsertSequence.java b/src/main/java/io/mycat/route/sequence/BatchInsertSequence.java
index e373832ba..8b118388c 100644
--- a/src/main/java/io/mycat/route/sequence/BatchInsertSequence.java
+++ b/src/main/java/io/mycat/route/sequence/BatchInsertSequence.java
@@ -28,6 +28,7 @@ import io.mycat.sqlengine.EngineCtx;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
/**
@@ -90,8 +91,8 @@ public class BatchInsertSequence implements Catlet {
String schemaName = schema == null ? null : schema.getName();
SchemaInfo schemaInfo = SchemaUtil.getSchemaInfo(schemaName, insert.getTableSource());
if (schemaInfo == null) {
- String msg = "No MyCAT Database is selected Or defined";
- throw new SQLNonTransientException(msg);
+ String msg = "No database selected";
+ throw new SQLException(msg,"3D000",ErrorCode.ER_NO_DB_ERROR);
}
rrs.setStatement(RouterUtil.removeSchema(rrs.getStatement(), schemaInfo.schema));
if(!MycatPrivileges.checkPrivilege(rrs.getSession().getSource(), schemaInfo.schema, schemaInfo.table, Checktype.INSERT)){
diff --git a/src/main/java/io/mycat/route/util/RouterUtil.java b/src/main/java/io/mycat/route/util/RouterUtil.java
index 35d64ccd7..bb6b3d852 100644
--- a/src/main/java/io/mycat/route/util/RouterUtil.java
+++ b/src/main/java/io/mycat/route/util/RouterUtil.java
@@ -6,6 +6,7 @@ import com.alibaba.druid.sql.ast.statement.SQLSelectStatement;
import com.alibaba.druid.wall.spi.WallVisitorUtils;
import io.mycat.MycatServer;
import io.mycat.cache.LayerCachePool;
+import io.mycat.config.ErrorCode;
import io.mycat.config.loader.console.ZookeeperPath;
import io.mycat.config.model.SchemaConfig;
import io.mycat.config.model.TableConfig;
@@ -28,6 +29,7 @@ import org.apache.curator.framework.CuratorFramework;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import java.util.*;
import java.util.concurrent.TimeUnit;
@@ -119,7 +121,7 @@ public class RouterUtil {
return count;
}
- public static RouteResultset routeFromParser(DruidParser druidParser, SchemaConfig schema, RouteResultset rrs, SQLStatement statement, String originSql,LayerCachePool cachePool,MycatSchemaStatVisitor visitor) throws SQLNonTransientException{
+ public static RouteResultset routeFromParser(DruidParser druidParser, SchemaConfig schema, RouteResultset rrs, SQLStatement statement, String originSql,LayerCachePool cachePool,MycatSchemaStatVisitor visitor) throws SQLException {
schema = druidParser.parser(schema, rrs, statement, originSql,cachePool,visitor);
if(rrs.isFinishedExecute()){
return null;
@@ -207,7 +209,7 @@ public class RouterUtil {
}
- public static void routeToDDLNode(SchemaInfo schemaInfo, RouteResultset rrs) throws SQLNonTransientException {
+ public static void routeToDDLNode(SchemaInfo schemaInfo, RouteResultset rrs) throws SQLException {
String stmt = getFixedSql(removeSchema(rrs.getStatement(),schemaInfo.schema));
List dataNodes;
Map tables = schemaInfo.schemaConfig.getTables();
@@ -215,7 +217,8 @@ public class RouterUtil {
if (tables != null && (tc != null)) {
dataNodes = tc.getDataNodes();
} else {
- throw new SQLNonTransientException("table '" + schemaInfo.table + "' doesn't exist");
+ String msg = "Table '"+schemaInfo.schema+"."+schemaInfo.table+"' doesn't exist";
+ throw new SQLException(msg, "42S02", ErrorCode.ER_NO_SUCH_TABLE);
}
Iterator iterator1 = dataNodes.iterator();
int nodeSize = dataNodes.size();
@@ -551,7 +554,7 @@ public class RouterUtil {
}
public static void routeToRandomNode(RouteResultset rrs,
- SchemaConfig schema, String tableName) {
+ SchemaConfig schema, String tableName) throws SQLException {
String dataNode = getRandomDataNode(schema, tableName);
routeToSingleNode(rrs,dataNode);
}
@@ -565,12 +568,15 @@ public class RouterUtil {
* @author mycat
*/
private static String getRandomDataNode(SchemaConfig schema,
- String table) {
+ String table) throws SQLException {
String dataNode = null;
Map tables = schema.getTables();
TableConfig tc;
if (tables != null && (tc = tables.get(table)) != null) {
dataNode = tc.getRandomDataNode();
+ } else {
+ String msg = "Table '"+schema.getName()+"."+table+"' doesn't exist";
+ throw new SQLException(msg, "42S02", ErrorCode.ER_NO_SUCH_TABLE);
}
return dataNode;
}
@@ -637,7 +643,7 @@ public class RouterUtil {
*/
public static RouteResultset tryRouteForTables(SchemaConfig schema, DruidShardingParseInfo ctx,
RouteCalculateUnit routeUnit, RouteResultset rrs, boolean isSelect, LayerCachePool cachePool)
- throws SQLNonTransientException {
+ throws SQLException {
List tables = ctx.getTables();
@@ -671,9 +677,8 @@ public class RouterUtil {
for(String tableName : tables) {
TableConfig tableConfig = schema.getTables().get(tableName);
if(tableConfig == null) {
- String msg = "can't find table define in schema "+ tableName + " schema:" + schema.getName();
- LOGGER.warn(msg);
- throw new SQLNonTransientException(msg);
+ String msg = "Table '"+schema.getName()+"."+tableName+"' doesn't exist";
+ throw new SQLException(msg, "42S02", ErrorCode.ER_NO_SUCH_TABLE);
}
if (!tableConfig.isGlobalTable() && tablesRouteMap.get(tableName) == null) { // 余下的表都是单库表
@@ -714,12 +719,11 @@ public class RouterUtil {
*/
public static RouteResultset tryRouteForOneTable(SchemaConfig schema, DruidShardingParseInfo ctx,
RouteCalculateUnit routeUnit, String tableName, RouteResultset rrs, boolean isSelect,
- LayerCachePool cachePool) throws SQLNonTransientException {
+ LayerCachePool cachePool) throws SQLException {
TableConfig tc = schema.getTables().get(tableName);
if(tc == null) {
- String msg = "can't find table [" + tableName + "] define in schema:" + schema.getName();
- LOGGER.warn(msg);
- throw new SQLNonTransientException(msg);
+ String msg = "Table '"+schema.getName()+"."+tableName+"' doesn't exist";
+ throw new SQLException(msg, "42S02", ErrorCode.ER_NO_SUCH_TABLE);
}
diff --git a/src/main/java/io/mycat/server/ServerConnection.java b/src/main/java/io/mycat/server/ServerConnection.java
index faba09964..6d95325b2 100644
--- a/src/main/java/io/mycat/server/ServerConnection.java
+++ b/src/main/java/io/mycat/server/ServerConnection.java
@@ -25,6 +25,8 @@ package io.mycat.server;
import java.io.IOException;
import java.nio.channels.NetworkChannel;
+import java.sql.SQLException;
+import java.sql.SQLNonTransientException;
import java.util.concurrent.atomic.AtomicLong;
import org.slf4j.Logger;
@@ -241,11 +243,20 @@ public class ServerConnection extends FrontendConnection {
schema, type, sql, this.charset, this);
} catch (Exception e) {
- StringBuilder s = new StringBuilder();
- LOGGER.warn(s.append(this).append(sql).toString() + " err:" + e.toString(),e);
- String msg = e.getMessage();
- writeErrMessage(ErrorCode.ER_PARSE_ERROR, msg == null ? e.getClass().getSimpleName() : msg);
- return;
+ if(e instanceof SQLException && !(e instanceof SQLNonTransientException)) {
+ SQLException sqle = (SQLException)e;
+ StringBuilder s = new StringBuilder();
+ LOGGER.warn(s.append(this).append(sql).toString() + " err:" + sqle.toString(), sqle);
+ String msg = sqle.getMessage();
+ writeErrMessage(sqle.getErrorCode(), msg == null ? sqle.getClass().getSimpleName() : msg);
+ return;
+ }else {
+ StringBuilder s = new StringBuilder();
+ LOGGER.warn(s.append(this).append(sql).toString() + " err:" + e.toString(), e);
+ String msg = e.getMessage();
+ writeErrMessage(ErrorCode.ER_PARSE_ERROR, msg == null ? e.getClass().getSimpleName() : msg);
+ return;
+ }
}
if (rrs != null) {
// session执行
diff --git a/src/main/java/io/mycat/server/handler/ExplainHandler.java b/src/main/java/io/mycat/server/handler/ExplainHandler.java
index 8227d488f..c83262fe1 100644
--- a/src/main/java/io/mycat/server/handler/ExplainHandler.java
+++ b/src/main/java/io/mycat/server/handler/ExplainHandler.java
@@ -59,6 +59,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.ByteBuffer;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import java.util.*;
@@ -309,15 +310,15 @@ public class ExplainHandler {
}
}
- private static boolean isInsertSeq(String stmt, SchemaConfig schema) throws SQLNonTransientException {
+ private static boolean isInsertSeq(String stmt, SchemaConfig schema) throws SQLException {
SQLStatementParser parser = new MySqlStatementParser(stmt);
MySqlInsertStatement statement = (MySqlInsertStatement) parser.parseStatement();
String schemaName = schema == null ? null : schema.getName();
SQLExprTableSource tableSource = statement.getTableSource();
SchemaUtil.SchemaInfo schemaInfo = SchemaUtil.getSchemaInfo(schemaName, tableSource);
if(schemaInfo == null){
- String msg = "No Database is selected Or defined";
- throw new SQLNonTransientException(msg);
+ String msg = "No database selected";
+ throw new SQLException(msg,"3D000", ErrorCode.ER_NO_DB_ERROR);
}
String tableName = schemaInfo.table;
schema = schemaInfo.schemaConfig;
diff --git a/src/main/java/io/mycat/server/handler/ServerLoadDataInfileHandler.java b/src/main/java/io/mycat/server/handler/ServerLoadDataInfileHandler.java
index 0bc03c692..b5e6e5b66 100644
--- a/src/main/java/io/mycat/server/handler/ServerLoadDataInfileHandler.java
+++ b/src/main/java/io/mycat/server/handler/ServerLoadDataInfileHandler.java
@@ -35,6 +35,7 @@ import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -386,7 +387,7 @@ public final class ServerLoadDataInfileHandler implements LoadDataInfileHandler
rrs.setNodes(nodes);
return rrs;
- } catch (SQLNonTransientException e)
+ } catch (SQLException e)
{
throw new RuntimeException(e);
}
diff --git a/src/main/java/io/mycat/server/util/SchemaUtil.java b/src/main/java/io/mycat/server/util/SchemaUtil.java
index 5f6a43400..0845b3741 100644
--- a/src/main/java/io/mycat/server/util/SchemaUtil.java
+++ b/src/main/java/io/mycat/server/util/SchemaUtil.java
@@ -1,26 +1,16 @@
package io.mycat.server.util;
-import java.sql.SQLNonTransientException;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
-import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
-import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource;
-import com.alibaba.druid.sql.ast.statement.SQLSelectQuery;
-import com.alibaba.druid.sql.ast.statement.SQLSelectStatement;
-import com.alibaba.druid.sql.ast.statement.SQLSubqueryTableSource;
-import com.alibaba.druid.sql.ast.statement.SQLTableSource;
+import com.alibaba.druid.sql.ast.statement.*;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlDeleteStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUnionQuery;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUpdateStatement;
-
import io.mycat.MycatServer;
+import io.mycat.config.ErrorCode;
import io.mycat.config.MycatPrivileges;
import io.mycat.config.MycatPrivileges.Checktype;
import io.mycat.config.model.SchemaConfig;
@@ -28,7 +18,12 @@ import io.mycat.route.util.RouterUtil;
import io.mycat.server.ServerConnection;
import io.mycat.util.StringUtil;
-import static io.mycat.server.parser.ServerParseShow.FULL_TABLE_CHECK;
+import java.sql.SQLException;
+import java.sql.SQLNonTransientException;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
import static io.mycat.server.parser.ServerParseShow.TABLE_PAT;
/**
@@ -88,7 +83,7 @@ public class SchemaUtil
}
public static SchemaInfo isNoSharding(ServerConnection source,String schema, SQLSelectQuery sqlSelectQuery, SQLStatement selectStmt)
- throws SQLNonTransientException {
+ throws SQLException {
if (sqlSelectQuery instanceof MySqlSelectQueryBlock) {
return isNoSharding(source, schema, ((MySqlSelectQueryBlock) sqlSelectQuery).getFrom(), selectStmt);
} else if (sqlSelectQuery instanceof MySqlUnionQuery) {
@@ -98,7 +93,7 @@ public class SchemaUtil
}
}
private static SchemaInfo isNoSharding(ServerConnection source,String schema, MySqlUnionQuery sqlSelectQuery, SQLStatement stmt)
- throws SQLNonTransientException {
+ throws SQLException {
SQLSelectQuery left = sqlSelectQuery.getLeft();
SQLSelectQuery right = sqlSelectQuery.getRight();
SchemaInfo leftInfo = isNoSharding(source, schema, left, stmt);
@@ -112,7 +107,7 @@ public class SchemaUtil
return StringUtil.equals(leftInfo.schema, rightInfo.schema)?leftInfo:null;
}
private static SchemaInfo isNoSharding(ServerConnection source,String schema, SQLTableSource tables, SQLStatement stmt)
- throws SQLNonTransientException {
+ throws SQLException {
if (tables instanceof SQLExprTableSource) {
return isNoSharding(source, schema, (SQLExprTableSource) tables, stmt);
} else if (tables instanceof SQLJoinTableSource) {
@@ -126,11 +121,11 @@ public class SchemaUtil
}
private static SchemaInfo isNoSharding(ServerConnection source, String schema, SQLExprTableSource table, SQLStatement stmt)
- throws SQLNonTransientException {
+ throws SQLException {
SchemaInfo schemaInfo = SchemaUtil.getSchemaInfo(schema, table);
if (schemaInfo == null) {
- String msg = "No MyCAT Database is selected Or defined, sql:" + stmt;
- throw new SQLNonTransientException(msg);
+ String msg = "No database selected";
+ throw new SQLException(msg,"3D000", ErrorCode.ER_NO_DB_ERROR);
}
Checktype chekctype = Checktype.SELECT;
if (stmt instanceof MySqlUpdateStatement) {
@@ -153,7 +148,7 @@ public class SchemaUtil
}
public static SchemaInfo isNoSharding(ServerConnection source, String schema, SQLJoinTableSource tables, SQLStatement stmt)
- throws SQLNonTransientException {
+ throws SQLException {
SQLTableSource left = tables.getLeft();
SQLTableSource right = tables.getRight();
SchemaInfo leftInfo = isNoSharding(source, schema, left, stmt);
diff --git a/src/test/java/io/mycat/route/DruidMysqlCreateTableTest.java b/src/test/java/io/mycat/route/DruidMysqlCreateTableTest.java
index feda7d84e..fa9b802c7 100644
--- a/src/test/java/io/mycat/route/DruidMysqlCreateTableTest.java
+++ b/src/test/java/io/mycat/route/DruidMysqlCreateTableTest.java
@@ -1,5 +1,6 @@
package io.mycat.route;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import java.util.List;
import java.util.Map;
@@ -49,7 +50,7 @@ public class DruidMysqlCreateTableTest
}
@Test
- public void testCreate() throws SQLNonTransientException {
+ public void testCreate() throws SQLException {
SchemaConfig schema = schemaMap.get("mysqldb");
RouteResultset rrs = routeStrategy.route(new SystemConfig(), schema, -1, originSql1, null,
@@ -66,7 +67,7 @@ public class DruidMysqlCreateTableTest
}
// @Test
- public void testInsert() throws SQLNonTransientException {
+ public void testInsert() throws SQLException {
SchemaConfig schema = schemaMap.get("mysqldb");
RouteResultset rrs = routeStrategy.route(new SystemConfig(), schema, -1, "insert into autoslot (id,sid) values(1,2) ", null,
diff --git a/src/test/java/io/mycat/route/DruidMysqlHavingTest.java b/src/test/java/io/mycat/route/DruidMysqlHavingTest.java
index 6eb5229e5..0de61a8a8 100644
--- a/src/test/java/io/mycat/route/DruidMysqlHavingTest.java
+++ b/src/test/java/io/mycat/route/DruidMysqlHavingTest.java
@@ -1,5 +1,6 @@
package io.mycat.route;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import java.util.Map;
@@ -29,7 +30,7 @@ public class DruidMysqlHavingTest
}
@Test
- public void testHaving() throws SQLNonTransientException {
+ public void testHaving() throws SQLException {
String sql = "select avg(offer_id) avgofferid, member_id from offer_detail group by member_id having avgofferid > 100";
SchemaConfig schema = schemaMap.get("cndb");
RouteResultset rrs = routeStrategy.route(new SystemConfig(), schema, -1, sql, null,
diff --git a/src/test/java/io/mycat/route/DruidMysqlSqlParserTest.java b/src/test/java/io/mycat/route/DruidMysqlSqlParserTest.java
index d4ff5cd50..f71d468c2 100644
--- a/src/test/java/io/mycat/route/DruidMysqlSqlParserTest.java
+++ b/src/test/java/io/mycat/route/DruidMysqlSqlParserTest.java
@@ -1,5 +1,6 @@
package io.mycat.route;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import java.util.Map;
@@ -30,7 +31,7 @@ public class DruidMysqlSqlParserTest
}
@Test
- public void testLimitPage() throws SQLNonTransientException {
+ public void testLimitPage() throws SQLException {
String sql = "select * from offer order by id desc limit 5,10";
SchemaConfig schema = schemaMap.get("mysqldb");
RouteResultset rrs = routeStrategy.route(new SystemConfig(), schema, -1, sql, null,
@@ -75,7 +76,7 @@ public class DruidMysqlSqlParserTest
}
@Test
- public void testLockTableSql() throws SQLNonTransientException{
+ public void testLockTableSql() throws SQLException {
String sql = "lock tables goods write";
SchemaConfig schema = schemaMap.get("TESTDB");
RouteResultset rrs = routeStrategy.route(new SystemConfig(), schema, ServerParse.LOCK, sql, null, null, cachePool);
diff --git a/src/test/java/io/mycat/route/TestSelectBetweenSqlParser.java b/src/test/java/io/mycat/route/TestSelectBetweenSqlParser.java
index 12279897b..efba6710f 100644
--- a/src/test/java/io/mycat/route/TestSelectBetweenSqlParser.java
+++ b/src/test/java/io/mycat/route/TestSelectBetweenSqlParser.java
@@ -1,5 +1,6 @@
package io.mycat.route;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import java.util.Map;
@@ -32,7 +33,7 @@ public class TestSelectBetweenSqlParser {
}
@Test
- public void testBetweenSqlRoute() throws SQLNonTransientException {
+ public void testBetweenSqlRoute() throws SQLException {
String sql = "select * from offer_detail where offer_id between 1 and 33";
SchemaConfig schema = schemaMap.get("cndb");
RouteResultset rrs = RouteStrategyFactory.getRouteStrategy().route(new SystemConfig(),schema, -1, sql, null,
diff --git a/src/test/java/io/mycat/route/perf/NoShardingSpace.java b/src/test/java/io/mycat/route/perf/NoShardingSpace.java
index 3cb0aad80..fe6258525 100644
--- a/src/test/java/io/mycat/route/perf/NoShardingSpace.java
+++ b/src/test/java/io/mycat/route/perf/NoShardingSpace.java
@@ -23,6 +23,7 @@
*/
package io.mycat.route.perf;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import io.mycat.SimpleCachePool;
@@ -47,7 +48,7 @@ public class NoShardingSpace {
schema = schemaLoader.getSchemas().get("dubbo");
}
- public void testDefaultSpace() throws SQLNonTransientException {
+ public void testDefaultSpace() throws SQLException {
SchemaConfig schema = this.schema;
String stmt = "insert into offer (member_id, gmt_create) values ('1','2001-09-13 20:20:33')";
for (int i = 0; i < total; i++) {
@@ -55,7 +56,7 @@ public class NoShardingSpace {
}
}
- public static void main(String[] args) throws SQLNonTransientException {
+ public static void main(String[] args) throws SQLException {
NoShardingSpace test = new NoShardingSpace();
System.currentTimeMillis();
diff --git a/src/test/java/io/mycat/route/perf/ShardingDefaultSpace.java b/src/test/java/io/mycat/route/perf/ShardingDefaultSpace.java
index 98084eb3c..b19c077a2 100644
--- a/src/test/java/io/mycat/route/perf/ShardingDefaultSpace.java
+++ b/src/test/java/io/mycat/route/perf/ShardingDefaultSpace.java
@@ -23,6 +23,7 @@
*/
package io.mycat.route.perf;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import io.mycat.SimpleCachePool;
@@ -50,7 +51,7 @@ public class ShardingDefaultSpace {
/**
* 路由到defaultSpace的性能测试
*/
- public void testDefaultSpace() throws SQLNonTransientException {
+ public void testDefaultSpace() throws SQLException {
SchemaConfig schema = this.getSchema();
String sql = "insert into offer (member_id, gmt_create) values ('1','2001-09-13 20:20:33')";
for (int i = 0; i < total; i++) {
diff --git a/src/test/java/io/mycat/route/perf/ShardingMultiTableSpace.java b/src/test/java/io/mycat/route/perf/ShardingMultiTableSpace.java
index 5abae9a26..4d4e16caa 100644
--- a/src/test/java/io/mycat/route/perf/ShardingMultiTableSpace.java
+++ b/src/test/java/io/mycat/route/perf/ShardingMultiTableSpace.java
@@ -23,6 +23,7 @@
*/
package io.mycat.route.perf;
+import java.sql.SQLException;
import java.sql.SQLNonTransientException;
import io.mycat.SimpleCachePool;
@@ -52,7 +53,7 @@ public class ShardingMultiTableSpace {
*
* @throws SQLNonTransientException
*/
- public void testTableSpace() throws SQLNonTransientException {
+ public void testTableSpace() throws SQLException {
SchemaConfig schema = getSchema();
String sql = "select id,member_id,gmt_create from offer where member_id in ('1','22','333','1124','4525')";
for (int i = 0; i < total; i++) {