[ 
https://issues.apache.org/jira/browse/BEAM-12166?focusedWorklogId=584118&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-584118
 ]

ASF GitHub Bot logged work on BEAM-12166:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 16/Apr/21 07:30
            Start Date: 16/Apr/21 07:30
    Worklog Time Spent: 10m 
      Work Description: anupd22 commented on a change in pull request #14534:
URL: https://github.com/apache/beam/pull/14534#discussion_r614622683



##########
File path: 
sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/utils/CalciteUtils.java
##########
@@ -280,7 +280,8 @@ private static RelDataType toRelDataType(
   /**
    * SQL-Java type mapping, with specified Beam rules: <br>
    * 1. redirect {@link AbstractInstant} to {@link Date} so Calcite can 
recognize it. <br>
-   * 2. For a list, the component type is needed to create a Sql array type.
+   * 2. For a list, the component type is needed to create a Sql array type. 
3. For a Map, the

Review comment:
       Hi @ibzib ,
   
   Added two unit tests.
   [1] Udaf that squares each input(1,2,3,4) and returns them in a List [1 4 9 
16]
   [2] Udaf that squares each input(1,2,3,4) and returns them in a Map 
{"squareOf-1":1,"squareOf-2":4,"squareOf-3":9,"squareOf-4":16}
   
   Please review.
   




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 584118)
    Time Spent: 40m  (was: 0.5h)

> Beam Sql - Combine Accumulator return Map fails with class cast exception
> -------------------------------------------------------------------------
>
>                 Key: BEAM-12166
>                 URL: https://issues.apache.org/jira/browse/BEAM-12166
>             Project: Beam
>          Issue Type: Bug
>          Components: dsl-sql
>            Reporter: anup
>            Assignee: anup
>            Priority: P3
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> Suppose, we have following query where *UDAF error_aggregator* returns 
> Map<String,String>
> {code:java}
> select error_name, error_aggregator(error_types) as error_types_aggregated "
>  +"from PCOLLECTION group by error_name").registerUdaf("error_aggregator", 
> new ErrorTypeAggregator(){code}
>  
> {code:java}
> class ErrorTypeAggregator extends CombineFn<String, String, 
> HashMap<String,String>> {
>  ...
> }
> {code}
>  
> It fails with following exception.
> {code:java}
> Exception in thread "main" 
> org.apache.beam.sdk.extensions.sql.impl.ParseException: Unable to parse query 
> select error_name, error_aggregator(error_types) as error_types_aggregated 
> from PCOLLECTION group by error_nameException in thread "main" 
> org.apache.beam.sdk.extensions.sql.impl.ParseException: Unable to parse query 
> select error_name, error_aggregator(error_types) as error_types_aggregated 
> from PCOLLECTION group by error_name at 
> org.apache.beam.sdk.extensions.sql.impl.CalciteQueryPlanner.convertToBeamRel(CalciteQueryPlanner.java:199)
>  at 
> org.apache.beam.sdk.extensions.sql.impl.BeamSqlEnv.parseQuery(BeamSqlEnv.java:114)
>  at 
> org.apache.beam.sdk.extensions.sql.SqlTransform.expand(SqlTransform.java:140) 
> at 
> org.apache.beam.sdk.extensions.sql.SqlTransform.expand(SqlTransform.java:86) 
> at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:547) at 
> org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:481) at 
> org.apache.beam.sdk.values.PCollection.apply(PCollection.java:357) at 
> com.my.company.UdafMapOutput.main(UdafMapOutput.java:70)Caused by: 
> org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.tools.ValidationException:
>  java.lang.ClassCastException: 
> org.apache.beam.vendor.guava.v26_0_jre.com.google.common.reflect.Types$ParameterizedTypeImpl
>  cannot be cast to java.lang.Class at 
> org.apache.beam.vendor.calcite.v1_20_0.org.apache.calcite.prepare.PlannerImpl.validate(PlannerImpl.java:217)
>  at 
> org.apache.beam.sdk.extensions.sql.impl.CalciteQueryPlanner.convertToBeamRel(CalciteQueryPlanner.java:168)
>  ... 7 more{code}



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

Reply via email to