Github user maropu commented on a diff in the pull request:
https://github.com/apache/spark/pull/21240#discussion_r186659654
--- Diff:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/TypeCoercion.scala
---
@@ -702,6 +703,20 @@ object TypeCoercion {
}
}
+ /**
+ * Coerces first argument in ReplicateRows expression and introduces a
cast to Long
+ * if necessary.
+ */
+ object ReplicateRowsCoercion extends TypeCoercionRule {
+ private val acceptedTypes = Seq(IntegerType, ShortType, ByteType)
+ override def coerceTypes(plan: LogicalPlan): LogicalPlan = plan
transformAllExpressions {
+ case s @ ReplicateRows(children) if s.children.nonEmpty &&
s.childrenResolved &&
--- End diff --
`children` is not used. How about this?
```
case s @ ReplicateRows(children) if children.nonEmpty &&
s.childrenResolved &&
acceptedTypes.contains(children.head.dataType) =>
ReplicateRows(Cast(children.head, LongType) +: children.tail)
```
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]