public JoinBatch getJoinBatch() { return getTopTableFilter().getJoinBatch(); }
@Override public void prepareJoinBatch() { ArrayList<TableFilter> list = New.arrayList(); TableFilter f = getTopTableFilter(); do { if (f.getNestedJoin() != null) { // we do not support batching with nested joins return; } list.add(f); f = f.getJoin(); } while (f != null); TableFilter[] fs = list.toArray(new TableFilter[0]); // prepare join batch JoinBatch jb = null; for (int i = fs.length - 1; i >= 0; i--) { jb = fs[i].prepareJoinBatch(jb, fs, i); } }
for (TableFilter f = select.getTopTableFilter(); f != null; f = f.getJoin()) list.add(f);
/** * @param qry Query. */ private void collectOptimizedTableFiltersOrder(Query qry) { if (qry instanceof SelectUnion) { collectOptimizedTableFiltersOrder(((SelectUnion)qry).getLeft()); collectOptimizedTableFiltersOrder(((SelectUnion)qry).getRight()); } else { Select select = (Select)qry; TableFilter filter = select.getTopTableFilter(); int i = 0; do { assert0(filter != null, select); assert0(filter.getNestedJoin() == null, select); // Here all the table filters must have generated unique aliases, // thus we can store them in the same map for all the subqueries. optimizedTableFilterOrder.put(filter.getTableAlias(), i++); Table tbl = filter.getTable(); // Go down and collect inside of optimized subqueries. if (tbl instanceof TableView) { ViewIndex viewIdx = (ViewIndex)filter.getIndex(); collectOptimizedTableFiltersOrder(viewIdx.getQuery()); } filter = filter.getJoin(); } while (filter != null); } }
case COUNT: case COUNT_ALL: Table table = select.getTopTableFilter().getTable(); return ValueLong.get(table.getRowCount(session)); case MIN:
TableFilter filter = select.getTopTableFilter();
public JoinBatch getJoinBatch() { return getTopTableFilter().getJoinBatch(); }
public JoinBatch getJoinBatch() { return getTopTableFilter().getJoinBatch(); }
@Override public void prepareJoinBatch() { ArrayList<TableFilter> list = New.arrayList(); TableFilter f = getTopTableFilter(); do { if (f.getNestedJoin() != null) { // we do not support batching with nested joins return; } list.add(f); f = f.getJoin(); } while (f != null); TableFilter[] fs = list.toArray(new TableFilter[list.size()]); // prepare join batch JoinBatch jb = null; for (int i = fs.length - 1; i >= 0; i--) { jb = fs[i].prepareJoinBatch(jb, fs, i); } }
@Override public void prepareJoinBatch() { ArrayList<TableFilter> list = New.arrayList(); TableFilter f = getTopTableFilter(); do { if (f.getNestedJoin() != null) { // we do not support batching with nested joins return; } list.add(f); f = f.getJoin(); } while (f != null); TableFilter[] fs = list.toArray(new TableFilter[list.size()]); // prepare join batch JoinBatch jb = null; for (int i = fs.length - 1; i >= 0; i--) { jb = fs[i].prepareJoinBatch(jb, fs, i); } }
for (TableFilter f = select.getTopTableFilter(); f != null; f = f.getJoin()) list.add(f);
/** * @param qry Query. */ private void collectOptimizedTableFiltersOrder(Query qry) { if (qry instanceof SelectUnion) { collectOptimizedTableFiltersOrder(((SelectUnion)qry).getLeft()); collectOptimizedTableFiltersOrder(((SelectUnion)qry).getRight()); } else { Select select = (Select)qry; TableFilter filter = select.getTopTableFilter(); int i = 0; do { assert0(filter != null, select); assert0(filter.getNestedJoin() == null, select); // Here all the table filters must have generated unique aliases, // thus we can store them in the same map for all the subqueries. optimizedTableFilterOrder.put(filter.getTableAlias(), i++); Table tbl = filter.getTable(); // Go down and collect inside of optimized subqueries. if (tbl instanceof TableView) { ViewIndex viewIdx = (ViewIndex)filter.getIndex(); collectOptimizedTableFiltersOrder(viewIdx.getQuery()); } filter = filter.getJoin(); } while (filter != null); } }
TableFilter filter = select.getTopTableFilter();
switch (type) { case COUNT_ALL: Table table = select.getTopTableFilter().getTable(); return ValueLong.get(table.getRowCount(session)); case MIN:
case COUNT: case COUNT_ALL: Table table = select.getTopTableFilter().getTable(); return ValueLong.get(table.getRowCount(session)); case MIN:
case COUNT: case COUNT_ALL: Table table = select.getTopTableFilter().getTable(); return ValueLong.get(table.getRowCount(session)); case MIN: