private PlanBuilder sort(PlanBuilder subPlan, Query node) { return sort(subPlan, node.getOrderBy(), node.getLimit(), analysis.getOrderByExpressions(node)); }
private PlanBuilder sort(PlanBuilder subPlan, QuerySpecification node) { return sort(subPlan, node.getOrderBy(), node.getLimit(), analysis.getOrderByExpressions(node)); }
public RelationPlan plan(Query query) { PlanBuilder builder = planQueryBody(query); List<Expression> orderBy = analysis.getOrderByExpressions(query); builder = handleSubqueries(builder, query, orderBy); List<Expression> outputs = analysis.getOutputExpressions(query); builder = handleSubqueries(builder, query, outputs); builder = project(builder, Iterables.concat(orderBy, outputs)); builder = sort(builder, query); builder = project(builder, analysis.getOutputExpressions(query)); builder = limit(builder, query); return new RelationPlan( builder.getRoot(), analysis.getScope(query), computeOutputs(builder, analysis.getOutputExpressions(query))); }
List<Expression> orderBy = analysis.getOrderByExpressions(node); builder = handleSubqueries(builder, node, orderBy); builder = project(builder, Iterables.concat(orderBy, outputs));
private PlanBuilder sort(PlanBuilder subPlan, Query node) { return sort(subPlan, node.getOrderBy(), node.getLimit(), analysis.getOrderByExpressions(node)); }
private PlanBuilder sort(PlanBuilder subPlan, QuerySpecification node) { return sort(subPlan, node.getOrderBy(), node.getLimit(), analysis.getOrderByExpressions(node)); }
@Override protected PlanBuilder visitQuery(Query query, Void context) { PlanBuilder builder = planQueryBody(query); List<FieldOrExpression> orderBy = analysis.getOrderByExpressions(query); builder = handleSubqueries(builder, query, orderBy); List<FieldOrExpression> outputs = analysis.getOutputExpressions(query); builder = handleSubqueries(builder, query, outputs); builder = project(builder, Iterables.concat(orderBy, outputs)); builder = sort(builder, query); builder = project(builder, analysis.getOutputExpressions(query)); builder = limit(builder, query); return builder; }
@Override protected PlanBuilder visitQuerySpecification(QuerySpecification node, Void context) { PlanBuilder builder = planFrom(node); builder = filter(builder, analysis.getWhere(node), node); builder = aggregate(builder, node); builder = filter(builder, analysis.getHaving(node), node); builder = window(builder, node); List<FieldOrExpression> orderBy = analysis.getOrderByExpressions(node); builder = handleSubqueries(builder, node, orderBy); List<FieldOrExpression> outputs = analysis.getOutputExpressions(node); builder = handleSubqueries(builder, node, outputs); builder = project(builder, Iterables.concat(orderBy, outputs)); builder = distinct(builder, node, outputs, orderBy); builder = sort(builder, node); builder = project(builder, analysis.getOutputExpressions(node)); builder = limit(builder, node); return builder; }