@Override public void createIndexConditions(Session session, TableFilter filter) { if (andOrType == AND) { left.createIndexConditions(session, filter); right.createIndexConditions(session, filter); } }
/** * Map the columns and add the join condition. * * @param on the condition */ public void mapAndAddFilter(Expression on) { on.mapColumns(this, 0); addFilterCondition(on, true); on.createIndexConditions(session, this); if (nestedJoin != null) { on.mapColumns(nestedJoin, 0); on.createIndexConditions(session, nestedJoin); } if (join != null) { join.mapAndAddFilter(on); } }
private ArrayList<IndexCondition> getIndexConditions(TableFilter filter) { ArrayList<IndexCondition> indexConditions = filter.getIndexConditions(); if(joinCond.isEmpty()) { return indexConditions; } ArrayList<IndexCondition> original = New.arrayList(indexConditions); ArrayList<IndexCondition> result; try { for (Expression cond : joinCond) { //add to indexConditions cond.createIndexConditions(filter.getSession(), filter); } result = New.arrayList(indexConditions); return result; } finally { indexConditions.clear(); indexConditions.addAll(original); } }
@Override public void prepare() { if (condition != null) { condition.mapColumns(tableFilter, 0); condition = condition.optimize(session); condition.createIndexConditions(session, tableFilter); } for (int i = 0, size = columns.size(); i < size; i++) { Column c = columns.get(i); Expression e = expressionMap.get(c); e.mapColumns(tableFilter, 0); expressionMap.put(c, e.optimize(session)); } TableFilter[] filters = new TableFilter[] { tableFilter }; PlanItem item = tableFilter.getBestPlanItem(session, filters, 0); tableFilter.setPlanItem(item); tableFilter.prepare(); }
condition.createIndexConditions(session, f);
@Override public void prepare() { if (condition != null) { condition.mapColumns(tableFilter, 0); condition = condition.optimize(session); condition.createIndexConditions(session, tableFilter); } TableFilter[] filters = new TableFilter[] { tableFilter }; PlanItem item = tableFilter.getBestPlanItem(session, filters, 0); tableFilter.setPlanItem(item); tableFilter.prepare(); }
for (TableFilter f : shards) { if (f.isJoinOuter() || f.isJoinOuterIndirect()) { prepare.getCondition().createIndexConditions(session, f);