Thank you for the answer! The discussion on FLINK-1023 is very clear to me. I agree with that throws a TraversableOnceException when the iterator is requested the second time.
@Aljoscha git history shows you removed the exception-thrown code from FLINK-1110, would you mind me create an issue and add it back? BTW, I had submitted a pr for FLINK-5498 ( https://github.com/apache/flink/pull/3379), support left/right outer joins with non-equi-join conditions via coGroup operator with a generated OuterJoinCoGroupFunction. But current implementation is not memory safe when do a many-to-one/many outer join which will copy the opposite side input into an List buffer(This is not pretty though it follows the guideline, just remember the input data within a function call). It's a work-around for now, in the long run, I think we should extend the runtime join operators to support such non-equi-join conditions. Implementation in TableAPI layer could not always ensures the efficiency. Welcome any suggestions on current solution. Best, Lincoln