Github user cloud-fan commented on the issue: https://github.com/apache/spark/pull/21118 all the places that use `GenerateUnsafeRowJoiner` assume the input row is unsafe row. `ShuffleExchangeExec` assumes its input is unsafe row, because its serializer is `UnsafeRowSerializer`. Note that we don't enforce this at the API level, i.e. `SparkPlan.execute` still returns `RDD[InternalRow]`. This is because we have exceptions: the object related operators can return safe row, and object related operators always appear in a group, and the last operator will output unsafe row. That said, you may not be able to see `UnsafeRow` in the generated code, but you will get `ClassCastException` if you don't follow this rule and output safe row.
--- --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org