blob: aa38ce9d164b4fad0a28144e4dc5a384594ab27c [file] [log] [blame]
package edu.uci.ics.asterix.optimizer.rules.am;
import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IAlgebricksConstantValue;
/**
* Describes a function expression that is optimizable by an access method.
* Provides convenient methods for accessing arguments (constants, variables)
* and metadata of such a function.
*/
public interface IOptimizableFuncExpr {
public AbstractFunctionCallExpression getFuncExpr();
public int getNumLogicalVars();
public int getNumConstantVals();
public LogicalVariable getLogicalVar(int index);
public void setFieldName(int index, String fieldName);
public String getFieldName(int index);
public void setOptimizableSubTree(int index, OptimizableOperatorSubTree subTree);
public OptimizableOperatorSubTree getOperatorSubTree(int index);
public IAlgebricksConstantValue getConstantVal(int index);
public int findLogicalVar(LogicalVariable var);
public int findFieldName(String fieldName);
public void substituteVar(LogicalVariable original, LogicalVariable substitution);
}