You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Michael Mior (JIRA)" <ji...@apache.org> on 2017/03/17 13:38:41 UTC

[jira] [Created] (CALCITE-1705) NPE on query with UNNEST

Michael Mior created CALCITE-1705:
-------------------------------------

             Summary: NPE on query with UNNEST
                 Key: CALCITE-1705
                 URL: https://issues.apache.org/jira/browse/CALCITE-1705
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.11.0
            Reporter: Michael Mior
            Assignee: Julian Hyde


I have a MongoDB collection called {{publishers}} where a document looks like the following:

{code:javascript}
{
	"_id" : "987654321",
	"name" : "O’Reilly Media",
	"founded" : 1980,
	"books" : [
		"123456789",
		"000000000"
	]
}
{code}

From this, I want to produce a result that looks like:

{noformat}
_id       | book
----------|----------------
987654321 | 123456789
987654321 | 000000000
{noformat}

To produce this, I tried using {{UNNEST}} as in the query below:

{code:sql}
select * from "mongo_raw"."publishers" as p, unnest(cast(p._MAP['books'] as varchar multiset));
{code}

Unfortunately, this results in the following NPE:

{noformat}
Error: Error while executing SQL "select * from "mongo_raw"."publishers" as p, unnest(cast(p._MAP['books'] as varchar multiset))": null (state=,code=0)
java.sql.SQLException: Error while executing SQL "select * from "mongo_raw"."publishers" as p, unnest(cast(p._MAP['books'] as varchar multiset))": null
        at org.apache.calcite.avatica.Helper.createException(Helper.java:56)
        at org.apache.calcite.avatica.Helper.createException(Helper.java:41)
        at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156)
        at org.apache.calcite.avatica.AvaticaStatement.execute(AvaticaStatement.java:209)
        at sqlline.Commands.execute(Commands.java:822)
        at sqlline.Commands.sql(Commands.java:732)
        at sqlline.SqlLine.dispatch(SqlLine.java:813)
        at sqlline.SqlLine.begin(SqlLine.java:686)
        at sqlline.SqlLine.start(SqlLine.java:398)
        at sqlline.SqlLine.main(SqlLine.java:291)
Caused by: java.lang.NullPointerException
        at org.apache.calcite.sql2rel.StandardConvertletTable.convertCast(StandardConvertletTable.java:525)
        at org.apache.calcite.sql2rel.StandardConvertletTable$1.convertCall(StandardConvertletTable.java:116)
        at org.apache.calcite.sql2rel.SqlNodeToRexConverterImpl.convertCall(SqlNodeToRexConverterImpl.java:61)
        at org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:4397)
        at org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:3765)
        at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:137)
        at org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.convertExpression(SqlToRelConverter.java:4299)
        at org.apache.calcite.sql2rel.SqlToRelConverter.convertFrom(SqlToRelConverter.java:2056)
        at org.apache.calcite.sql2rel.SqlToRelConverter.convertFrom(SqlToRelConverter.java:1913)
        at org.apache.calcite.sql2rel.SqlToRelConverter.convertFrom(SqlToRelConverter.java:1998)
        at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:635)
        at org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:616)
        at org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:2933)
        at org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:552)
        at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:236)
        at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:200)
        at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:761)
        at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:617)
        at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:587)
        at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:214)
        at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:595)
        at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:615)
        at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:148)
        ... 7 more
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)