Skip to content
Snippets Groups Projects
Commit 15b58a22 authored by Michael Armbrust's avatar Michael Armbrust
Browse files

[SQL] Convert arguments to Scala UDFs

Author: Michael Armbrust <michael@databricks.com>

Closes #3077 from marmbrus/udfsWithUdts and squashes the following commits:

34b5f27 [Michael Armbrust] style
504adef [Michael Armbrust] Convert arguments to Scala UDFs
parent 28128150
No related branches found
No related tags found
No related merge requests found
......@@ -34,320 +34,366 @@ case class ScalaUdf(function: AnyRef, dataType: DataType, children: Seq[Expressi
override def toString = s"scalaUDF(${children.mkString(",")})"
// scalastyle:off
/** This method has been generated by this script
(1 to 22).map { x =>
val anys = (1 to x).map(x => "Any").reduce(_ + ", " + _)
val evals = (0 to x - 1).map(x => s"children($x).eval(input)").reduce(_ + ",\n " + _)
val evals = (0 to x - 1).map(x => s" ScalaReflection.convertToScala(children($x).eval(input), children($x).dataType)").reduce(_ + ",\n " + _)
s"""
case $x =>
function.asInstanceOf[($anys) => Any](
$evals)
$evals)
"""
}
}.foreach(println)
*/
// scalastyle:off
override def eval(input: Row): Any = {
val result = children.size match {
case 0 => function.asInstanceOf[() => Any]()
case 1 => function.asInstanceOf[(Any) => Any](children(0).eval(input))
case 1 =>
function.asInstanceOf[(Any) => Any](
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType))
case 2 =>
function.asInstanceOf[(Any, Any) => Any](
children(0).eval(input),
children(1).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType))
case 3 =>
function.asInstanceOf[(Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType))
case 4 =>
function.asInstanceOf[(Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType))
case 5 =>
function.asInstanceOf[(Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType))
case 6 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType))
case 7 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType))
case 8 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input),
children(7).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType))
case 9 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input),
children(7).eval(input),
children(8).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType))
case 10 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input),
children(7).eval(input),
children(8).eval(input),
children(9).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType))
case 11 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input),
children(7).eval(input),
children(8).eval(input),
children(9).eval(input),
children(10).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType))
case 12 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input),
children(7).eval(input),
children(8).eval(input),
children(9).eval(input),
children(10).eval(input),
children(11).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType))
case 13 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input),
children(7).eval(input),
children(8).eval(input),
children(9).eval(input),
children(10).eval(input),
children(11).eval(input),
children(12).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType))
case 14 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input),
children(7).eval(input),
children(8).eval(input),
children(9).eval(input),
children(10).eval(input),
children(11).eval(input),
children(12).eval(input),
children(13).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType))
case 15 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input),
children(7).eval(input),
children(8).eval(input),
children(9).eval(input),
children(10).eval(input),
children(11).eval(input),
children(12).eval(input),
children(13).eval(input),
children(14).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType))
case 16 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input),
children(7).eval(input),
children(8).eval(input),
children(9).eval(input),
children(10).eval(input),
children(11).eval(input),
children(12).eval(input),
children(13).eval(input),
children(14).eval(input),
children(15).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType),
ScalaReflection.convertToScala(children(15).eval(input), children(15).dataType))
case 17 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input),
children(7).eval(input),
children(8).eval(input),
children(9).eval(input),
children(10).eval(input),
children(11).eval(input),
children(12).eval(input),
children(13).eval(input),
children(14).eval(input),
children(15).eval(input),
children(16).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType),
ScalaReflection.convertToScala(children(15).eval(input), children(15).dataType),
ScalaReflection.convertToScala(children(16).eval(input), children(16).dataType))
case 18 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input),
children(7).eval(input),
children(8).eval(input),
children(9).eval(input),
children(10).eval(input),
children(11).eval(input),
children(12).eval(input),
children(13).eval(input),
children(14).eval(input),
children(15).eval(input),
children(16).eval(input),
children(17).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType),
ScalaReflection.convertToScala(children(15).eval(input), children(15).dataType),
ScalaReflection.convertToScala(children(16).eval(input), children(16).dataType),
ScalaReflection.convertToScala(children(17).eval(input), children(17).dataType))
case 19 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input),
children(7).eval(input),
children(8).eval(input),
children(9).eval(input),
children(10).eval(input),
children(11).eval(input),
children(12).eval(input),
children(13).eval(input),
children(14).eval(input),
children(15).eval(input),
children(16).eval(input),
children(17).eval(input),
children(18).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType),
ScalaReflection.convertToScala(children(15).eval(input), children(15).dataType),
ScalaReflection.convertToScala(children(16).eval(input), children(16).dataType),
ScalaReflection.convertToScala(children(17).eval(input), children(17).dataType),
ScalaReflection.convertToScala(children(18).eval(input), children(18).dataType))
case 20 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input),
children(7).eval(input),
children(8).eval(input),
children(9).eval(input),
children(10).eval(input),
children(11).eval(input),
children(12).eval(input),
children(13).eval(input),
children(14).eval(input),
children(15).eval(input),
children(16).eval(input),
children(17).eval(input),
children(18).eval(input),
children(19).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType),
ScalaReflection.convertToScala(children(15).eval(input), children(15).dataType),
ScalaReflection.convertToScala(children(16).eval(input), children(16).dataType),
ScalaReflection.convertToScala(children(17).eval(input), children(17).dataType),
ScalaReflection.convertToScala(children(18).eval(input), children(18).dataType),
ScalaReflection.convertToScala(children(19).eval(input), children(19).dataType))
case 21 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input),
children(7).eval(input),
children(8).eval(input),
children(9).eval(input),
children(10).eval(input),
children(11).eval(input),
children(12).eval(input),
children(13).eval(input),
children(14).eval(input),
children(15).eval(input),
children(16).eval(input),
children(17).eval(input),
children(18).eval(input),
children(19).eval(input),
children(20).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType),
ScalaReflection.convertToScala(children(15).eval(input), children(15).dataType),
ScalaReflection.convertToScala(children(16).eval(input), children(16).dataType),
ScalaReflection.convertToScala(children(17).eval(input), children(17).dataType),
ScalaReflection.convertToScala(children(18).eval(input), children(18).dataType),
ScalaReflection.convertToScala(children(19).eval(input), children(19).dataType),
ScalaReflection.convertToScala(children(20).eval(input), children(20).dataType))
case 22 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input),
children(1).eval(input),
children(2).eval(input),
children(3).eval(input),
children(4).eval(input),
children(5).eval(input),
children(6).eval(input),
children(7).eval(input),
children(8).eval(input),
children(9).eval(input),
children(10).eval(input),
children(11).eval(input),
children(12).eval(input),
children(13).eval(input),
children(14).eval(input),
children(15).eval(input),
children(16).eval(input),
children(17).eval(input),
children(18).eval(input),
children(19).eval(input),
children(20).eval(input),
children(21).eval(input))
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType),
ScalaReflection.convertToScala(children(15).eval(input), children(15).dataType),
ScalaReflection.convertToScala(children(16).eval(input), children(16).dataType),
ScalaReflection.convertToScala(children(17).eval(input), children(17).dataType),
ScalaReflection.convertToScala(children(18).eval(input), children(18).dataType),
ScalaReflection.convertToScala(children(19).eval(input), children(19).dataType),
ScalaReflection.convertToScala(children(20).eval(input), children(20).dataType),
ScalaReflection.convertToScala(children(21).eval(input), children(21).dataType))
}
// scalastyle:on
......
......@@ -60,13 +60,13 @@ private[sql] class MyDenseVectorUDT extends UserDefinedType[MyDenseVector] {
}
class UserDefinedTypeSuite extends QueryTest {
val points = Seq(
MyLabeledPoint(1.0, new MyDenseVector(Array(0.1, 1.0))),
MyLabeledPoint(0.0, new MyDenseVector(Array(0.2, 2.0))))
val pointsRDD: RDD[MyLabeledPoint] = sparkContext.parallelize(points)
test("register user type: MyDenseVector for MyLabeledPoint") {
val points = Seq(
MyLabeledPoint(1.0, new MyDenseVector(Array(0.1, 1.0))),
MyLabeledPoint(0.0, new MyDenseVector(Array(0.2, 2.0))))
val pointsRDD: RDD[MyLabeledPoint] = sparkContext.parallelize(points)
test("register user type: MyDenseVector for MyLabeledPoint") {
val labels: RDD[Double] = pointsRDD.select('label).map { case Row(v: Double) => v }
val labelsArrays: Array[Double] = labels.collect()
assert(labelsArrays.size === 2)
......@@ -80,4 +80,12 @@ class UserDefinedTypeSuite extends QueryTest {
assert(featuresArrays.contains(new MyDenseVector(Array(0.1, 1.0))))
assert(featuresArrays.contains(new MyDenseVector(Array(0.2, 2.0))))
}
test("UDTs and UDFs") {
registerFunction("testType", (d: MyDenseVector) => d.isInstanceOf[MyDenseVector])
pointsRDD.registerTempTable("points")
checkAnswer(
sql("SELECT testType(features) from points"),
Seq(Row(true), Row(true)))
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment