Skip to content

Commit

Permalink
Make HiveGenericUDF lazy
Browse files Browse the repository at this point in the history
  • Loading branch information
panbingkun committed Jul 3, 2024
1 parent fea930a commit f780ae7
Showing 1 changed file with 4 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ class HiveGenericUDFEvaluator(
override def returnType: DataType = inspectorToDataType(returnInspector)

def setArg(index: Int, arg: Any): Unit =
deferredObjects(index).asInstanceOf[DeferredObjectAdapter].set(arg)
deferredObjects(index).asInstanceOf[DeferredObjectAdapter].set(() => arg)

override def doEvaluate(): Any = unwrapper(function.evaluate(deferredObjects))
}
Expand All @@ -139,10 +139,10 @@ private[hive] class DeferredObjectAdapter(oi: ObjectInspector, dataType: DataTyp
extends DeferredObject with HiveInspectors {

private val wrapper = wrapperFor(oi, dataType)
private var func: Any = _
def set(func: Any): Unit = {
private var func: () => Any = _
def set(func: () => Any): Unit = {
this.func = func
}
override def prepare(i: Int): Unit = {}
override def get(): AnyRef = wrapper(func).asInstanceOf[AnyRef]
override def get(): AnyRef = wrapper(func()).asInstanceOf[AnyRef]
}

0 comments on commit f780ae7

Please sign in to comment.