zhangwangren opened a new issue #13056:
URL: https://github.com/apache/shardingsphere/issues/13056


   ## Bug Report
   
   ### Which version of ShardingSphere did you use?
   5.0.0-RC1
   ### Which project did you use? ShardingSphere-JDBC or ShardingSphere-Proxy?
   ShardingSphere-JDBC
   ### Expected behavior
   i'd like to use normal table to JOIN broadcast table and i need use sharding 
table to JOIN broadcast table too.
   ### Actual behavior
   in the 5.0.0-RC1 version, the normal table can JOIN broadcast table but 
sharding table can't.
   ### Reason analyze (If you can)
   
   ### Steps to reproduce the behavior, such as: SQL to execute, sharding rule 
configuration, when exception occur etc.
   #### my normal table is: 
   reservoir_water_data_latest 
   #### my broadcast table config is:
   spring.shardingsphere.sharding.broadcast-tables[0]=reservoir_flood_limit
   
spring.shardingsphere.sharding.tables.reservoir_flood_limit.actual-data-nodes=ds$->{0}.reservoir_flood_limit
   #### my sharinding table config is:
   
spring.shardingsphere.rules.sharding.sharding-algorithms.db-class-based.type=CLASS_BASED
   
spring.shardingsphere.rules.sharding.sharding-algorithms.db-class-based.props.strategy=STANDARD
   
spring.shardingsphere.rules.sharding.sharding-algorithms.db-class-based.props.algorithmClassName=com.sky.dam.water.config.sharding.TimeDatabaseShardingAlgorithm
   
   
spring.shardingsphere.rules.sharding.sharding-algorithms.tb-class-based.type=CLASS_BASED
   
spring.shardingsphere.rules.sharding.sharding-algorithms.tb-class-based.props.strategy=STANDARD
   
spring.shardingsphere.rules.sharding.sharding-algorithms.tb-class-based.props.algorithmClassName=com.sky.dam.water.config.sharding.TimeTableShardingAlgorithm
   
   
spring.shardingsphere.rules.sharding.default-database-strategy.standard.sharding-column=TM
   
spring.shardingsphere.rules.sharding.default-database-strategy.standard.sharding-algorithm-name=db-class-based
   
   
spring.shardingsphere.rules.sharding.tables.reservoir_water_data.actual-data-nodes=ds$->{0..9}.reservoir_water_data_0$->{1..9},ds$->{0..9}.reservoir_water_data_1$->{0..2}
   
spring.shardingsphere.rules.sharding.tables.reservoir_water_data.table-strategy.standard.sharding-column=TM
   
spring.shardingsphere.rules.sharding.tables.reservoir_water_data.table-strategy.standard.sharding-algorithm-name=tb-class-based
   
   #### the sql and problem is:
   This sql is work: 
   SELECT wdl.STCD. wdl.TM 
   FROM reservoir_water_data_latest wdl 
   LEFT JOIN reservoir_flood_limit rfl ON rfl.STCD = wdl.STCD 
   WHERE 1=1 
   AND ...
   
   but this sql doesn't work:
   SELECT rwd.STCD. rwd.TM, rwd.ADDVCD
   FROM reservoir_water_data rwd
   LEFT JOIN reservoir_flood_limit rfl ON rfl.STCD = rwd.STCD 
   WHERE 1=1 
   AND rwd.TM > '2021-10-15 00:00:00' AND rwd.TM < '2021-10-15 11:00:00' 
   GROUP BY rwd.ADDVCD
   ### Example codes for reproduce this issue (such as a github link).
   Throw a Exception like this: 
   at org.apache.calcite.avatica.Helper.createException(Helper.java:56) 
~[avatica-core-1.18.0.jar:1.18.0]
        at org.apache.calcite.avatica.Helper.createException(Helper.java:41) 
~[avatica-core-1.18.0.jar:1.18.0]
        at 
org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement_(CalciteConnectionImpl.java:239)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement(CalciteConnectionImpl.java:218)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement(CalciteConnectionImpl.java:101)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.avatica.AvaticaConnection.prepareStatement(AvaticaConnection.java:175)
 ~[avatica-core-1.18.0.jar:1.18.0]
        at 
org.apache.shardingsphere.infra.executor.sql.federate.original.OriginalFilterableExecutor.execute(OriginalFilterableExecutor.java:84)
 ~[shardingsphere-infra-executor-5.0.0-RC1-SNAPSHOT.jar:5.0.0-RC1-SNAPSHOT]
        at 
org.apache.shardingsphere.infra.executor.sql.federate.original.OriginalFilterableExecutor.executeQuery(OriginalFilterableExecutor.java:77)
 ~[shardingsphere-infra-executor-5.0.0-RC1-SNAPSHOT.jar:5.0.0-RC1-SNAPSHOT]
        at 
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.executeFederatedQuery(ShardingSpherePreparedStatement.java:223)
 ~[shardingsphere-jdbc-core-5.0.0-RC1-SNAPSHOT.jar:5.0.0-RC1-SNAPSHOT]
        at 
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.execute(ShardingSpherePreparedStatement.java:293)
 ~[shardingsphere-jdbc-core-5.0.0-RC1-SNAPSHOT.jar:5.0.0-RC1-SNAPSHOT]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[na:1.8.0_172]
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[na:1.8.0_172]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[na:1.8.0_172]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_172]
        at 
org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59)
 ~[mybatis-3.5.7.jar:3.5.7]
        at com.sun.proxy.$Proxy369.execute(Unknown Source) ~[na:na]
        at 
org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)
 ~[mybatis-3.5.7.jar:3.5.7]
        at 
org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
 ~[mybatis-3.5.7.jar:3.5.7]
        at 
org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63) 
~[mybatis-3.5.7.jar:3.5.7]
        at 
org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)
 ~[mybatis-3.5.7.jar:3.5.7]
        at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) 
~[mybatis-3.5.7.jar:3.5.7]
        at 
org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) 
~[mybatis-3.5.7.jar:3.5.7]
        at 
com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:111) 
~[pagehelper-5.2.0.jar:na]
        at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) 
~[mybatis-3.5.7.jar:3.5.7]
        at com.sun.proxy.$Proxy367.query(Unknown Source) ~[na:na]
        at 
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
 ~[mybatis-3.5.7.jar:3.5.7]
        at 
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145)
 ~[mybatis-3.5.7.jar:3.5.7]
        at 
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
 ~[mybatis-3.5.7.jar:3.5.7]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[na:1.8.0_172]
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[na:1.8.0_172]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[na:1.8.0_172]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_172]
        at 
org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427)
 ~[mybatis-spring-2.0.6.jar:2.0.6]
        ... 88 common frames omitted
   Caused by: org.apache.calcite.runtime.CalciteContextException: From line 3, 
column 5 to line 3, column 10: Expression 'rwd.TM' is not being grouped
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
Method) ~[na:1.8.0_172]
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 ~[na:1.8.0_172]
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 ~[na:1.8.0_172]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
~[na:1.8.0_172]
        at 
org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:506) 
~[calcite-core-1.27.0.jar:1.27.0]
        at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:917) 
~[calcite-core-1.27.0.jar:1.27.0]
        at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:902) 
~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:5271)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.sql.validate.AggChecker.visit(AggChecker.java:116) 
~[calcite-core-1.27.0.jar:1.27.0]
        at org.apache.calcite.sql.validate.AggChecker.visit(AggChecker.java:43) 
~[calcite-core-1.27.0.jar:1.27.0]
        at org.apache.calcite.sql.SqlIdentifier.accept(SqlIdentifier.java:325) 
~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.sql.validate.AggregatingSelectScope.checkAggregateExpr(AggregatingSelectScope.java:218)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.sql.validate.AggregatingSelectScope.validateExpr(AggregatingSelectScope.java:227)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateExpr(SqlValidatorImpl.java:4472)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelectList(SqlValidatorImpl.java:4443)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3657)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:64)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:89)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1098)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1069)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:247) 
~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1044)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:750)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:585)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:251) 
~[calcite-core-1.27.0.jar:1.27.0]
        at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:215) 
~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:647)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:513)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:483)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:249)
 ~[calcite-core-1.27.0.jar:1.27.0]
        at 
org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement_(CalciteConnectionImpl.java:229)
 ~[calcite-core-1.27.0.jar:1.27.0]
        ... 118 common frames omitted
   Caused by: org.apache.calcite.sql.validate.SqlValidatorException: Expression 
'rwd.TM' is not being grouped
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
Method) ~[na:1.8.0_172]
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 ~[na:1.8.0_172]
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 ~[na:1.8.0_172]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
~[na:1.8.0_172]
        at 
org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:506) 
~[calcite-core-1.27.0.jar:1.27.0]
        at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:600) 
~[calcite-core-1.27.0.jar:1.27.0]
        ... 144 common frames omitted
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to