package com.taobao.tddl.optimizer.core.expression;
import com.taobao.tddl.optimizer.core.datatype.DataType;
import com.taobao.tddl.optimizer.core.expression.IFunction.FunctionType;
/**
* 扩展函数实例,比如用于实现Merge的count/min等聚合函数
*
* @since 5.0.0
*/
public interface IExtraFunction {
/**
* 设置function配置定义
*/
public void setFunction(IFunction function);
/**
* Aggregate/Scalar函数
*/
public FunctionType getFunctionType();
/**
* 获取Map函数的返回结果
*/
public abstract DataType getMapReturnType();
/**
* 获取最后返回结果类型
*/
public abstract DataType getReturnType();
/**
* 获取function的结果
*/
public Object getResult();
/**
* 清除函数计算的中间结果,group by时使用
*/
public void clear();
}