You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "TaiNing Wang (Jira)" <ji...@apache.org> on 2021/06/08 10:56:00 UTC

[jira] [Created] (CALCITE-4643) AssertionError for outerjoin query

TaiNing Wang created CALCITE-4643:
-------------------------------------

             Summary: AssertionError for outerjoin query
                 Key: CALCITE-4643
                 URL: https://issues.apache.org/jira/browse/CALCITE-4643
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.26.0
         Environment: OS: Ubuntu 16.04
            Reporter: TaiNing Wang


Hello,

 

I ran into some error when trying to run the following query in calcite-1.26.0:

 

 

 
{code:java}
SELECT * FROM aka_name INNER JOIN name ON aka_name.person_id = name.id
INNER JOIN cast_info ON aka_name.person_id = cast_info.person_id AND name.id = cast_info.person_id
INNER JOIN title ON cast_info.movie_id = title.id
LEFT JOIN (SELECT * FROM role_type WHERE role = 'writer') AS t1 ON cast_info.role_id = t1.id
LEFT JOIN movie_companies ON cast_info.movie_id = movie_companies.movie_id AND title.id = movie_companies.movie_id
WHERE NOT EXISTS (SELECT 1 FROM company_name WHERE country_code = '[us]' AND movie_companies.company_id = company_name.id)
{code}
 

Error:

 
{code:java}
    java.lang.AssertionError
        at org.apache.calcite.sql2rel.SqlToRelConverter.getCorrelationUse(SqlToRelConverter.java:2754)
        at org.apache.calcite.sql2rel.SqlToRelConverter.createJoin(SqlToRelConverter.java:2636)
        at org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.register(SqlToRelConverter.java:4526)
        at org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.register(SqlToRelConverter.java:4451)
        at org.apache.calcite.sql2rel.SqlToRelConverter.substituteSubQuery(SqlToRelConverter.java:1253)
        at org.apache.calcite.sql2rel.SqlToRelConverter.replaceSubQueries(SqlToRelConverter.java:1063)
        at org.apache.calcite.sql2rel.SqlToRelConverter.convertWhere(SqlToRelConverter.java:1029)
        at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:666)
        at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:644)
        at org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3438)
        at org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:570)
        at org.apache.calcite.prepare.PlannerImpl.rel(PlannerImpl.java:247)
        ^[[0;1mat MyTest.query0(MyTest.java:44)
{code}
 

 

The parser config used:

 
{code:java}
  private static final SqlParser.Config PARSER_CONFIG
      = SqlParser.configBuilder().setLex(DEFAULT_LEX).build();
{code}
 

 

A simpler query that gives the same error:

 
{code:java}
SELECT * FROM cast_info LEFT JOIN movie_companies ON cast_info.movie_id = movie_companies.movie_id
WHERE NOT EXISTS (SELECT 1 FROM company_name WHERE country_code = '[us]' AND movie_companies.company_id = company_name.id)
{code}
 

 

Any idea what the problem is? Thanks a lot!

 

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)