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

Fabian Hueske commented on FLINK-2668:
--------------------------------------

This behavior is actually intended (not saying that this behavior is good or 
intuitive).
By calling {{project()}} on a {{ProjectOperator}} you are extending the 
projection, i.e., if you have a {{DataSet<Tuple3<Long, String, Double>> d}} and 
call {{d2 = d.project(2,0)}} you get a {{ProjectOperator}} which returns a 
{{DataSet<Tuple2<Double, Long>>}}. If you call on that operator {{d3 = 
d2.project(0,1)}} you extend the current projection and produce a 
{{DataSet<Tuple4<Double, Long, Long, String>>}}.

Can you share the code that produces the {{InvalidTypesException}}?

> ProjectOperator method to close projection
> ------------------------------------------
>
>                 Key: FLINK-2668
>                 URL: https://issues.apache.org/jira/browse/FLINK-2668
>             Project: Flink
>          Issue Type: Improvement
>          Components: Java API
>    Affects Versions: master
>            Reporter: Greg Hogan
>            Priority: Minor
>
> I have come across an issue in my code where I called project(...) on a 
> DataSet which was already a ProjectOperator. Instead of reducing the number 
> of fields from 2 to 1 this instead increased the number of fields from 2 to 3 
> resulting in org.apache.flink.api.common.functions.InvalidTypesException: 
> Input mismatch: Tuple arity '3' expected but was '1'. when processing the 
> next operator.
> This can be resolved by adding an optional explicit call to conclude the 
> projection, perhaps ProjectOperator.closeProjection(). Can this be done 
> without creating a new no-op operator?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to