package edu.brown.optimizer.optimizations; import org.voltdb.plannodes.AbstractPlanNode; import org.voltdb.utils.Pair; import edu.brown.optimizer.PlanOptimizerState; public abstract class AbstractOptimization { protected final PlanOptimizerState state; public AbstractOptimization(PlanOptimizerState state) { this.state = state; } /** * Perform the optimization on the given PlanNode tree Returns a pair * containing the new root of the tree a boolean flag that signals whether * the tree was modified or not * * @param rootNode * @return */ public abstract Pair<Boolean, AbstractPlanNode> optimize(final AbstractPlanNode rootNode); }