package com.taobao.tddl.executor.function;
import com.taobao.tddl.optimizer.core.datatype.DataType;
import com.taobao.tddl.optimizer.core.expression.IExtraFunction;
import com.taobao.tddl.optimizer.core.expression.IFunction.FunctionType;
import com.taobao.tddl.optimizer.exceptions.FunctionException;
/**
* map是分发过程,reduce是合并过程。<br/>
* 分发和合并都是在计算节点上进行的(计算节点在客户端内,包含数据节点、合并节点和客户端节点) 其余的与map reduce模式一致。
*
* @author Whisper
* @author jianghang 2013-11-8 下午3:42:52
* @since 5.0.0
*/
public abstract class ScalarFunction extends ExtraFunction implements IExtraFunction {
@Override
public FunctionType getFunctionType() {
return FunctionType.Scalar;
}
@Override
public void serverMap(Object[] args) throws FunctionException {
this.compute(args);
}
@Override
public void serverReduce(Object[] args) throws FunctionException {
this.compute(args);
}
@Override
public DataType getMapReturnType() {
return this.getReturnType();
}
@Override
public String getDbFunction() {
return function.getColumnName();
}
public abstract void compute(Object[] args) throws FunctionException;
}