[ 
https://issues.apache.org/jira/browse/CALCITE-4198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17192366#comment-17192366
 ] 

Julian Hyde commented on CALCITE-4198:
--------------------------------------

I agree, but I doubt that the solution is to fix type conversions among Java 
types. The solution is to make sure the types are SQL types, where we already 
have good type conversion logic.

> Query contains AVG function, materialized view contains SUM and COUNT 
> functions, and materialized recognition fails
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-4198
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4198
>             Project: Calcite
>          Issue Type: Wish
>            Reporter: xzh_dz
>            Assignee: zhishui
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> There is a semantic equivalent case, which should be able to materialize and 
> identify successfully, materialized view can express the calculation logic of 
> query,but failed. This case can be reproduced as below.
> {code:java}
> // MaterializedViewSubstitutionVisitorTest
> @Test void testAvgMvMatch() {
>   sql(
>       "select \"empid\", sum(\"salary\"), count(\"salary\") from \"emps\" 
> where \"empid\" > 10 group by \"empid\"",
>       "select \"empid\", avg(\"salary\") from \"emps\" where \"empid\" > 10 
> group by \"empid\"")
>       .ok();
> }
> {code}
> The error message:
> {code:java}
> java.lang.AssertionError: Materialized view failed to be matched by optimized 
> results:java.lang.AssertionError: Materialized view failed to be matched by 
> optimized results: at 
> org.apache.calcite.test.AbstractMaterializedViewTest.checkMaterialize(AbstractMaterializedViewTest.java:112)
>  at 
> org.apache.calcite.test.AbstractMaterializedViewTest.access$000(AbstractMaterializedViewTest.java:64)
>  at 
> org.apache.calcite.test.AbstractMaterializedViewTest$Sql.ok(AbstractMaterializedViewTest.java:227)
>  at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) 
> at 
> org.apache.calcite.util.ImmutableBeans.lambda$makeDef$3(ImmutableBeans.java:275)
>  at 
> org.apache.calcite.util.ImmutableBeans$BeanImpl.invoke(ImmutableBeans.java:446)
>  at com.sun.proxy.$Proxy12.ok(Unknown Source) at 
> org.apache.calcite.test.MaterializedViewSubstitutionVisitorTest.testAvgMvMatch(MaterializedViewSubstitutionVisitorTest.java:101)
>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.lang.reflect.Method.invoke(Method.java:498)
> {code}



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

Reply via email to