Search in sources :

Example 1 with Union

use of io.crate.planner.operators.Union in project crate by crate.

the class MoveOrderBeneathUnion method apply.

@Override
public LogicalPlan apply(Order order, Captures captures, TableStats tableStats, TransactionContext txnCtx, NodeContext nodeCtx) {
    Union union = captures.get(unionCapture);
    List<LogicalPlan> unionSources = union.sources();
    assert unionSources.size() == 2 : "A UNION must have exactly 2 unionSources";
    Order lhsOrder = updateSources(order, unionSources.get(0));
    Order rhsOrder = updateSources(order, unionSources.get(1));
    return union.replaceSources(List.of(lhsOrder, rhsOrder));
}
Also used : Order(io.crate.planner.operators.Order) LogicalPlan(io.crate.planner.operators.LogicalPlan) Union(io.crate.planner.operators.Union)

Example 2 with Union

use of io.crate.planner.operators.Union in project crate by crate.

the class MoveFilterBeneathUnion method apply.

@Override
public LogicalPlan apply(Filter filter, Captures captures, TableStats tableStats, TransactionContext txnCtx, NodeContext nodeCtx) {
    Union union = captures.get(unionCapture);
    LogicalPlan lhs = union.sources().get(0);
    LogicalPlan rhs = union.sources().get(1);
    return union.replaceSources(List.of(createNewFilter(filter, lhs), createNewFilter(filter, rhs)));
}
Also used : LogicalPlan(io.crate.planner.operators.LogicalPlan) Union(io.crate.planner.operators.Union)

Aggregations

LogicalPlan (io.crate.planner.operators.LogicalPlan)2 Union (io.crate.planner.operators.Union)2 Order (io.crate.planner.operators.Order)1