astral-compiler/astral/compiler/views/com/astraldb/codegen/Optimizer.scala.scala
2023-07-08 18:03:20 -04:00

32 lines
515 B
Scala

@import com.astraldb.spec.Definition
@(ctx:Definition)
object Optimizer
{
val rules = Seq[Rule[LogicalPlan]](
@for(rule <- ctx.rules){
@rule.safeLabel, }
)
def MAX_ITERATIONS = 100
def rewrite(plan: LogicalPlan): LogicalPlan =
{
var current = plan
var last = plan
for(i <- 0 until MAX_ITERATIONS)
{
for(rule <- rules)
{
current = rule(plan)
}
if(last.fastEquals(current))
{
return current
}
}
return current
}
}