|
@@ -32,10 +32,7 @@ import net.sf.jsqlparser.expression.operators.relational.NotEqualsTo;
|
|
|
import net.sf.jsqlparser.schema.Column;
|
|
|
import net.sf.jsqlparser.schema.Table;
|
|
|
import net.sf.jsqlparser.statement.delete.Delete;
|
|
|
-import net.sf.jsqlparser.statement.select.Join;
|
|
|
-import net.sf.jsqlparser.statement.select.PlainSelect;
|
|
|
-import net.sf.jsqlparser.statement.select.Select;
|
|
|
-import net.sf.jsqlparser.statement.select.SubSelect;
|
|
|
+import net.sf.jsqlparser.statement.select.*;
|
|
|
import net.sf.jsqlparser.statement.update.Update;
|
|
|
import org.apache.ibatis.executor.statement.StatementHandler;
|
|
|
import org.apache.ibatis.mapping.BoundSql;
|
|
@@ -108,13 +105,16 @@ public class IllegalSQLInnerInterceptor extends JsqlParserSupport implements Inn
|
|
|
|
|
|
@Override
|
|
|
protected void processSelect(Select select, int index, String sql, Object obj) {
|
|
|
- PlainSelect plainSelect = (PlainSelect) select.getSelectBody();
|
|
|
- Expression where = plainSelect.getWhere();
|
|
|
- Assert.notNull(where, "非法SQL,必须要有where条件");
|
|
|
- Table table = (Table) plainSelect.getFromItem();
|
|
|
- List<Join> joins = plainSelect.getJoins();
|
|
|
- validWhere(where, table, (Connection) obj);
|
|
|
- validJoins(joins, table, (Connection) obj);
|
|
|
+ SelectBody selectBody = select.getSelectBody();
|
|
|
+ if (selectBody instanceof PlainSelect) {
|
|
|
+ PlainSelect plainSelect = (PlainSelect) selectBody;
|
|
|
+ Expression where = plainSelect.getWhere();
|
|
|
+ Assert.notNull(where, "非法SQL,必须要有where条件");
|
|
|
+ Table table = (Table) plainSelect.getFromItem();
|
|
|
+ List<Join> joins = plainSelect.getJoins();
|
|
|
+ validWhere(where, table, (Connection) obj);
|
|
|
+ validJoins(joins, table, (Connection) obj);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -329,7 +329,7 @@ public class IllegalSQLInnerInterceptor extends JsqlParserSupport implements Inn
|
|
|
indexInfoMap.put(key, indexInfos);
|
|
|
}
|
|
|
} catch (SQLException e) {
|
|
|
- e.printStackTrace();
|
|
|
+ logger.error(String.format("getIndexInfo fault, with key:{}, dbName:{}, tableName:{}", key, dbName, tableName), e);
|
|
|
}
|
|
|
}
|
|
|
return indexInfos;
|