You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by Radu Tudoran <ra...@huawei.com> on 2016/10/21 16:44:04 UTC
Type for Range
Hi,
I am trying to parse a query similar with the example on the Calcite web page
SELECT STREAM
SUM(units) OVER (ORDER BY rowtime RANGE INTERVAL '1' HOUR PRECEDING) unitsLastHour
FROM Orders;
In the original data the type of rowtime field is BIGINT (converted from java long). However, when validating the query I get an error for type mistmatch between ORDER BY and RANGE as shown below. I was curious what type should I have for rowtime for this to work. Also, if you can point me where I can override the mapping between the long and BIGINT to replace it to a mapping/transformation to whatever type is needed it will be great.
Exception in thread "main" org.apache.calcite.tools.ValidationException: org.apache.calcite.runtime.CalciteContextException: From line 1, column 77 to line 1, column 93: Data Type mismatch between ORDER BY and RANGE clause
Caused by: org.apache.calcite.sql.validate.SqlValidatorException: Data Type mismatch between ORDER BY and RANGE clause
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:405)
at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:514)
... 28 more
Re: Type for Range
Posted by Julian Hyde <jh...@apache.org>.
If your ROWTIME field is a BIGINT then the RANGE must be the same type as the difference between two BIGINTs, i.e. a BIGINT.
> On Oct 21, 2016, at 9:44 AM, Radu Tudoran <ra...@huawei.com> wrote:
>
> Hi,
>
> I am trying to parse a query similar with the example on the Calcite web page
>
> SELECT STREAM
> SUM(units) OVER (ORDER BY rowtime RANGE INTERVAL '1' HOUR PRECEDING) unitsLastHour
> FROM Orders;
>
> In the original data the type of rowtime field is BIGINT (converted from java long). However, when validating the query I get an error for type mistmatch between ORDER BY and RANGE as shown below. I was curious what type should I have for rowtime for this to work. Also, if you can point me where I can override the mapping between the long and BIGINT to replace it to a mapping/transformation to whatever type is needed it will be great.
>
> Exception in thread "main" org.apache.calcite.tools.ValidationException: org.apache.calcite.runtime.CalciteContextException: From line 1, column 77 to line 1, column 93: Data Type mismatch between ORDER BY and RANGE clause
>
> Caused by: org.apache.calcite.sql.validate.SqlValidatorException: Data Type mismatch between ORDER BY and RANGE clause
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
> at org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:405)
> at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:514)
> ... 28 more