Hi Michael, You can find current version in my branch here: https://github.com/tzolov/calcite/tree/geode-1.3
I still have not added geode to the calcite-test-dataset so reproduce the problem you need to do this: 1. Download geode-sample-bootstrap-0.0.1-SNAPSHOT.jar from: https://drive.google.com/file/d/0Bw0P8rbcmBaJaGlVZWVEaWE4Tmc It is a single-node, self-contained SpringBoot app that embeds apache geode populates some sample data. Run it like this: java -Xmx128M -Dgemfire.name=server1 -Dgemfire.server.port=40405 -Dgemfire.jmx-manager-port=1199 -Dgemfire.jmx-manager=true -Dgemfire.jmx-manager-start=true -Dgemfire.locators=localhost[10334] -Dgemfire.start-locator=localhost[10334] -Dgemfire.use-cluster-configuration=false -jar ./geode-sample-bootstrap-0.0.1-SNAPSHOT.jar 2. Start the sqlline and connect to Geode using the geode/src/test/resources/model-rel2.json model: sqlline> !connect jdbc:calcite:model=/Users/ctzolov/Dev/projects/apache-calcite-tzolov/geode/src/test/resources/model-rel2.json admin admin 0: sqlline> SELECT SUM("retailCost") FROM "BookMaster" GROUP BY "retailCost"; +--------+ | EXPR$0 | +--------+ | 59.99 | | 11.99 | | 34.99 | +--------+ 0: sqlline> SELECT COUNT(*) FROM "BookMaster"; java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long at org.apache.calcite.avatica.util.AbstractCursor$LongAccessor.getLong(AbstractCursor.java:550) at org.apache.calcite.avatica.AvaticaSite.get(AvaticaSite.java:306) at org.apache.calcite.avatica.AvaticaResultSet.getObject(AvaticaResultSet.java:409) at sqlline.Rows$Row.<init>(Rows.java:157) Cheers, Christian On 9 November 2017 at 16:45, Michael Mior <[email protected]> wrote: > Christian, > > Are you able to share your code for the adapter? This would be helpful in > understanding the problem. In short however, if you're pushing down > aggregations, you should just make sure that you convert the result your > adapter returns to a Long. (e.g. Long.valueOf(count.longValue())) > > -- > Michael Mior > [email protected] > > 2017-11-09 10:41 GMT-05:00 Christian Tzolov <[email protected]>: > > > (Calcite 1.15.0-SNASHOT and Avalitca 1.10.0) > > > > I'm > > workin on an adapter for in-memory NoSql > > data > > system > > . The implementations tries to push down all supported aggregation > > operations, such as AVG, MAX and COUNT. It works for most of them but > fails > > for COUNT: > > > > > > 0: jdbc:calcite:model= > > ... > > > SELECT COUNT(*) FROM "BookMaster"; > > > > java.lang.ClassCastException: java.lang.Integer cannot be cast to > > java.lang.Long > > at > > org.apache.calcite.avatica.util.AbstractCursor$LongAccessor.getLong( > > AbstractCursor.java:550) > > at org.apache.calcite.avatica.AvaticaSite.get(AvaticaSite.java:306) > > at > > org.apache.calcite.avatica.AvaticaResultSet.getObject( > > AvaticaResultSet.java:409) > > at sqlline.Rows$Row.<init>(Rows.java:157) > > > > P > > roblem IMO is that the > > COUNT result form the > > underlaying system > > is of type > > Integer while > > C > > alcite expects Long > > (e.g. BIGINT) as > > hardcoded in SqlCountAggFunction > > .java. > > > > I can't alter the SqlCountAggFunction so I wonder what is the right > place > > in Calcite to implement/configure this type conversion? > > > > This issue looks very similar ( > > https://issues.apache.org/jira/browse/CALCITE-665) but i am not sure i > > completely understand the resolution? > > > > Thanks, > > Christian > > > -- Christian Tzolov <http://www.linkedin.com/in/tzolov> | Principle Software Engineer | Pivotal <http://pivotal.io/> | [email protected] |+31610285517
