From 2ca845932ea222a0498331f4092c79c91c3e74b4 Mon Sep 17 00:00:00 2001 From: Cheng Hao Date: Tue, 7 Jul 2015 01:16:08 -0700 Subject: [PATCH 1/2] remove the OverrideFunctionRegistry --- .../sql/catalyst/analysis/FunctionRegistry.scala | 13 ------------- .../scala/org/apache/spark/sql/SQLContext.scala | 3 +-- .../org/apache/spark/sql/hive/HiveContext.scala | 2 +- 3 files changed, 2 insertions(+), 16 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala index fef276353022..5c25181e1cf5 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/FunctionRegistry.scala @@ -35,19 +35,6 @@ trait FunctionRegistry { def lookupFunction(name: String, children: Seq[Expression]): Expression } -class OverrideFunctionRegistry(underlying: FunctionRegistry) extends FunctionRegistry { - - private val functionBuilders = StringKeyHashMap[FunctionBuilder](caseSensitive = false) - - override def registerFunction(name: String, builder: FunctionBuilder): Unit = { - functionBuilders.put(name, builder) - } - - override def lookupFunction(name: String, children: Seq[Expression]): Expression = { - functionBuilders.get(name).map(_(children)).getOrElse(underlying.lookupFunction(name, children)) - } -} - class SimpleFunctionRegistry extends FunctionRegistry { private val functionBuilders = StringKeyHashMap[FunctionBuilder](caseSensitive = false) 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 e81371e7b0e8..079f31ab8fe6 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 @@ -139,8 +139,7 @@ class SQLContext(@transient val sparkContext: SparkContext) // TODO how to handle the temp function per user session? @transient - protected[sql] lazy val functionRegistry: FunctionRegistry = - new OverrideFunctionRegistry(FunctionRegistry.builtin) + protected[sql] lazy val functionRegistry: FunctionRegistry = FunctionRegistry.builtin @transient protected[sql] lazy val analyzer: Analyzer = diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala index b91242af2d15..439d8cab5f25 100644 --- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala @@ -371,7 +371,7 @@ class HiveContext(sc: SparkContext) extends SQLContext(sc) { // Note that HiveUDFs will be overridden by functions registered in this context. @transient override protected[sql] lazy val functionRegistry: FunctionRegistry = - new OverrideFunctionRegistry(new HiveFunctionRegistry(FunctionRegistry.builtin)) + new HiveFunctionRegistry(FunctionRegistry.builtin) /* An analyzer that uses the Hive metastore. */ @transient From 164d093b5c046a806b7ea550ba352d6b6dd49ba0 Mon Sep 17 00:00:00 2001 From: Cheng Hao Date: Tue, 7 Jul 2015 07:47:32 -0700 Subject: [PATCH 2/2] enable the function registry --- .../src/main/scala/org/apache/spark/sql/hive/hiveUDFs.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUDFs.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUDFs.scala index 4dea561ae5f6..a360d8e133e4 100644 --- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUDFs.scala +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUDFs.scala @@ -76,7 +76,7 @@ private[hive] class HiveFunctionRegistry(underlying: analysis.FunctionRegistry) } override def registerFunction(name: String, builder: FunctionBuilder): Unit = - throw new UnsupportedOperationException + underlying.registerFunction(name, builder) } private[hive] case class HiveSimpleUDF(funcWrapper: HiveFunctionWrapper, children: Seq[Expression])