calcite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian Tzolov <ctzo...@pivotal.io>
Subject COUNT returns Integer while Calcite expects Long
Date Thu, 09 Nov 2017 15:41:13 GMT
​(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​

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message