You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "benj (JIRA)" <ji...@apache.org> on 2019/08/12 13:55:00 UTC

[jira] [Commented] (DRILL-7050) RexNode convert exception in subquery

    [ https://issues.apache.org/jira/browse/DRILL-7050?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16905219#comment-16905219 ] 

benj commented on DRILL-7050:
-----------------------------

Just to illustrate in a real case (simplified here) the problem pointed by [~le.louch]:

It's possible to do
{code:sql}
SELECT u FROM
(SELECT split(r,' ') AS r FROM
 (SELECT 'unnest is useful' AS r)) AS x
,LATERAL(SELECT $unnest AS u FROM unnest(x.r))
=>
+-----------+
|     u     |
+-----------+
| unnest    |
| is        |
| useful    |
+-----------+
{code}
but not possible to do
{code:sql}
SELECT t,
(SELECT count(*) FROM
 (SELECT split(r,' ') AS r FROM
  (SELECT sub.t AS r)) AS x
 ,LATERAL(SELECT $unnest AS u FROM unnest(x.r))
 /* WHERE ... */) t2
FROM
(SELECT 'unnest is useful' AS t) sub
=>
Error: SYSTEM ERROR: UnsupportedOperationException: Adding Implicit RowID column is not supported for ValuesPrel operator
{code}

> RexNode convert exception in subquery
> -------------------------------------
>
>                 Key: DRILL-7050
>                 URL: https://issues.apache.org/jira/browse/DRILL-7050
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.14.0, 1.15.0
>            Reporter: Oleg Zinoviev
>            Assignee: Volodymyr Vysotskyi
>            Priority: Major
>              Labels: ready-to-commit
>             Fix For: 1.17.0
>
>
> If the query contains a subquery whose filters are associated with the main query, an error occurs: *PLAN ERROR: Cannot convert RexNode to equivalent Drill expression. RexNode Class: org.apache.calcite.rex.RexCorrelVariable*
> Steps to reproduce:
> 1) Create source table (or view, doesn't matter)
> {code:sql}
> create table dfs.root.source as  (
>     select 1 as id union all select 2 as id
> )
> {code}
> 2) Execute query
> {code:sql}
> select t1.id,
> 	(select count(t2.id) 
> 	from dfs.root.source t2 where t2.id = t1.id)
> from  dfs.root.source t1
> {code}
> Reason: 
> Method {code:java}org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.lookupExp{code}  call {code:java}RexBuilder.makeCorrel{code} in some cases



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)