private TableFilter getNested(TableFilter n) { String joinTable = Constants.PREFIX_JOIN + parseIndex; TableFilter top = new TableFilter(session, getDualTable(true), joinTable, rightsChecked, currentSelect); top.addJoin(n, false, true, null); return top; }
/** * Calculate the best query plan to use. */ void optimize() { calculateBestPlan(); bestPlan.removeUnusableIndexConditions(); TableFilter[] f2 = bestPlan.getFilters(); topFilter = f2[0]; for (int i = 0; i < f2.length - 1; i++) { f2[i].addJoin(f2[i + 1], false, false, null); } for (TableFilter f : f2) { PlanItem item = bestPlan.getItem(f); f.setPlanItem(item); } }
newTop.addJoin(top, true, false, on); } else { newTop.addJoin(top, true, false, on); on = readExpression(); top.addJoin(join, true, false, on); last = join; } else if (readIf("FULL")) { top.addJoin(join, false, false, on); } else { top.addJoin(join, fromOuter, false, on); top.addJoin(join, false, false, on); } else { top.addJoin(join, fromOuter, false, on); TableFilter join = readTableFilter(fromOuter); if (nestedJoins) { top.addJoin(join, false, false, null); } else { top.addJoin(join, fromOuter, false, null); top.addJoin(join, false, nested, on); } else { top.addJoin(join, fromOuter, false, on);
join.addJoin(filter, outer, nested, on);
if (idx >= 0) { filters.remove(idx); leftFilter.addJoin(rightFilter, true, false, r); } else {