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:image001.png@01DA52D9.79A24730]

Thanks,
Zhenning Zhang




Reply via email to