@Override public Object terminatePartial(AggregationBuffer agg) throws HiveException { return FunctionRegistry.invoke(terminatePartialMethod, ((UDAFAgg) agg).ueObject); }
@Override public Object terminate(AggregationBuffer agg) throws HiveException { return FunctionRegistry.invoke(terminateMethod, ((UDAFAgg) agg).ueObject); }
@Override public Object terminatePartial(AggregationBuffer agg) throws HiveException { return FunctionRegistry.invoke(terminatePartialMethod, ((UDAFAgg) agg).ueObject); }
@Override public Object terminate(AggregationBuffer agg) throws HiveException { return FunctionRegistry.invoke(terminateMethod, ((UDAFAgg) agg).ueObject); }
@Override public void merge(AggregationBuffer agg, Object partial) throws HiveException { FunctionRegistry.invoke(mergeMethod, ((UDAFAgg) agg).ueObject, conversionHelper.convertIfNecessary(partial)); }
@Override public void merge(AggregationBuffer agg, Object partial) throws HiveException { FunctionRegistry.invoke(mergeMethod, ((UDAFAgg) agg).ueObject, conversionHelper.convertIfNecessary(partial)); }
@Override public void iterate(AggregationBuffer agg, Object[] parameters) throws HiveException { FunctionRegistry.invoke(iterateMethod, ((UDAFAgg) agg).ueObject, conversionHelper.convertIfNecessary(parameters)); }
@Override public void iterate(AggregationBuffer agg, Object[] parameters) throws HiveException { FunctionRegistry.invoke(iterateMethod, ((UDAFAgg) agg).ueObject, conversionHelper.convertIfNecessary(parameters)); }
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { assert (arguments.length == realArguments.length); // Calculate all the arguments for (int i = 0; i < realArguments.length; i++) { realArguments[i] = arguments[i].get(); } // Call the function Object result = FunctionRegistry.invoke(udfMethod, udf, conversionHelper .convertIfNecessary(realArguments)); // For non-generic UDF, type info isn't available. This poses a problem for Hive Decimal. // If the returned value is HiveDecimal, we assume maximum precision/scale. if (result != null && result instanceof HiveDecimalWritable) { result = HiveDecimalWritable.enforcePrecisionScale ((HiveDecimalWritable) result, HiveDecimal.SYSTEM_DEFAULT_PRECISION, HiveDecimal.SYSTEM_DEFAULT_SCALE); } return result; }
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { assert (arguments.length == realArguments.length); // Calculate all the arguments for (int i = 0; i < realArguments.length; i++) { realArguments[i] = arguments[i].get(); } // Call the function Object result = FunctionRegistry.invoke(udfMethod, udf, conversionHelper .convertIfNecessary(realArguments)); // For non-generic UDF, type info isn't available. This poses a problem for Hive Decimal. // If the returned value is HiveDecimal, we assume maximum precision/scale. if (result != null && result instanceof HiveDecimalWritable) { result = HiveDecimalWritable.enforcePrecisionScale ((HiveDecimalWritable) result, HiveDecimal.SYSTEM_DEFAULT_PRECISION, HiveDecimal.SYSTEM_DEFAULT_SCALE); } return result; }
@Override public Object terminatePartial(AggregationBuffer agg) throws HiveException { return FunctionRegistry.invoke(terminatePartialMethod, ((UDAFAgg) agg).ueObject); }
@Override public Object terminatePartial(AggregationBuffer agg) throws HiveException { return FunctionRegistry.invoke(terminatePartialMethod, ((UDAFAgg) agg).ueObject); }
@Override public Object terminate(AggregationBuffer agg) throws HiveException { return FunctionRegistry.invoke(terminateMethod, ((UDAFAgg) agg).ueObject); }
@Override public Object terminate(AggregationBuffer agg) throws HiveException { return FunctionRegistry.invoke(terminateMethod, ((UDAFAgg) agg).ueObject); }
@Override public void iterate(AggregationBuffer agg, Object[] parameters) throws HiveException { FunctionRegistry.invoke(iterateMethod, ((UDAFAgg) agg).ueObject, conversionHelper.convertIfNecessary(parameters)); }
@Override public void merge(AggregationBuffer agg, Object partial) throws HiveException { FunctionRegistry.invoke(mergeMethod, ((UDAFAgg) agg).ueObject, conversionHelper.convertIfNecessary(partial)); }
@Override public void iterate(AggregationBuffer agg, Object[] parameters) throws HiveException { FunctionRegistry.invoke(iterateMethod, ((UDAFAgg) agg).ueObject, conversionHelper.convertIfNecessary(parameters)); }
@Override public void merge(AggregationBuffer agg, Object partial) throws HiveException { FunctionRegistry.invoke(mergeMethod, ((UDAFAgg) agg).ueObject, conversionHelper.convertIfNecessary(partial)); }
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { assert (arguments.length == realArguments.length); // Calculate all the arguments for (int i = 0; i < realArguments.length; i++) { realArguments[i] = arguments[i].get(); } // Call the function Object result = FunctionRegistry.invoke(udfMethod, udf, conversionHelper .convertIfNecessary(realArguments)); return result; }
public Object eval(Object... args) throws HiveException { if (!initialized) { initialize(args); } Object[] convertedArgs; try { convertedArgs = conversionHelper.convertIfNecessary(args); } catch (ClassCastException e) { // If a udf is called many times in the same SQL with different types. // It will be initialized many times with low efficiency. initialize(args); convertedArgs = conversionHelper.convertIfNecessary(args); } return FunctionRegistry.invoke(method, function, convertedArgs); }