@Override public PlanItem getBestPlanItem(Session session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder, HashSet<Column> allColumnsSet) { final CacheKey cacheKey = new CacheKey(masks, this); Map<Object, ViewIndex> indexCache = session.getViewIndexCache(topQuery != null); ViewIndex i = indexCache.get(cacheKey); if (i == null || i.isExpired()) { i = new ViewIndex(this, index, session, masks, filters, filter, sortOrder); indexCache.put(cacheKey, i); } PlanItem item = new PlanItem(); item.cost = i.getCost(session, masks, filters, filter, sortOrder, allColumnsSet); item.setIndex(i); return item; }
item1.setIndex(table.getScanIndex(s, null, filters, filter, sortOrder, allColumnsSet)); item1.cost = item1.getIndex().getCost(s, null, filters, filter,
@Override public PlanItem getBestPlanItem(Session session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder, HashSet<Column> allColumnsSet) { final CacheKey cacheKey = new CacheKey(masks, this); Map<Object, ViewIndex> indexCache = session.getViewIndexCache(topQuery != null); ViewIndex i = indexCache.get(cacheKey); if (i == null || i.isExpired()) { i = new ViewIndex(this, index, session, masks, filters, filter, sortOrder); indexCache.put(cacheKey, i); } PlanItem item = new PlanItem(); item.cost = i.getCost(session, masks, filters, filter, sortOrder, allColumnsSet); item.setIndex(i); return item; }
@Override public PlanItem getBestPlanItem(Session session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder, HashSet<Column> allColumnsSet) { final CacheKey cacheKey = new CacheKey(masks, this); Map<Object, ViewIndex> indexCache = session.getViewIndexCache(topQuery != null); ViewIndex i = indexCache.get(cacheKey); if (i == null || i.isExpired()) { i = new ViewIndex(this, index, session, masks, filters, filter, sortOrder); indexCache.put(cacheKey, i); } PlanItem item = new PlanItem(); item.cost = i.getCost(session, masks, filters, filter, sortOrder, allColumnsSet); item.setIndex(i); return item; }
/** * Get the best plan for the given search mask. * * @param masks - null means 'always false' */ public PlanItem getBestPlanItem(Session session, int[] masks) throws SQLException { PlanItem item = new PlanItem(); item.setIndex(getScanIndex(session)); item.cost = item.getIndex().getCost(session, null); ObjectArray indexes = getIndexes(); for (int i = 1; indexes != null && masks != null && i < indexes.size(); i++) { Index index = (Index) indexes.get(i); double cost = index.getCost(session, masks); if (cost < item.cost) { item.cost = cost; item.setIndex(index); } } return item; }
public PlanItem getBestPlanItem(Session session, int[] masks) throws SQLException { PlanItem item = new PlanItem(); item.cost = index.getCost(session, masks); IntArray masksArray = new IntArray(masks == null ? new int[0] : masks); ViewIndex i2 = (ViewIndex) indexCache.get(masksArray); if (i2 == null || i2.getSession() != session) { i2 = new ViewIndex(this, index, session, masks); indexCache.put(masksArray, i2); } item.setIndex(i2); return item; }
item1.setIndex(table.getScanIndex(s, null, filters, filter, sortOrder, allColumnsSet)); item1.cost = item1.getIndex().getCost(s, null, filters, filter,
item1.setIndex(table.getScanIndex(s, null, filters, filter, sortOrder, allColumnsSet)); item1.cost = item1.getIndex().getCost(s, null, filters, filter,
if (indexConditions.size() == 0) { item = new PlanItem(); item.setIndex(table.getScanIndex(session)); item.cost = item.getIndex().getCost(session, null); } else {