http://git-wip-us.apache.org/repos/asf/spark/blob/931da5c8/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/ScalaUdf.scala
----------------------------------------------------------------------
diff --git 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/ScalaUdf.scala
 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/ScalaUdf.scala
deleted file mode 100644
index 55df72f..0000000
--- 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/ScalaUdf.scala
+++ /dev/null
@@ -1,962 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.spark.sql.catalyst.expressions
-
-import org.apache.spark.sql.catalyst.CatalystTypeConverters
-import org.apache.spark.sql.types.DataType
-
-/**
- * User-defined function.
- * @param dataType  Return type of function.
- */
-case class ScalaUdf(function: AnyRef, dataType: DataType, children: 
Seq[Expression])
-  extends Expression {
-
-  override def nullable: Boolean = true
-
-  override def toString: String = 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 childs = (0 to x - 1).map(x => s"val child$x = 
children($x)").reduce(_ + "\n  " + _)
-      val converters = (0 to x - 1).map(x => s"lazy val converter$x = 
CatalystTypeConverters.createToScalaConverter(child$x.dataType)").reduce(_ + 
"\n  " + _)
-      val evals = (0 to x - 1).map(x => 
s"converter$x(child$x.eval(input))").reduce(_ + ",\n      " + _)
-
-      s"""case $x =>
-      val func = function.asInstanceOf[($anys) => Any]
-      $childs
-      $converters
-      (input: InternalRow) => {
-        func(
-          $evals)
-      }
-      """
-    }.foreach(println)
-
-  */
-
-  private[this] val f = children.size match {
-    case 0 =>
-      val func = function.asInstanceOf[() => Any]
-      (input: InternalRow) => {
-        func()
-      }
-
-    case 1 =>
-      val func = function.asInstanceOf[(Any) => Any]
-      val child0 = children(0)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)))
-      }
-
-    case 2 =>
-      val func = function.asInstanceOf[(Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)))
-      }
-
-    case 3 =>
-      val func = function.asInstanceOf[(Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)))
-      }
-
-    case 4 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)))
-      }
-
-    case 5 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)))
-      }
-
-    case 6 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)))
-      }
-
-    case 7 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any) => 
Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)))
-      }
-
-    case 8 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, 
Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      val child7 = children(7)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      lazy val converter7 = 
CatalystTypeConverters.createToScalaConverter(child7.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)),
-          converter7(child7.eval(input)))
-      }
-
-    case 9 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, 
Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      val child7 = children(7)
-      val child8 = children(8)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      lazy val converter7 = 
CatalystTypeConverters.createToScalaConverter(child7.dataType)
-      lazy val converter8 = 
CatalystTypeConverters.createToScalaConverter(child8.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)),
-          converter7(child7.eval(input)),
-          converter8(child8.eval(input)))
-      }
-
-    case 10 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      val child7 = children(7)
-      val child8 = children(8)
-      val child9 = children(9)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      lazy val converter7 = 
CatalystTypeConverters.createToScalaConverter(child7.dataType)
-      lazy val converter8 = 
CatalystTypeConverters.createToScalaConverter(child8.dataType)
-      lazy val converter9 = 
CatalystTypeConverters.createToScalaConverter(child9.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)),
-          converter7(child7.eval(input)),
-          converter8(child8.eval(input)),
-          converter9(child9.eval(input)))
-      }
-
-    case 11 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      val child7 = children(7)
-      val child8 = children(8)
-      val child9 = children(9)
-      val child10 = children(10)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      lazy val converter7 = 
CatalystTypeConverters.createToScalaConverter(child7.dataType)
-      lazy val converter8 = 
CatalystTypeConverters.createToScalaConverter(child8.dataType)
-      lazy val converter9 = 
CatalystTypeConverters.createToScalaConverter(child9.dataType)
-      lazy val converter10 = 
CatalystTypeConverters.createToScalaConverter(child10.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)),
-          converter7(child7.eval(input)),
-          converter8(child8.eval(input)),
-          converter9(child9.eval(input)),
-          converter10(child10.eval(input)))
-      }
-
-    case 12 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      val child7 = children(7)
-      val child8 = children(8)
-      val child9 = children(9)
-      val child10 = children(10)
-      val child11 = children(11)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      lazy val converter7 = 
CatalystTypeConverters.createToScalaConverter(child7.dataType)
-      lazy val converter8 = 
CatalystTypeConverters.createToScalaConverter(child8.dataType)
-      lazy val converter9 = 
CatalystTypeConverters.createToScalaConverter(child9.dataType)
-      lazy val converter10 = 
CatalystTypeConverters.createToScalaConverter(child10.dataType)
-      lazy val converter11 = 
CatalystTypeConverters.createToScalaConverter(child11.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)),
-          converter7(child7.eval(input)),
-          converter8(child8.eval(input)),
-          converter9(child9.eval(input)),
-          converter10(child10.eval(input)),
-          converter11(child11.eval(input)))
-      }
-
-    case 13 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any, Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      val child7 = children(7)
-      val child8 = children(8)
-      val child9 = children(9)
-      val child10 = children(10)
-      val child11 = children(11)
-      val child12 = children(12)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      lazy val converter7 = 
CatalystTypeConverters.createToScalaConverter(child7.dataType)
-      lazy val converter8 = 
CatalystTypeConverters.createToScalaConverter(child8.dataType)
-      lazy val converter9 = 
CatalystTypeConverters.createToScalaConverter(child9.dataType)
-      lazy val converter10 = 
CatalystTypeConverters.createToScalaConverter(child10.dataType)
-      lazy val converter11 = 
CatalystTypeConverters.createToScalaConverter(child11.dataType)
-      lazy val converter12 = 
CatalystTypeConverters.createToScalaConverter(child12.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)),
-          converter7(child7.eval(input)),
-          converter8(child8.eval(input)),
-          converter9(child9.eval(input)),
-          converter10(child10.eval(input)),
-          converter11(child11.eval(input)),
-          converter12(child12.eval(input)))
-      }
-
-    case 14 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      val child7 = children(7)
-      val child8 = children(8)
-      val child9 = children(9)
-      val child10 = children(10)
-      val child11 = children(11)
-      val child12 = children(12)
-      val child13 = children(13)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      lazy val converter7 = 
CatalystTypeConverters.createToScalaConverter(child7.dataType)
-      lazy val converter8 = 
CatalystTypeConverters.createToScalaConverter(child8.dataType)
-      lazy val converter9 = 
CatalystTypeConverters.createToScalaConverter(child9.dataType)
-      lazy val converter10 = 
CatalystTypeConverters.createToScalaConverter(child10.dataType)
-      lazy val converter11 = 
CatalystTypeConverters.createToScalaConverter(child11.dataType)
-      lazy val converter12 = 
CatalystTypeConverters.createToScalaConverter(child12.dataType)
-      lazy val converter13 = 
CatalystTypeConverters.createToScalaConverter(child13.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)),
-          converter7(child7.eval(input)),
-          converter8(child8.eval(input)),
-          converter9(child9.eval(input)),
-          converter10(child10.eval(input)),
-          converter11(child11.eval(input)),
-          converter12(child12.eval(input)),
-          converter13(child13.eval(input)))
-      }
-
-    case 15 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      val child7 = children(7)
-      val child8 = children(8)
-      val child9 = children(9)
-      val child10 = children(10)
-      val child11 = children(11)
-      val child12 = children(12)
-      val child13 = children(13)
-      val child14 = children(14)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      lazy val converter7 = 
CatalystTypeConverters.createToScalaConverter(child7.dataType)
-      lazy val converter8 = 
CatalystTypeConverters.createToScalaConverter(child8.dataType)
-      lazy val converter9 = 
CatalystTypeConverters.createToScalaConverter(child9.dataType)
-      lazy val converter10 = 
CatalystTypeConverters.createToScalaConverter(child10.dataType)
-      lazy val converter11 = 
CatalystTypeConverters.createToScalaConverter(child11.dataType)
-      lazy val converter12 = 
CatalystTypeConverters.createToScalaConverter(child12.dataType)
-      lazy val converter13 = 
CatalystTypeConverters.createToScalaConverter(child13.dataType)
-      lazy val converter14 = 
CatalystTypeConverters.createToScalaConverter(child14.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)),
-          converter7(child7.eval(input)),
-          converter8(child8.eval(input)),
-          converter9(child9.eval(input)),
-          converter10(child10.eval(input)),
-          converter11(child11.eval(input)),
-          converter12(child12.eval(input)),
-          converter13(child13.eval(input)),
-          converter14(child14.eval(input)))
-      }
-
-    case 16 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      val child7 = children(7)
-      val child8 = children(8)
-      val child9 = children(9)
-      val child10 = children(10)
-      val child11 = children(11)
-      val child12 = children(12)
-      val child13 = children(13)
-      val child14 = children(14)
-      val child15 = children(15)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      lazy val converter7 = 
CatalystTypeConverters.createToScalaConverter(child7.dataType)
-      lazy val converter8 = 
CatalystTypeConverters.createToScalaConverter(child8.dataType)
-      lazy val converter9 = 
CatalystTypeConverters.createToScalaConverter(child9.dataType)
-      lazy val converter10 = 
CatalystTypeConverters.createToScalaConverter(child10.dataType)
-      lazy val converter11 = 
CatalystTypeConverters.createToScalaConverter(child11.dataType)
-      lazy val converter12 = 
CatalystTypeConverters.createToScalaConverter(child12.dataType)
-      lazy val converter13 = 
CatalystTypeConverters.createToScalaConverter(child13.dataType)
-      lazy val converter14 = 
CatalystTypeConverters.createToScalaConverter(child14.dataType)
-      lazy val converter15 = 
CatalystTypeConverters.createToScalaConverter(child15.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)),
-          converter7(child7.eval(input)),
-          converter8(child8.eval(input)),
-          converter9(child9.eval(input)),
-          converter10(child10.eval(input)),
-          converter11(child11.eval(input)),
-          converter12(child12.eval(input)),
-          converter13(child13.eval(input)),
-          converter14(child14.eval(input)),
-          converter15(child15.eval(input)))
-      }
-
-    case 17 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      val child7 = children(7)
-      val child8 = children(8)
-      val child9 = children(9)
-      val child10 = children(10)
-      val child11 = children(11)
-      val child12 = children(12)
-      val child13 = children(13)
-      val child14 = children(14)
-      val child15 = children(15)
-      val child16 = children(16)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      lazy val converter7 = 
CatalystTypeConverters.createToScalaConverter(child7.dataType)
-      lazy val converter8 = 
CatalystTypeConverters.createToScalaConverter(child8.dataType)
-      lazy val converter9 = 
CatalystTypeConverters.createToScalaConverter(child9.dataType)
-      lazy val converter10 = 
CatalystTypeConverters.createToScalaConverter(child10.dataType)
-      lazy val converter11 = 
CatalystTypeConverters.createToScalaConverter(child11.dataType)
-      lazy val converter12 = 
CatalystTypeConverters.createToScalaConverter(child12.dataType)
-      lazy val converter13 = 
CatalystTypeConverters.createToScalaConverter(child13.dataType)
-      lazy val converter14 = 
CatalystTypeConverters.createToScalaConverter(child14.dataType)
-      lazy val converter15 = 
CatalystTypeConverters.createToScalaConverter(child15.dataType)
-      lazy val converter16 = 
CatalystTypeConverters.createToScalaConverter(child16.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)),
-          converter7(child7.eval(input)),
-          converter8(child8.eval(input)),
-          converter9(child9.eval(input)),
-          converter10(child10.eval(input)),
-          converter11(child11.eval(input)),
-          converter12(child12.eval(input)),
-          converter13(child13.eval(input)),
-          converter14(child14.eval(input)),
-          converter15(child15.eval(input)),
-          converter16(child16.eval(input)))
-      }
-
-    case 18 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      val child7 = children(7)
-      val child8 = children(8)
-      val child9 = children(9)
-      val child10 = children(10)
-      val child11 = children(11)
-      val child12 = children(12)
-      val child13 = children(13)
-      val child14 = children(14)
-      val child15 = children(15)
-      val child16 = children(16)
-      val child17 = children(17)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      lazy val converter7 = 
CatalystTypeConverters.createToScalaConverter(child7.dataType)
-      lazy val converter8 = 
CatalystTypeConverters.createToScalaConverter(child8.dataType)
-      lazy val converter9 = 
CatalystTypeConverters.createToScalaConverter(child9.dataType)
-      lazy val converter10 = 
CatalystTypeConverters.createToScalaConverter(child10.dataType)
-      lazy val converter11 = 
CatalystTypeConverters.createToScalaConverter(child11.dataType)
-      lazy val converter12 = 
CatalystTypeConverters.createToScalaConverter(child12.dataType)
-      lazy val converter13 = 
CatalystTypeConverters.createToScalaConverter(child13.dataType)
-      lazy val converter14 = 
CatalystTypeConverters.createToScalaConverter(child14.dataType)
-      lazy val converter15 = 
CatalystTypeConverters.createToScalaConverter(child15.dataType)
-      lazy val converter16 = 
CatalystTypeConverters.createToScalaConverter(child16.dataType)
-      lazy val converter17 = 
CatalystTypeConverters.createToScalaConverter(child17.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)),
-          converter7(child7.eval(input)),
-          converter8(child8.eval(input)),
-          converter9(child9.eval(input)),
-          converter10(child10.eval(input)),
-          converter11(child11.eval(input)),
-          converter12(child12.eval(input)),
-          converter13(child13.eval(input)),
-          converter14(child14.eval(input)),
-          converter15(child15.eval(input)),
-          converter16(child16.eval(input)),
-          converter17(child17.eval(input)))
-      }
-
-    case 19 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      val child7 = children(7)
-      val child8 = children(8)
-      val child9 = children(9)
-      val child10 = children(10)
-      val child11 = children(11)
-      val child12 = children(12)
-      val child13 = children(13)
-      val child14 = children(14)
-      val child15 = children(15)
-      val child16 = children(16)
-      val child17 = children(17)
-      val child18 = children(18)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      lazy val converter7 = 
CatalystTypeConverters.createToScalaConverter(child7.dataType)
-      lazy val converter8 = 
CatalystTypeConverters.createToScalaConverter(child8.dataType)
-      lazy val converter9 = 
CatalystTypeConverters.createToScalaConverter(child9.dataType)
-      lazy val converter10 = 
CatalystTypeConverters.createToScalaConverter(child10.dataType)
-      lazy val converter11 = 
CatalystTypeConverters.createToScalaConverter(child11.dataType)
-      lazy val converter12 = 
CatalystTypeConverters.createToScalaConverter(child12.dataType)
-      lazy val converter13 = 
CatalystTypeConverters.createToScalaConverter(child13.dataType)
-      lazy val converter14 = 
CatalystTypeConverters.createToScalaConverter(child14.dataType)
-      lazy val converter15 = 
CatalystTypeConverters.createToScalaConverter(child15.dataType)
-      lazy val converter16 = 
CatalystTypeConverters.createToScalaConverter(child16.dataType)
-      lazy val converter17 = 
CatalystTypeConverters.createToScalaConverter(child17.dataType)
-      lazy val converter18 = 
CatalystTypeConverters.createToScalaConverter(child18.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)),
-          converter7(child7.eval(input)),
-          converter8(child8.eval(input)),
-          converter9(child9.eval(input)),
-          converter10(child10.eval(input)),
-          converter11(child11.eval(input)),
-          converter12(child12.eval(input)),
-          converter13(child13.eval(input)),
-          converter14(child14.eval(input)),
-          converter15(child15.eval(input)),
-          converter16(child16.eval(input)),
-          converter17(child17.eval(input)),
-          converter18(child18.eval(input)))
-      }
-
-    case 20 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      val child7 = children(7)
-      val child8 = children(8)
-      val child9 = children(9)
-      val child10 = children(10)
-      val child11 = children(11)
-      val child12 = children(12)
-      val child13 = children(13)
-      val child14 = children(14)
-      val child15 = children(15)
-      val child16 = children(16)
-      val child17 = children(17)
-      val child18 = children(18)
-      val child19 = children(19)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      lazy val converter7 = 
CatalystTypeConverters.createToScalaConverter(child7.dataType)
-      lazy val converter8 = 
CatalystTypeConverters.createToScalaConverter(child8.dataType)
-      lazy val converter9 = 
CatalystTypeConverters.createToScalaConverter(child9.dataType)
-      lazy val converter10 = 
CatalystTypeConverters.createToScalaConverter(child10.dataType)
-      lazy val converter11 = 
CatalystTypeConverters.createToScalaConverter(child11.dataType)
-      lazy val converter12 = 
CatalystTypeConverters.createToScalaConverter(child12.dataType)
-      lazy val converter13 = 
CatalystTypeConverters.createToScalaConverter(child13.dataType)
-      lazy val converter14 = 
CatalystTypeConverters.createToScalaConverter(child14.dataType)
-      lazy val converter15 = 
CatalystTypeConverters.createToScalaConverter(child15.dataType)
-      lazy val converter16 = 
CatalystTypeConverters.createToScalaConverter(child16.dataType)
-      lazy val converter17 = 
CatalystTypeConverters.createToScalaConverter(child17.dataType)
-      lazy val converter18 = 
CatalystTypeConverters.createToScalaConverter(child18.dataType)
-      lazy val converter19 = 
CatalystTypeConverters.createToScalaConverter(child19.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)),
-          converter7(child7.eval(input)),
-          converter8(child8.eval(input)),
-          converter9(child9.eval(input)),
-          converter10(child10.eval(input)),
-          converter11(child11.eval(input)),
-          converter12(child12.eval(input)),
-          converter13(child13.eval(input)),
-          converter14(child14.eval(input)),
-          converter15(child15.eval(input)),
-          converter16(child16.eval(input)),
-          converter17(child17.eval(input)),
-          converter18(child18.eval(input)),
-          converter19(child19.eval(input)))
-      }
-
-    case 21 =>
-      val func = function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      val child7 = children(7)
-      val child8 = children(8)
-      val child9 = children(9)
-      val child10 = children(10)
-      val child11 = children(11)
-      val child12 = children(12)
-      val child13 = children(13)
-      val child14 = children(14)
-      val child15 = children(15)
-      val child16 = children(16)
-      val child17 = children(17)
-      val child18 = children(18)
-      val child19 = children(19)
-      val child20 = children(20)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      lazy val converter7 = 
CatalystTypeConverters.createToScalaConverter(child7.dataType)
-      lazy val converter8 = 
CatalystTypeConverters.createToScalaConverter(child8.dataType)
-      lazy val converter9 = 
CatalystTypeConverters.createToScalaConverter(child9.dataType)
-      lazy val converter10 = 
CatalystTypeConverters.createToScalaConverter(child10.dataType)
-      lazy val converter11 = 
CatalystTypeConverters.createToScalaConverter(child11.dataType)
-      lazy val converter12 = 
CatalystTypeConverters.createToScalaConverter(child12.dataType)
-      lazy val converter13 = 
CatalystTypeConverters.createToScalaConverter(child13.dataType)
-      lazy val converter14 = 
CatalystTypeConverters.createToScalaConverter(child14.dataType)
-      lazy val converter15 = 
CatalystTypeConverters.createToScalaConverter(child15.dataType)
-      lazy val converter16 = 
CatalystTypeConverters.createToScalaConverter(child16.dataType)
-      lazy val converter17 = 
CatalystTypeConverters.createToScalaConverter(child17.dataType)
-      lazy val converter18 = 
CatalystTypeConverters.createToScalaConverter(child18.dataType)
-      lazy val converter19 = 
CatalystTypeConverters.createToScalaConverter(child19.dataType)
-      lazy val converter20 = 
CatalystTypeConverters.createToScalaConverter(child20.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)),
-          converter7(child7.eval(input)),
-          converter8(child8.eval(input)),
-          converter9(child9.eval(input)),
-          converter10(child10.eval(input)),
-          converter11(child11.eval(input)),
-          converter12(child12.eval(input)),
-          converter13(child13.eval(input)),
-          converter14(child14.eval(input)),
-          converter15(child15.eval(input)),
-          converter16(child16.eval(input)),
-          converter17(child17.eval(input)),
-          converter18(child18.eval(input)),
-          converter19(child19.eval(input)),
-          converter20(child20.eval(input)))
-      }
-
-    case 22 =>
-      val func = 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]
-      val child0 = children(0)
-      val child1 = children(1)
-      val child2 = children(2)
-      val child3 = children(3)
-      val child4 = children(4)
-      val child5 = children(5)
-      val child6 = children(6)
-      val child7 = children(7)
-      val child8 = children(8)
-      val child9 = children(9)
-      val child10 = children(10)
-      val child11 = children(11)
-      val child12 = children(12)
-      val child13 = children(13)
-      val child14 = children(14)
-      val child15 = children(15)
-      val child16 = children(16)
-      val child17 = children(17)
-      val child18 = children(18)
-      val child19 = children(19)
-      val child20 = children(20)
-      val child21 = children(21)
-      lazy val converter0 = 
CatalystTypeConverters.createToScalaConverter(child0.dataType)
-      lazy val converter1 = 
CatalystTypeConverters.createToScalaConverter(child1.dataType)
-      lazy val converter2 = 
CatalystTypeConverters.createToScalaConverter(child2.dataType)
-      lazy val converter3 = 
CatalystTypeConverters.createToScalaConverter(child3.dataType)
-      lazy val converter4 = 
CatalystTypeConverters.createToScalaConverter(child4.dataType)
-      lazy val converter5 = 
CatalystTypeConverters.createToScalaConverter(child5.dataType)
-      lazy val converter6 = 
CatalystTypeConverters.createToScalaConverter(child6.dataType)
-      lazy val converter7 = 
CatalystTypeConverters.createToScalaConverter(child7.dataType)
-      lazy val converter8 = 
CatalystTypeConverters.createToScalaConverter(child8.dataType)
-      lazy val converter9 = 
CatalystTypeConverters.createToScalaConverter(child9.dataType)
-      lazy val converter10 = 
CatalystTypeConverters.createToScalaConverter(child10.dataType)
-      lazy val converter11 = 
CatalystTypeConverters.createToScalaConverter(child11.dataType)
-      lazy val converter12 = 
CatalystTypeConverters.createToScalaConverter(child12.dataType)
-      lazy val converter13 = 
CatalystTypeConverters.createToScalaConverter(child13.dataType)
-      lazy val converter14 = 
CatalystTypeConverters.createToScalaConverter(child14.dataType)
-      lazy val converter15 = 
CatalystTypeConverters.createToScalaConverter(child15.dataType)
-      lazy val converter16 = 
CatalystTypeConverters.createToScalaConverter(child16.dataType)
-      lazy val converter17 = 
CatalystTypeConverters.createToScalaConverter(child17.dataType)
-      lazy val converter18 = 
CatalystTypeConverters.createToScalaConverter(child18.dataType)
-      lazy val converter19 = 
CatalystTypeConverters.createToScalaConverter(child19.dataType)
-      lazy val converter20 = 
CatalystTypeConverters.createToScalaConverter(child20.dataType)
-      lazy val converter21 = 
CatalystTypeConverters.createToScalaConverter(child21.dataType)
-      (input: InternalRow) => {
-        func(
-          converter0(child0.eval(input)),
-          converter1(child1.eval(input)),
-          converter2(child2.eval(input)),
-          converter3(child3.eval(input)),
-          converter4(child4.eval(input)),
-          converter5(child5.eval(input)),
-          converter6(child6.eval(input)),
-          converter7(child7.eval(input)),
-          converter8(child8.eval(input)),
-          converter9(child9.eval(input)),
-          converter10(child10.eval(input)),
-          converter11(child11.eval(input)),
-          converter12(child12.eval(input)),
-          converter13(child13.eval(input)),
-          converter14(child14.eval(input)),
-          converter15(child15.eval(input)),
-          converter16(child16.eval(input)),
-          converter17(child17.eval(input)),
-          converter18(child18.eval(input)),
-          converter19(child19.eval(input)),
-          converter20(child20.eval(input)),
-          converter21(child21.eval(input)))
-      }
-  }
-
-  // scalastyle:on
-  private[this] val converter = 
CatalystTypeConverters.createToCatalystConverter(dataType)
-  override def eval(input: InternalRow): Any = converter(f(input))
-
-  // TODO(davies): make ScalaUdf work with codegen
-  override def isThreadSafe: Boolean = false
-}

http://git-wip-us.apache.org/repos/asf/spark/blob/931da5c8/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala
----------------------------------------------------------------------
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala 
b/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala
index 8ed44ee..fc14a77 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala
@@ -146,7 +146,7 @@ class SQLContext(@transient val sparkContext: SparkContext)
   protected[sql] lazy val analyzer: Analyzer =
     new Analyzer(catalog, functionRegistry, conf) {
       override val extendedResolutionRules =
-        ExtractPythonUdfs ::
+        ExtractPythonUDFs ::
         sources.PreInsertCastAndRename ::
         Nil
 
@@ -257,7 +257,7 @@ class SQLContext(@transient val sparkContext: SparkContext)
    *
    * The following example registers a Scala closure as UDF:
    * {{{
-   *   sqlContext.udf.register("myUdf", (arg1: Int, arg2: String) => arg2 + 
arg1)
+   *   sqlContext.udf.register("myUDF", (arg1: Int, arg2: String) => arg2 + 
arg1)
    * }}}
    *
    * The following example registers a UDF in Java:

http://git-wip-us.apache.org/repos/asf/spark/blob/931da5c8/sql/core/src/main/scala/org/apache/spark/sql/UDFRegistration.scala
----------------------------------------------------------------------
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/UDFRegistration.scala 
b/sql/core/src/main/scala/org/apache/spark/sql/UDFRegistration.scala
index 3cc5c24..03dc37a 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/UDFRegistration.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/UDFRegistration.scala
@@ -26,7 +26,7 @@ import org.apache.spark.api.python.PythonBroadcast
 import org.apache.spark.broadcast.Broadcast
 import org.apache.spark.sql.api.java._
 import org.apache.spark.sql.catalyst.ScalaReflection
-import org.apache.spark.sql.catalyst.expressions.{Expression, ScalaUdf}
+import org.apache.spark.sql.catalyst.expressions.{Expression, ScalaUDF}
 import org.apache.spark.sql.execution.PythonUDF
 import org.apache.spark.sql.types.DataType
 
@@ -95,7 +95,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
          */
         def register[$typeTags](name: String, func: Function$x[$types]): 
UserDefinedFunction = {
           val dataType = ScalaReflection.schemaFor[RT].dataType
-          def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+          def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
           functionRegistry.registerFunction(name, builder)
           UserDefinedFunction(func, dataType)
         }""")
@@ -114,7 +114,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
          |def register(name: String, f: UDF$i[$extTypeArgs, _], returnType: 
DataType) = {
          |  functionRegistry.registerFunction(
          |    name,
-         |    (e: Seq[Expression]) => ScalaUdf(f$anyCast.call($anyParams), 
returnType, e))
+         |    (e: Seq[Expression]) => ScalaUDF(f$anyCast.call($anyParams), 
returnType, e))
          |}""".stripMargin)
     }
     */
@@ -126,7 +126,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag](name: String, func: Function0[RT]): 
UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -138,7 +138,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag](name: String, func: Function1[A1, 
RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -150,7 +150,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag](name: String, func: 
Function2[A1, A2, RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -162,7 +162,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag](name: 
String, func: Function3[A1, A2, A3, RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -174,7 +174,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag](name: String, func: Function4[A1, A2, A3, A4, RT]): 
UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -186,7 +186,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag](name: String, func: Function5[A1, A2, A3, A4, A5, RT]): 
UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -198,7 +198,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag](name: String, func: Function6[A1, A2, A3, 
A4, A5, A6, RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -210,7 +210,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag](name: String, func: 
Function7[A1, A2, A3, A4, A5, A6, A7, RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -222,7 +222,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag, A8: TypeTag](name: String, 
func: Function8[A1, A2, A3, A4, A5, A6, A7, A8, RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -234,7 +234,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag, A8: TypeTag, A9: TypeTag](name: 
String, func: Function9[A1, A2, A3, A4, A5, A6, A7, A8, A9, RT]): 
UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -246,7 +246,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag, A8: TypeTag, A9: TypeTag, A10: 
TypeTag](name: String, func: Function10[A1, A2, A3, A4, A5, A6, A7, A8, A9, 
A10, RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -258,7 +258,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag, A8: TypeTag, A9: TypeTag, A10: 
TypeTag, A11: TypeTag](name: String, func: Function11[A1, A2, A3, A4, A5, A6, 
A7, A8, A9, A10, A11, RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -270,7 +270,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag, A8: TypeTag, A9: TypeTag, A10: 
TypeTag, A11: TypeTag, A12: TypeTag](name: String, func: Function12[A1, A2, A3, 
A4, A5, A6, A7, A8, A9, A10, A11, A12, RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -282,7 +282,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag, A8: TypeTag, A9: TypeTag, A10: 
TypeTag, A11: TypeTag, A12: TypeTag, A13: TypeTag](name: String, func: 
Function13[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, RT]): 
UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -294,7 +294,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag, A8: TypeTag, A9: TypeTag, A10: 
TypeTag, A11: TypeTag, A12: TypeTag, A13: TypeTag, A14: TypeTag](name: String, 
func: Function14[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, 
RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -306,7 +306,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag, A8: TypeTag, A9: TypeTag, A10: 
TypeTag, A11: TypeTag, A12: TypeTag, A13: TypeTag, A14: TypeTag, A15: 
TypeTag](name: String, func: Function15[A1, A2, A3, A4, A5, A6, A7, A8, A9, 
A10, A11, A12, A13, A14, A15, RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -318,7 +318,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag, A8: TypeTag, A9: TypeTag, A10: 
TypeTag, A11: TypeTag, A12: TypeTag, A13: TypeTag, A14: TypeTag, A15: TypeTag, 
A16: TypeTag](name: String, func: Function16[A1, A2, A3, A4, A5, A6, A7, A8, 
A9, A10, A11, A12, A13, A14, A15, A16, RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -330,7 +330,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag, A8: TypeTag, A9: TypeTag, A10: 
TypeTag, A11: TypeTag, A12: TypeTag, A13: TypeTag, A14: TypeTag, A15: TypeTag, 
A16: TypeTag, A17: TypeTag](name: String, func: Function17[A1, A2, A3, A4, A5, 
A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, RT]): 
UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -342,7 +342,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag, A8: TypeTag, A9: TypeTag, A10: 
TypeTag, A11: TypeTag, A12: TypeTag, A13: TypeTag, A14: TypeTag, A15: TypeTag, 
A16: TypeTag, A17: TypeTag, A18: TypeTag](name: String, func: Function18[A1, 
A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, 
RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -354,7 +354,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag, A8: TypeTag, A9: TypeTag, A10: 
TypeTag, A11: TypeTag, A12: TypeTag, A13: TypeTag, A14: TypeTag, A15: TypeTag, 
A16: TypeTag, A17: TypeTag, A18: TypeTag, A19: TypeTag](name: String, func: 
Function19[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, 
A16, A17, A18, A19, RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -366,7 +366,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag, A8: TypeTag, A9: TypeTag, A10: 
TypeTag, A11: TypeTag, A12: TypeTag, A13: TypeTag, A14: TypeTag, A15: TypeTag, 
A16: TypeTag, A17: TypeTag, A18: TypeTag, A19: TypeTag, A20: TypeTag](name: 
String, func: Function20[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, 
A13, A14, A15, A16, A17, A18, A19, A20, RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -378,7 +378,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag, A8: TypeTag, A9: TypeTag, A10: 
TypeTag, A11: TypeTag, A12: TypeTag, A13: TypeTag, A14: TypeTag, A15: TypeTag, 
A16: TypeTag, A17: TypeTag, A18: TypeTag, A19: TypeTag, A20: TypeTag, A21: 
TypeTag](name: String, func: Function21[A1, A2, A3, A4, A5, A6, A7, A8, A9, 
A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, RT]): 
UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -390,7 +390,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
    */
   def register[RT: TypeTag, A1: TypeTag, A2: TypeTag, A3: TypeTag, A4: 
TypeTag, A5: TypeTag, A6: TypeTag, A7: TypeTag, A8: TypeTag, A9: TypeTag, A10: 
TypeTag, A11: TypeTag, A12: TypeTag, A13: TypeTag, A14: TypeTag, A15: TypeTag, 
A16: TypeTag, A17: TypeTag, A18: TypeTag, A19: TypeTag, A20: TypeTag, A21: 
TypeTag, A22: TypeTag](name: String, func: Function22[A1, A2, A3, A4, A5, A6, 
A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, 
RT]): UserDefinedFunction = {
     val dataType = ScalaReflection.schemaFor[RT].dataType
-    def builder(e: Seq[Expression]) = ScalaUdf(func, dataType, e)
+    def builder(e: Seq[Expression]) = ScalaUDF(func, dataType, e)
     functionRegistry.registerFunction(name, builder)
     UserDefinedFunction(func, dataType)
   }
@@ -405,7 +405,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF1[_, _], returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF1[Any, Any]].call(_: 
Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF1[Any, Any]].call(_: 
Any), returnType, e))
   }
 
   /**
@@ -415,7 +415,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF2[_, _, _], returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF2[Any, Any, 
Any]].call(_: Any, _: Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF2[Any, Any, 
Any]].call(_: Any, _: Any), returnType, e))
   }
 
   /**
@@ -425,7 +425,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF3[_, _, _, _], returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF3[Any, Any, Any, 
Any]].call(_: Any, _: Any, _: Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF3[Any, Any, Any, 
Any]].call(_: Any, _: Any, _: Any), returnType, e))
   }
 
   /**
@@ -435,7 +435,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF4[_, _, _, _, _], returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF4[Any, Any, Any, Any, 
Any]].call(_: Any, _: Any, _: Any, _: Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF4[Any, Any, Any, Any, 
Any]].call(_: Any, _: Any, _: Any, _: Any), returnType, e))
   }
 
   /**
@@ -445,7 +445,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF5[_, _, _, _, _, _], returnType: DataType) 
= {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF5[Any, Any, Any, Any, 
Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF5[Any, Any, Any, Any, 
Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any), returnType, e))
   }
 
   /**
@@ -455,7 +455,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF6[_, _, _, _, _, _, _], returnType: 
DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF6[Any, Any, Any, Any, 
Any, Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any), 
returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF6[Any, Any, Any, Any, 
Any, Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any), 
returnType, e))
   }
 
   /**
@@ -465,7 +465,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF7[_, _, _, _, _, _, _, _], returnType: 
DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF7[Any, Any, Any, Any, 
Any, Any, Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF7[Any, Any, Any, Any, 
Any, Any, Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any), returnType, e))
   }
 
   /**
@@ -475,7 +475,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF8[_, _, _, _, _, _, _, _, _], returnType: 
DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF8[Any, Any, Any, Any, 
Any, Any, Any, Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, 
_: Any, _: Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF8[Any, Any, Any, Any, 
Any, Any, Any, Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, 
_: Any, _: Any), returnType, e))
   }
 
   /**
@@ -485,7 +485,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF9[_, _, _, _, _, _, _, _, _, _], 
returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF9[Any, Any, Any, Any, 
Any, Any, Any, Any, Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF9[Any, Any, Any, Any, 
Any, Any, Any, Any, Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any), returnType, e))
   }
 
   /**
@@ -495,7 +495,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF10[_, _, _, _, _, _, _, _, _, _, _], 
returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF10[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any]].call(_: Any, _: Any, _: Any, _: Any, 
_: Any, _: Any, _: Any, _: Any, _: Any, _: Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF10[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any]].call(_: Any, _: Any, _: Any, _: Any, 
_: Any, _: Any, _: Any, _: Any, _: Any, _: Any), returnType, e))
   }
 
   /**
@@ -505,7 +505,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF11[_, _, _, _, _, _, _, _, _, _, _, _], 
returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF11[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any]].call(_: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF11[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any]].call(_: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any), returnType, e))
   }
 
   /**
@@ -515,7 +515,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF12[_, _, _, _, _, _, _, _, _, _, _, _, _], 
returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF12[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any]].call(_: Any, _: Any, _: Any, 
_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any), 
returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF12[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any]].call(_: Any, _: Any, _: Any, 
_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any), 
returnType, e))
   }
 
   /**
@@ -525,7 +525,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF13[_, _, _, _, _, _, _, _, _, _, _, _, _, 
_], returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF13[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any]].call(_: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF13[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any]].call(_: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any), returnType, e))
   }
 
   /**
@@ -535,7 +535,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF14[_, _, _, _, _, _, _, _, _, _, _, _, _, 
_, _], returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF14[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any]].call(_: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF14[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any]].call(_: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any), returnType, e))
   }
 
   /**
@@ -545,7 +545,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF15[_, _, _, _, _, _, _, _, _, _, _, _, _, 
_, _, _], returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF15[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any]].call(_: Any, 
_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, 
_: Any, _: Any, _: Any, _: Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF15[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any]].call(_: Any, 
_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, 
_: Any, _: Any, _: Any, _: Any), returnType, e))
   }
 
   /**
@@ -555,7 +555,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF16[_, _, _, _, _, _, _, _, _, _, _, _, _, 
_, _, _, _], returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF16[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any]].call(_: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF16[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any]].call(_: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any), returnType, e))
   }
 
   /**
@@ -565,7 +565,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF17[_, _, _, _, _, _, _, _, _, _, _, _, _, 
_, _, _, _, _], returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF17[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, 
Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any), 
returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF17[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, 
Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any), 
returnType, e))
   }
 
   /**
@@ -575,7 +575,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF18[_, _, _, _, _, _, _, _, _, _, _, _, _, 
_, _, _, _, _, _], returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF18[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, 
Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any), 
returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF18[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, 
Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any), 
returnType, e))
   }
 
   /**
@@ -585,7 +585,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF19[_, _, _, _, _, _, _, _, _, _, _, _, _, 
_, _, _, _, _, _, _], returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF19[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, 
Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF19[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, 
Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any), returnType, e))
   }
 
   /**
@@ -595,7 +595,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF20[_, _, _, _, _, _, _, _, _, _, _, _, _, 
_, _, _, _, _, _, _, _], returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF20[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, 
Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, 
_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, 
_: Any, _: Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF20[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, 
Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, 
_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, 
_: Any, _: Any), returnType, e))
   }
 
   /**
@@ -605,7 +605,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF21[_, _, _, _, _, _, _, _, _, _, _, _, _, 
_, _, _, _, _, _, _, _, _], returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF21[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF21[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any), returnType, e))
   }
 
   /**
@@ -615,7 +615,7 @@ class UDFRegistration private[sql] (sqlContext: SQLContext) 
extends Logging {
   def register(name: String, f: UDF22[_, _, _, _, _, _, _, _, _, _, _, _, _, 
_, _, _, _, _, _, _, _, _, _], returnType: DataType) = {
     functionRegistry.registerFunction(
       name,
-      (e: Seq[Expression]) => ScalaUdf(f.asInstanceOf[UDF22[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any), returnType, e))
+      (e: Seq[Expression]) => ScalaUDF(f.asInstanceOf[UDF22[Any, Any, Any, 
Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, 
Any, Any, Any, Any]].call(_: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: Any, _: 
Any, _: Any, _: Any, _: Any, _: Any, _: Any), returnType, e))
   }
 
   // scalastyle:on

http://git-wip-us.apache.org/repos/asf/spark/blob/931da5c8/sql/core/src/main/scala/org/apache/spark/sql/UserDefinedFunction.scala
----------------------------------------------------------------------
diff --git 
a/sql/core/src/main/scala/org/apache/spark/sql/UserDefinedFunction.scala 
b/sql/core/src/main/scala/org/apache/spark/sql/UserDefinedFunction.scala
index a02e202..831eb7e 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/UserDefinedFunction.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/UserDefinedFunction.scala
@@ -23,7 +23,7 @@ import org.apache.spark.Accumulator
 import org.apache.spark.annotation.Experimental
 import org.apache.spark.api.python.PythonBroadcast
 import org.apache.spark.broadcast.Broadcast
-import org.apache.spark.sql.catalyst.expressions.ScalaUdf
+import org.apache.spark.sql.catalyst.expressions.ScalaUDF
 import org.apache.spark.sql.execution.PythonUDF
 import org.apache.spark.sql.types.DataType
 
@@ -44,7 +44,7 @@ import org.apache.spark.sql.types.DataType
 case class UserDefinedFunction protected[sql] (f: AnyRef, dataType: DataType) {
 
   def apply(exprs: Column*): Column = {
-    Column(ScalaUdf(f, dataType, exprs.map(_.expr)))
+    Column(ScalaUDF(f, dataType, exprs.map(_.expr)))
   }
 }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org
For additional commands, e-mail: commits-h...@spark.apache.org

Reply via email to