1.5.0
对较复杂sql能正确解析
### Error querying database. Cause: com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingUnsupportedException: Not supported token 'OR'.
### The error may exist in file [D:\Develop\Git\fcs2\fcs2-inv\fcs2-inv\fcs2-inv-public\target\classes\com\vip\fcs\app\item\job\dao\custom\mybatis\InvCstIntercompanyTrnSumTempMapperCustom.xml]
### The error may involve com.vip.fcs.app.item.job.dao.custom.mybatis.InvCstIntercompanyTrnSumTempMapper.queryInvCstSumQTY-Inline
### The error occurred while setting parameters
### SQL: select id, db_no, gid, item_no, s_qty, forg_id, sorg_id, f_c, s_c from inv_sum_temp where is_deleted = 0 AND period_name = ? AND item_no in ( ? , ? ) AND ( forg_id in ( ? , ? ) OR sorg_id in ( ? , ? ) ) AND ( f_c in ( ? , ? ) OR s_c in ( ? , ? ) )
### Cause: com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingUnsupportedException: Not supported token 'OR'.
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
at sun.reflect.GeneratedMethodAccessor155.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:434)
... 48 more
Caused by: com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingUnsupportedException: Not supported token 'OR'.
at com.dangdang.ddframe.rdb.sharding.parsing.parser.SQLParser.parseConditions(SQLParser.java:261)
at com.dangdang.ddframe.rdb.sharding.parsing.parser.SQLParser.parseWhere(SQLParser.java:252)
at com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.select.AbstractSelectParser.parseWhere(AbstractSelectParser.java:205)
at com.dangdang.ddframe.rdb.sharding.parsing.parser.dialect.mysql.MySQLSelectParser.query(MySQLSelectParser.java:52)
at com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.select.AbstractSelectParser.parse(AbstractSelectParser.java:78)
at com.dangdang.ddframe.rdb.sharding.parsing.SQLParsingEngine.parse(SQLParsingEngine.java:63)
at com.dangdang.ddframe.rdb.sharding.routing.router.ParsingSQLRouter.parse(ParsingSQLRouter.java:74)
at com.dangdang.ddframe.rdb.sharding.routing.PreparedStatementRoutingEngine.route(PreparedStatementRoutingEngine.java:54)
at com.dangdang.ddframe.rdb.sharding.jdbc.core.statement.ShardingPreparedStatement.route(ShardingPreparedStatement.java:120)
at com.dangdang.ddframe.rdb.sharding.jdbc.core.statement.ShardingPreparedStatement.execute(ShardingPreparedStatement.java:110)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:63)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
... 53 more
通过mybatis配置的查询sql,执行后即报错
SQL语句限制
不支持DDL语句
有限支持子查询
不支持HAVING
不支持OR,UNION 和 UNION ALL
不支持特殊INSERT
http://dangdangdotcom.github.io/sharding-jdbc/01-start/limitations/
不需要分库分表的表为何也不支持OR,能不能对默认的数据源支持OR,这样我就不用单独实现动态数据源
Is it still unsupported for Sharding-JDBC 3.x?
fixed at 3.x
duplicated with #501
Most helpful comment
不需要分库分表的表为何也不支持OR,能不能对默认的数据源支持OR,这样我就不用单独实现动态数据源