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
[cid:[email protected]]
Thanks,
Zhenning Zhang