wgy8283335 opened a new issue #12973:
URL: https://github.com/apache/shardingsphere/issues/12973


   ## Feature Request
   
   ### sqlNode is not the same as SQL
   SQL:
   SELECT order_id, user_id, (SELECT MAX(user_id) FROM t_user_info) FROM 
t_order_federate
   
   After convert to SQLNode:
   SELECT `order_id`, `user_id`, (SELECT MAX(*) FROM `t_user_info`) FROM 
`t_order_federate` 
   
   This will cause an error in validation.
   ```
   org.apache.calcite.runtime.CalciteContextException: At line 0, column 0: 
Unknown identifier '*'
   
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at 
org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:506)
        at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:917)
        at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:902)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:5271)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:6324)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:6244)
        at org.apache.calcite.sql.SqlIdentifier.accept(SqlIdentifier.java:325)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.deriveTypeImpl(SqlValidatorImpl.java:1867)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.deriveType(SqlValidatorImpl.java:1852)
        at 
org.apache.calcite.sql.SqlOperator.constructArgTypeList(SqlOperator.java:678)
        at org.apache.calcite.sql.SqlFunction.deriveType(SqlFunction.java:249)
        at org.apache.calcite.sql.SqlFunction.deriveType(SqlFunction.java:231)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:6257)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:6244)
        at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:161)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.deriveTypeImpl(SqlValidatorImpl.java:1867)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.deriveType(SqlValidatorImpl.java:1852)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.expandSelectItem(SqlValidatorImpl.java:461)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelectList(SqlValidatorImpl.java:4414)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3657)
        at 
org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:64)
        at 
org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:89)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1098)
        at 
org.apache.calcite.sql.validate.AbstractNamespace.getRowType(AbstractNamespace.java:120)
        at 
org.apache.calcite.sql.validate.SelectNamespace.getRowType(SelectNamespace.java:34)
        at 
org.apache.calcite.sql.validate.AbstractNamespace.getType(AbstractNamespace.java:131)
        at 
org.apache.calcite.sql.validate.SelectNamespace.getType(SelectNamespace.java:34)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.deriveType(SqlValidatorImpl.java:1850)
        at 
org.apache.calcite.sql.type.SqlTypeUtil.deriveType(SqlTypeUtil.java:178)
        at 
org.apache.calcite.sql.type.OperandTypes$6.checkSingleOperandType(OperandTypes.java:672)
        at 
org.apache.calcite.sql.type.OperandTypes$6.checkOperandTypes(OperandTypes.java:689)
        at 
org.apache.calcite.sql.SqlOperator.checkOperandTypes(SqlOperator.java:751)
        at 
org.apache.calcite.sql.SqlOperator.validateOperands(SqlOperator.java:497)
        at 
org.apache.calcite.sql.SqlInternalOperator.deriveType(SqlInternalOperator.java:85)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:6257)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:6244)
        at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:161)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.deriveTypeImpl(SqlValidatorImpl.java:1867)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.deriveType(SqlValidatorImpl.java:1852)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.expandSelectItem(SqlValidatorImpl.java:461)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelectList(SqlValidatorImpl.java:4414)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3657)
        at 
org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:64)
        at 
org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:89)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1098)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1069)
        at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:247)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1044)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:750)
        at 
org.apache.shardingsphere.infra.optimize.ShardingSphereOptimizer.optimize(ShardingSphereOptimizer.java:65)
   ```
   
   ### Could we keep the identifier 'user_id'?
   


-- 
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