You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Leonid Chistov (Jira)" <ji...@apache.org> on 2022/11/21 10:17:00 UTC
[jira] [Created] (CALCITE-5394) RelToSql converter fails when semi-join is under a join node
Leonid Chistov created CALCITE-5394:
---------------------------------------
Summary: RelToSql converter fails when semi-join is under a join node
Key: CALCITE-5394
URL: https://issues.apache.org/jira/browse/CALCITE-5394
Project: Calcite
Issue Type: Bug
Affects Versions: 1.32.0
Reporter: Leonid Chistov
The following test case would fail if added to RelToSqlConverterTest.java:
{code:java}
@Test void testSemiJoinUnderJoin() {
final RelBuilder builder = relBuilder();
final RelNode base = builder
.scan("EMP")
.scan("EMP")
.join(
JoinRelType.SEMI, builder.equals(
builder.field(2, 0, "EMPNO"),
builder.field(2, 1, "EMPNO")))
.build();
final RelNode root = builder
.scan("DEPT")
.push(base)
.join(
JoinRelType.INNER, builder.equals(
builder.field(2, 1, "DEPTNO"),
builder.field(2, 0, "DEPTNO")))
.project(builder.field("DEPTNO"))
.build();
toSql(root);
} {code}
The exception is:
{code:java}
alias
java.lang.NullPointerException: alias
at java.base/java.util.Objects.requireNonNull(Objects.java:233)
at org.apache.calcite.rel.rel2sql.SqlImplementor.collectAliases(SqlImplementor.java:493)
at org.apache.calcite.rel.rel2sql.SqlImplementor.collectAliases(SqlImplementor.java:491)
at org.apache.calcite.rel.rel2sql.SqlImplementor.result(SqlImplementor.java:476)
at org.apache.calcite.rel.rel2sql.RelToSqlConverter.visit(RelToSqlConverter.java:246) {code}
Cause of failure seems to be that `RelToSqlConverter::visitAntiOrSemiJoin` rewrites semi-join as select with no associated alias.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)