[ https://issues.apache.org/jira/browse/CALCITE-4130?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
yuqi updated CALCITE-4130: -------------------------- Description: For sql like `select id, count(id) from test group by id order by count(id)` When execute query, `ElasticsearchTable#aggregate` will throw exception like ``` Caused by: java.lang.IllegalArgumentException: Field EXPR$1 not defined for aggs ``` Reproduce: Add test as below in AggregationTest CalciteAssert.that() .with(newConnectionFactory()) .query("select cat2, count(cat2) from view group by cat2 order by count(cat2)") .returnsUnordered("cat2=g; EXPR$1=2", "cat2=h; EXPR$1=1"); result: ``` Caused by: java.lang.IllegalArgumentException: Field EXPR$1 not defined for aggs at org.apache.calcite.adapter.elasticsearch.ElasticsearchMapping.missingValueFor(ElasticsearchMapping.java:84) at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.aggregate(ElasticsearchTable.java:235) at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.find(ElasticsearchTable.java:130) at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.access$000(ElasticsearchTable.java:70) at org.apache.calcite.adapter.elasticsearch.ElasticsearchTable$ElasticsearchQueryable.find(ElasticsearchTable.java:411) at Baz.bind(Unknown Source) at org.apache.calcite.jdbc.CalcitePrepare$CalciteSignature.enumerable(CalcitePrepare.java:355) at org.apache.calcite.jdbc.CalciteConnectionImpl.enumerable(CalciteConnectionImpl.java:315) at org.apache.calcite.jdbc.CalciteMetaImpl._createIterable(CalciteMetaImpl.java:507) at org.apache.calcite.jdbc.CalciteMetaImpl.createIterable(CalciteMetaImpl.java:498) 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:567) at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675) at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156) ... 68 more ``` was: For sql like `select id, count(id) from test group by id order by count(id)` When execute query, `ElasticsearchTable#aggregate` will throw exception like ``` Caused by: java.lang.IllegalArgumentException: Field EXPR$1 not defined for aggs ``` > Aggregation function in order by clause will throw E > ---------------------------------------------------- > > Key: CALCITE-4130 > URL: https://issues.apache.org/jira/browse/CALCITE-4130 > Project: Calcite > Issue Type: Bug > Components: elasticsearch-adapter > Affects Versions: 1.25.0 > Environment: Add test as below in AggregationTest > CalciteAssert.that() > .with(newConnectionFactory()) > .query("select cat2, count(cat2) from view group by cat2 order by > count(cat2)") > .returnsUnordered("cat2=g; EXPR$1=2", > "cat2=h; EXPR$1=1"); > result: > ``` > Caused by: java.lang.IllegalArgumentException: Field EXPR$1 not defined for > aggs > at > org.apache.calcite.adapter.elasticsearch.ElasticsearchMapping.missingValueFor(ElasticsearchMapping.java:84) > at > org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.aggregate(ElasticsearchTable.java:235) > at > org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.find(ElasticsearchTable.java:130) > at > org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.access$000(ElasticsearchTable.java:70) > at > org.apache.calcite.adapter.elasticsearch.ElasticsearchTable$ElasticsearchQueryable.find(ElasticsearchTable.java:411) > at Baz.bind(Unknown Source) > at > org.apache.calcite.jdbc.CalcitePrepare$CalciteSignature.enumerable(CalcitePrepare.java:355) > at > org.apache.calcite.jdbc.CalciteConnectionImpl.enumerable(CalciteConnectionImpl.java:315) > at > org.apache.calcite.jdbc.CalciteMetaImpl._createIterable(CalciteMetaImpl.java:507) > at > org.apache.calcite.jdbc.CalciteMetaImpl.createIterable(CalciteMetaImpl.java:498) > 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:567) > at > org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675) > at > org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156) > ... 68 more > ``` > Reporter: yuqi > Priority: Major > Fix For: 1.25.0 > > > For sql like > `select id, count(id) from test group by id order by count(id)` > When execute query, `ElasticsearchTable#aggregate` will throw exception like > ``` > Caused by: java.lang.IllegalArgumentException: Field EXPR$1 not defined for > aggs > ``` > Reproduce: > Add test as below in AggregationTest > CalciteAssert.that() > .with(newConnectionFactory()) > .query("select cat2, count(cat2) from view group by cat2 order by > count(cat2)") > .returnsUnordered("cat2=g; EXPR$1=2", > "cat2=h; EXPR$1=1"); > result: > ``` > Caused by: java.lang.IllegalArgumentException: Field EXPR$1 not defined for > aggs > at > org.apache.calcite.adapter.elasticsearch.ElasticsearchMapping.missingValueFor(ElasticsearchMapping.java:84) > at > org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.aggregate(ElasticsearchTable.java:235) > at > org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.find(ElasticsearchTable.java:130) > at > org.apache.calcite.adapter.elasticsearch.ElasticsearchTable.access$000(ElasticsearchTable.java:70) > at > org.apache.calcite.adapter.elasticsearch.ElasticsearchTable$ElasticsearchQueryable.find(ElasticsearchTable.java:411) > at Baz.bind(Unknown Source) > at > org.apache.calcite.jdbc.CalcitePrepare$CalciteSignature.enumerable(CalcitePrepare.java:355) > at > org.apache.calcite.jdbc.CalciteConnectionImpl.enumerable(CalciteConnectionImpl.java:315) > at > org.apache.calcite.jdbc.CalciteMetaImpl._createIterable(CalciteMetaImpl.java:507) > at > org.apache.calcite.jdbc.CalciteMetaImpl.createIterable(CalciteMetaImpl.java:498) > 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:567) > at > org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675) > at > org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156) > ... 68 more > ``` -- This message was sent by Atlassian Jira (v8.3.4#803005)