Practice (Programming) 2:30:00 [3]
shoes: Blocker
Finished the optimizer. It helps, but doesn't solve the problem of having to read all the rows when no block criteria have been created. Therefore, I added two options to the query engine: sample the data (actually read a specified percentage of blocks meeting the criteria) or gather block stats (essentially sampling with the percentage set to zero). Both allow running queries quickly to generate a new generation in the early going when running the full query takes a long time.