This is a known issue. It seems not easy to fix. In my opinion, the alias of the measure should not have the same name as the column that already exists in the table.
On Mon, Jan 29, 2024 at 5:43 PM Zhang, Zhenning <zhennzh...@ebay.com.invalid> wrote: > Hi Teams, > > > > > > Issue: > > > > For a sql case, when a result column name is set as an alias of a measure > contains this column, like "select sum(a) as a". > > If this sql contains filter like 'having a = xxx', currently kylin5 > calcite (*calcite-core-1.116.0-kylin-4.x-r021*) will take this ‘a' as > original table column 'a' rather than the alias of measure sum(a), and > finally got a *SqlValidatorException*: *Expression 'a' is not being > grouped* > > Is there any fix for this issue? > > Thanks. > > > > Sql case: > > > > select LO_ORDERKEY, *sum(LO_ORDTOTALPRICE) as LO_ORDTOTALPRICE* from > SSB.LINEORDEr where LO_ORDERKEY > 1 group by LO_ORDERKEY having 1=1 and ( > *LO_ORDTOTALPRICE* = 5509067) > > > > Error message: > > > > Caused by: *org.apache.calcite.sql.validate.SqlValidatorException*: > *Expression > 'LO_ORDTOTALPRICE' is not being grouped* > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) ~[?:1.8.0_292] > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) > ~[?:1.8.0_292] > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > ~[?:1.8.0_292] > at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~ > [?:1.8.0_292] > at > org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:572) ~ > [calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:834) ~ > [calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:819) ~ > [calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:4746) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.AggChecker.visit(AggChecker.java:117) ~ > [calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.AggChecker.visit(AggChecker.java:41) ~ > [calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at org.apache.calcite.sql.SqlIdentifier.accept(SqlIdentifier.java:366) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.util.SqlBasicVisitor$ArgHandlerImpl.visitChild(SqlBasicVisitor.java:123) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at org.apache.calcite.sql.SqlOperator.acceptCall(SqlOperator.java:859) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.AggChecker.visit(AggChecker.java:212) ~ > [calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.AggChecker.visit(AggChecker.java:41) ~ > [calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:138) ~ > [calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.util.SqlBasicVisitor$ArgHandlerImpl.visitChild(SqlBasicVisitor.java:123) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at org.apache.calcite.sql.SqlOperator.acceptCall(SqlOperator.java:859) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.AggChecker.visit(AggChecker.java:212) ~ > [calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.AggChecker.visit(AggChecker.java:41) ~ > [calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:138) ~ > [calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.AggregatingSelectScope.checkAggregateExpr(AggregatingSelectScope.java:231) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateHavingClause(SqlValidatorImpl.java:3974) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3264) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:987) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:968) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:226) ~ > [calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:943) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:653) > ~[calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021] > *at > org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:571) > ~[**calcite-core-1.116.0-kylin-4.x-r021.jar:1.116.0-kylin-4.x-r021]* > at > org.apache.kylin.query.engine.SQLConverter.convertToRelNode(SQLConverter.java:180) > ~[classes/:?] > at > org.apache.kylin.query.engine.SQLConverter.convertSqlToRelNode(SQLConverter.java:108) > ~[classes/:?] > at > org.apache.kylin.query.engine.QueryExec.executeQuery(QueryExec.java:188) ~ > [classes/:?] > ... 215 more > > > > > > Thanks, > > Zhenning Zhang > > > > > > > > >