if (debug.val)
LOG.debug("Calculating upper bounds...");
PartitionPlan pplan = new MostPopularPartitioner(this.designer, this.info).generate(hints);
// Cost Estimate
AbstractCostModel cost_model = info.getCostModel();
assert (cost_model != null);
cost_model.applyDesignerHints(hints);
cost_model.clear();
double cost = cost_model.estimateWorkloadCost(this.info.catalogContext, this.info.workload);
// Memory Estimate
long memory = this.info.getMemoryEstimator().estimate(this.info.catalogContext.database, info.getNumPartitions());
assert (memory <= hints.max_memory_per_partition) : memory + " <= " + hints.max_memory_per_partition + "\n" + pplan;
this.setUpperBounds(hints, pplan, cost, memory);