You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Vova Vysotskyi (Jira)" <ji...@apache.org> on 2020/12/21 19:30:00 UTC

[jira] [Updated] (CALCITE-4444) Elasticsearch adapter fails for ES 6 if query contains aggregations

     [ https://issues.apache.org/jira/browse/CALCITE-4444?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Vova Vysotskyi updated CALCITE-4444:
------------------------------------
    Description: 
Queries like this one:
{code:sql}
select distinct _MAP['a'] from "elastic"."nested"
{code}

Fails with the following error for the case when using ElasticSearch 6:
{noformat}
Error: Error while executing SQL "select distinct _MAP['a'] from "elastic"."nested"": Field a not defined for nested (state=,code=0)
java.sql.SQLException: Error while executing SQL "select distinct _MAP['a'] from "elastic"."nested"": Field a not defined for nested
        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:163)
        at org.apache.calcite.avatica.AvaticaStatement.execute(AvaticaStatement.java:217)
        at sqlline.Commands.executeSingleQuery(Commands.java:1054)
        at sqlline.Commands.execute(Commands.java:1003)
        at sqlline.Commands.sql(Commands.java:967)
        at sqlline.SqlLine.dispatch(SqlLine.java:734)
        at sqlline.SqlLine.begin(SqlLine.java:541)
        at sqlline.SqlLine.start(SqlLine.java:267)
        at sqlline.SqlLine.main(SqlLine.java:206)
Caused by: java.lang.IllegalArgumentException: Field a not defined for nested
        at org.apache.calcite.adapter.elasticsearch.ElasticsearchMapping.missingValueFor(ElasticsearchMapping.java:85)
        at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.aggregate(ElasticsearchTable.java:217)
        at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.find(ElasticsearchTable.java:119)
        at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.access$000(ElasticsearchTable.java:61)
        at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable$ElasticsearchQueryable.find(ElasticsearchTable.java:366)
        at Baz.bind(Unknown Source)
        at org.apache.calcite.jdbc.CalcitePrepare$CalciteSignature.enumerable(CalcitePrepare.java:363)
        at org.apache.calcite.jdbc.CalciteConnectionImpl.enumerable(CalciteConnectionImpl.java:320)
        at org.apache.calcite.jdbc.CalciteMetaImpl._createIterable(CalciteMetaImpl.java:517)
        at org.apache.calcite.jdbc.CalciteMetaImpl.createIterable(CalciteMetaImpl.java:508)
        at org.apache.calcite.avatica.AvaticaResultSet.execute(AvaticaResultSet.java:182)
        at org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:64)
        at org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:43)
        at org.apache.calcite.avatica.AvaticaConnection$1.execute(AvaticaConnection.java:667)
        at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:577)
        at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675)
        at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156)
        ... 8 more

{noformat}

  was:
Queries like this one:
{code:sql}
select distinct _MAP['a'] from "elastic"."nested"
{code}

Fails with the following error for the case when using ElasticSearch 6:
{noformat}
Error: Error while executing SQL "select distinct _MAP['a'] from "elastic"."nested"": Field a not defined for nested (state=,code=0)
java.sql.SQLException: Error while executing SQL "select distinct _MAP['a'] from "elastic"."nested"": Field a not defined for employee
        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:163)
        at org.apache.calcite.avatica.AvaticaStatement.execute(AvaticaStatement.java:217)
        at sqlline.Commands.executeSingleQuery(Commands.java:1054)
        at sqlline.Commands.execute(Commands.java:1003)
        at sqlline.Commands.sql(Commands.java:967)
        at sqlline.SqlLine.dispatch(SqlLine.java:734)
        at sqlline.SqlLine.begin(SqlLine.java:541)
        at sqlline.SqlLine.start(SqlLine.java:267)
        at sqlline.SqlLine.main(SqlLine.java:206)
Caused by: java.lang.IllegalArgumentException: Field a not defined for nested
        at org.apache.calcite.adapter.elasticsearch.ElasticsearchMapping.missingValueFor(ElasticsearchMapping.java:85)
        at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.aggregate(ElasticsearchTable.java:217)
        at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.find(ElasticsearchTable.java:119)
        at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.access$000(ElasticsearchTable.java:61)
        at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable$ElasticsearchQueryable.find(ElasticsearchTable.java:366)
        at Baz.bind(Unknown Source)
        at org.apache.calcite.jdbc.CalcitePrepare$CalciteSignature.enumerable(CalcitePrepare.java:363)
        at org.apache.calcite.jdbc.CalciteConnectionImpl.enumerable(CalciteConnectionImpl.java:320)
        at org.apache.calcite.jdbc.CalciteMetaImpl._createIterable(CalciteMetaImpl.java:517)
        at org.apache.calcite.jdbc.CalciteMetaImpl.createIterable(CalciteMetaImpl.java:508)
        at org.apache.calcite.avatica.AvaticaResultSet.execute(AvaticaResultSet.java:182)
        at org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:64)
        at org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:43)
        at org.apache.calcite.avatica.AvaticaConnection$1.execute(AvaticaConnection.java:667)
        at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:577)
        at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675)
        at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156)
        ... 8 more

{noformat}


> Elasticsearch adapter fails for ES 6 if query contains aggregations
> -------------------------------------------------------------------
>
>                 Key: CALCITE-4444
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4444
>             Project: Calcite
>          Issue Type: Bug
>    Affects Versions: 1.26.0
>            Reporter: Vova Vysotskyi
>            Priority: Major
>
> Queries like this one:
> {code:sql}
> select distinct _MAP['a'] from "elastic"."nested"
> {code}
> Fails with the following error for the case when using ElasticSearch 6:
> {noformat}
> Error: Error while executing SQL "select distinct _MAP['a'] from "elastic"."nested"": Field a not defined for nested (state=,code=0)
> java.sql.SQLException: Error while executing SQL "select distinct _MAP['a'] from "elastic"."nested"": Field a not defined for nested
>         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:163)
>         at org.apache.calcite.avatica.AvaticaStatement.execute(AvaticaStatement.java:217)
>         at sqlline.Commands.executeSingleQuery(Commands.java:1054)
>         at sqlline.Commands.execute(Commands.java:1003)
>         at sqlline.Commands.sql(Commands.java:967)
>         at sqlline.SqlLine.dispatch(SqlLine.java:734)
>         at sqlline.SqlLine.begin(SqlLine.java:541)
>         at sqlline.SqlLine.start(SqlLine.java:267)
>         at sqlline.SqlLine.main(SqlLine.java:206)
> Caused by: java.lang.IllegalArgumentException: Field a not defined for nested
>         at org.apache.calcite.adapter.elasticsearch.ElasticsearchMapping.missingValueFor(ElasticsearchMapping.java:85)
>         at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.aggregate(ElasticsearchTable.java:217)
>         at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.find(ElasticsearchTable.java:119)
>         at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.access$000(ElasticsearchTable.java:61)
>         at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable$ElasticsearchQueryable.find(ElasticsearchTable.java:366)
>         at Baz.bind(Unknown Source)
>         at org.apache.calcite.jdbc.CalcitePrepare$CalciteSignature.enumerable(CalcitePrepare.java:363)
>         at org.apache.calcite.jdbc.CalciteConnectionImpl.enumerable(CalciteConnectionImpl.java:320)
>         at org.apache.calcite.jdbc.CalciteMetaImpl._createIterable(CalciteMetaImpl.java:517)
>         at org.apache.calcite.jdbc.CalciteMetaImpl.createIterable(CalciteMetaImpl.java:508)
>         at org.apache.calcite.avatica.AvaticaResultSet.execute(AvaticaResultSet.java:182)
>         at org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:64)
>         at org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:43)
>         at org.apache.calcite.avatica.AvaticaConnection$1.execute(AvaticaConnection.java:667)
>         at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:577)
>         at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675)
>         at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156)
>         ... 8 more
> {noformat}



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