[
https://issues.apache.org/jira/browse/CALCITE-7501?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mihai Budiu resolved CALCITE-7501.
----------------------------------
Fix Version/s: 1.42.0
Resolution: Fixed
Fixed in
[https://github.com/apache/calcite/commit/e8e0dd54145c44f61b73acad1ffb96c14bddff78]
Thank you for the review [~snuyanzin]
> Assertion error in alias expansion for LEFT JOIN USING
> ------------------------------------------------------
>
> Key: CALCITE-7501
> URL: https://issues.apache.org/jira/browse/CALCITE-7501
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.41.0
> Reporter: Mihai Budiu
> Assignee: Mihai Budiu
> Priority: Minor
> Labels: pull-request-available
> Fix For: 1.42.0
>
>
> The following legitimate query triggers an assertion error:
> {code:java}
> CREATE TABLE D(sk_cid INT, dt DATE, dm_sym VARCHAR, fhd DATE);
> CREATE TABLE F(sk_cid INT);
> CREATE TABLE S(sk_sid INT, sym VARCHAR);
>
> SELECT
> d.dt as dtn,
> fhd as sk_fhd
> FROM D
> JOIN S
> ON S.sym = D.dm_sym
> LEFT JOIN F USING (sk_cid);{code}
> The stack trace is as follows:
> {code:java}
> > java.lang.AssertionError
> > at
> > org.apache.calcite.sql.SqlIdentifier.getSimple(SqlIdentifier.java:333)
> > at
> > org.apache.calcite.sql.validate.SqlValidatorImpl.getFieldAliases(SqlValidatorImpl.java:583)
> > at
> > org.apache.calcite.sql.validate.SqlValidatorImpl.access$700(SqlValidatorImpl.java:189)
> > at
> > org.apache.calcite.sql.validate.SqlValidatorImpl$Expander.expandExprFromJoin(SqlValidatorImpl.java:7523)
> > at
> > org.apache.calcite.sql.validate.SqlValidatorImpl$Expander.expandCommonColumn(SqlValidatorImpl.java:7508)
> > at
> > org.apache.calcite.sql.validate.SqlValidatorImpl$SelectExpander.visit(SqlValidatorImpl.java:7721)
> > at
> > org.apache.calcite.sql.validate.SqlValidatorImpl$SelectExpander.visit(SqlValidatorImpl.java:7678)
> > at org.apache.calcite.sql.SqlIdentifier.accept(SqlIdentifier.java:324)
> > at
> > org.apache.calcite.sql.util.SqlShuttle$CallCopyingArgHandler.visitChild(SqlShuttle.java:134)
> > at
> > org.apache.calcite.sql.util.SqlShuttle$CallCopyingArgHandler.visitChild(SqlShuttle.java:101)
> > at
> > org.apache.calcite.sql.SqlAsOperator.acceptCall(SqlAsOperator.java:129)
> > at
> > org.apache.calcite.sql.validate.SqlValidatorImpl$Expander.visitScoped(SqlValidatorImpl.java:7410)
> > at
> > org.apache.calcite.sql.validate.SqlScopedShuttle.visit(SqlScopedShuttle.java:54)
> > at
> > org.apache.calcite.sql.validate.SqlScopedShuttle.visit(SqlScopedShuttle.java:37)
> > at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:175)
> > at
> > org.apache.calcite.sql.validate.SqlValidatorImpl$Expander.go(SqlValidatorImpl.java:7350)
> > at
> > org.apache.calcite.sql.validate.SqlValidatorImpl$SelectExpander.go(SqlValidatorImpl.java:7717)
> > at
> > org.apache.calcite.sql.validate.SqlValidatorImpl.expandSelectExpr(SqlValidatorImpl.java:6913)
> > at
> > org.apache.calcite.sql.validate.SqlValidatorImpl.expandSelectItem(SqlValidatorImpl.java:490)
> > at
> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelectList(SqlValidatorImpl.java:5268)
> > at
> > org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:4260)
> > at
> > org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:62)
> {code}
> The statement failing is here:
> {code:java}
> fieldAliases.put(fieldIdentifier.getSimple(),
> ((SqlIdentifier) call.operand(1)).getSimple()); {code}
> where fieldIdentifier is actually d.dt, so it is not a simple identifier.
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)