Github user lincoln-lil commented on a diff in the pull request: https://github.com/apache/flink/pull/5619#discussion_r189159027 --- Diff: flink-libraries/flink-table/src/main/scala/org/apache/flink/table/plan/util/ExplodeFunctionUtil.scala --- @@ -18,74 +18,244 @@ package org.apache.flink.table.plan.util +import java.util + import org.apache.flink.api.common.typeinfo.{BasicArrayTypeInfo, BasicTypeInfo, PrimitiveArrayTypeInfo, TypeInformation} -import org.apache.flink.api.java.typeutils.ObjectArrayTypeInfo +import org.apache.flink.api.java.typeutils.{MultisetTypeInfo, ObjectArrayTypeInfo} import org.apache.flink.table.functions.TableFunction class ObjectExplodeTableFunc extends TableFunction[Object] { def eval(arr: Array[Object]): Unit = { - arr.foreach(collect) + if (null != arr) { + var i = 0 + while (i < arr.length) { + collect(arr(i)) + i += 1 + } + } + } + + def eval(map: util.Map[Object, Integer]): Unit = { + if (null != map) { --- End diff -- I revert to the last version that use generics param and convert Scala foreach to plain while loop.
---