Luke Hutchison created FLINK-6114:
-------------------------------------

             Summary: Type checking fails with generics, even when concrete 
type of field is not needed
                 Key: FLINK-6114
                 URL: https://issues.apache.org/jira/browse/FLINK-6114
             Project: Flink
          Issue Type: Bug
    Affects Versions: 1.2.0
            Reporter: Luke Hutchison


The Flink type checker does not allow generic types to be used in any field of 
a tuple when a join is being executed, even if the generic is not in a field 
that is involved in the join.

I have a type Tuple3<String, K, Float>, which contains a generic type parameter 
K. I am joining using .where(0).equalTo(0). The type of field 0 is well-defined 
as String. However, this gives me the following error:

{noformat}
Exception in thread "main" 
org.apache.flink.api.common.functions.InvalidTypesException: Type of 
TypeVariable 'K' in 'public static org.apache.flink.api.java.DataSet 
mypkg.MyClass.method(params)' could not be determined. This is most likely a 
type erasure problem. The type extraction currently supports types with generic 
variables only in cases where all variables in the return type can be deduced 
from the input type(s).
        at 
org.apache.flink.api.java.typeutils.TypeExtractor.createSubTypesInfo(TypeExtractor.java:989)
{noformat}

The code compiles fine, however -- the static type system is able to correctly 
resolve the types in the surrounding code.

Really only the fields that are affected by joins (or groupBy, aggregation 
etc.) should be checked for concrete types in this way.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to