public QueryCost calculateQueryCost(AbstractQueryContext qctx) throws LensException { return queryCostCalculator.calculateCost(qctx, this); } /**
@Override public void configure(Configuration conf, String driverType, String driverName) throws LensException { super.configure(conf, driverType, driverName); init(); configured = true; Class<? extends QueryCostCalculator> queryCostCalculatorClass = getConf().getClass(JDBC_COST_CALCULATOR, StaticCostCalculator.class, QueryCostCalculator.class); try { queryCostCalculator = queryCostCalculatorClass.newInstance(); } catch (InstantiationException | IllegalAccessException e) { throw new LensException("Can't instantiate query cost calculator of class: " + queryCostCalculatorClass, e); } //For initializing the decider class instance queryCostCalculator.init(this); log.info("JDBC Driver {} configured", getFullyQualifiedName()); }
queryCostCalculator.init(this); queryPriorityDecider = new CostRangePriorityDecider( new CostToPriorityRangeConf(getConf().get(HS2_PRIORITY_RANGES, HS2_PRIORITY_DEFAULT_RANGES))
private QueryCost calculateQueryCost(AbstractQueryContext qctx) throws LensException { if (qctx.isOlapQuery()) { QueryCost cost = queryCostCalculator.calculateCost(qctx, this); if (cost != null) { return cost; } } return new FactPartitionBasedQueryCost(Double.MAX_VALUE); }
private QueryCost calculateQueryCost(AbstractQueryContext qctx) throws LensException { if (qctx.isOlapQuery()) { QueryCost cost = queryCostCalculator.calculateCost(qctx, this); if (cost != null) { return cost; } } return new FactPartitionBasedQueryCost(Double.MAX_VALUE); }
ctx.setDriverCost(driver, driver.queryCostCalculator.calculateCost(ctx, driver)); assertEquals(driver.decidePriority(ctx, driver.queryPriorityDecider), Priority.VERY_HIGH); assertEquals(driver.decidePriority(ctx, alwaysNormalPriorityDecider), Priority.NORMAL); ctx.setDriverCost(driver, driver.queryCostCalculator.calculateCost(ctx, driver)); assertEquals(driver.decidePriority(ctx), Priority.VERY_HIGH); assertEquals(alwaysNormalPriorityDecider.decidePriority(ctx.getDriverQueryCost(driver)), Priority.NORMAL);