use of io.prestosql.spi.plan.Symbol in project hetu-core by openlookeng.
the class TestPruneWindowColumns method buildProjectedWindow.
private static PlanNode buildProjectedWindow(PlanBuilder p, Predicate<Symbol> projectionFilter, Predicate<Symbol> sourceFilter) {
Symbol orderKey = p.symbol("orderKey");
Symbol partitionKey = p.symbol("partitionKey");
Symbol hash = p.symbol("hash");
Symbol startValue1 = p.symbol("startValue1");
Symbol startValue2 = p.symbol("startValue2");
Symbol endValue1 = p.symbol("endValue1");
Symbol endValue2 = p.symbol("endValue2");
Symbol input1 = p.symbol("input1");
Symbol input2 = p.symbol("input2");
Symbol unused = p.symbol("unused");
Symbol output1 = p.symbol("output1");
Symbol output2 = p.symbol("output2");
List<Symbol> inputs = ImmutableList.of(orderKey, partitionKey, hash, startValue1, startValue2, endValue1, endValue2, input1, input2, unused);
List<Symbol> outputs = ImmutableList.<Symbol>builder().addAll(inputs).add(output1, output2).build();
return p.project(Assignments.copyOf(outputs.stream().filter(projectionFilter).collect(Collectors.toMap(v -> v, v -> p.variable(v.getName(), BIGINT)))), p.window(new WindowNode.Specification(ImmutableList.of(partitionKey), Optional.of(new OrderingScheme(ImmutableList.of(orderKey), ImmutableMap.of(orderKey, SortOrder.ASC_NULLS_FIRST)))), ImmutableMap.of(output1, new WindowNode.Function(call(FUNCTION_NAME, FUNCTION_HANDLE, BIGINT, ImmutableList.of(p.variable(input1.getName()))), ImmutableList.of(p.variable(input1.getName())), new WindowNode.Frame(WindowFrameType.RANGE, UNBOUNDED_PRECEDING, Optional.of(startValue1), CURRENT_ROW, Optional.of(endValue1), Optional.of(startValue1.getName()), Optional.of(endValue2.getName()))), output2, new WindowNode.Function(call(FUNCTION_NAME, FUNCTION_HANDLE, BIGINT, ImmutableList.of(p.variable(input2.getName()))), ImmutableList.of(p.variable(input2.getName())), new WindowNode.Frame(WindowFrameType.RANGE, UNBOUNDED_PRECEDING, Optional.of(startValue2), CURRENT_ROW, Optional.of(endValue2), Optional.of(startValue2.getName()), Optional.of(endValue2.getName())))), hash, p.values(inputs.stream().filter(sourceFilter).collect(toImmutableList()), ImmutableList.of())));
}
use of io.prestosql.spi.plan.Symbol in project hetu-core by openlookeng.
the class TestJoinEnumerator method createContext.
private Rule.Context createContext() {
PlanNodeIdAllocator planNodeIdAllocator = new PlanNodeIdAllocator();
Map<Symbol, Type> symbols = new HashMap<>();
symbols.put(new Symbol("A1"), BIGINT);
symbols.put(new Symbol("B1"), BIGINT);
PlanSymbolAllocator planSymbolAllocator = new PlanSymbolAllocator(symbols);
CachingStatsProvider statsProvider = new CachingStatsProvider(queryRunner.getStatsCalculator(), Optional.empty(), noLookup(), queryRunner.getDefaultSession(), planSymbolAllocator.getTypes());
CachingCostProvider costProvider = new CachingCostProvider(queryRunner.getCostCalculator(), statsProvider, Optional.empty(), queryRunner.getDefaultSession(), planSymbolAllocator.getTypes());
return new Rule.Context() {
@Override
public Lookup getLookup() {
return noLookup();
}
@Override
public PlanNodeIdAllocator getIdAllocator() {
return planNodeIdAllocator;
}
@Override
public PlanSymbolAllocator getSymbolAllocator() {
return planSymbolAllocator;
}
@Override
public Session getSession() {
return queryRunner.getDefaultSession();
}
@Override
public StatsProvider getStatsProvider() {
return statsProvider;
}
@Override
public CostProvider getCostProvider() {
return costProvider;
}
@Override
public void checkTimeoutNotExhausted() {
}
@Override
public WarningCollector getWarningCollector() {
return WarningCollector.NOOP;
}
};
}
use of io.prestosql.spi.plan.Symbol in project hetu-core by openlookeng.
the class TestPruneLimitColumns method buildProjectedLimit.
private ProjectNode buildProjectedLimit(PlanBuilder planBuilder, Predicate<Symbol> projectionFilter) {
Symbol a = planBuilder.symbol("a");
Symbol b = planBuilder.symbol("b");
return planBuilder.project(Assignments.copyOf(Stream.of(a, b).filter(projectionFilter).collect(Collectors.toMap(v -> v, v -> planBuilder.variable(v.getName(), BIGINT)))), planBuilder.limit(1, planBuilder.values(a, b)));
}
use of io.prestosql.spi.plan.Symbol in project hetu-core by openlookeng.
the class TestPruneOffsetColumns method buildProjectedOffset.
private ProjectNode buildProjectedOffset(PlanBuilder planBuilder, Predicate<Symbol> projectionFilter) {
Symbol a = planBuilder.symbol("a");
Symbol b = planBuilder.symbol("b");
return planBuilder.project(Assignments.copyOf(Stream.of(a, b).filter(projectionFilter).collect(Collectors.toMap(v -> v, v -> planBuilder.variable(v.getName())))), planBuilder.offset(1, planBuilder.values(a, b)));
}
use of io.prestosql.spi.plan.Symbol in project hetu-core by openlookeng.
the class TestPruneOrderByInAggregation method buildAggregation.
private AggregationNode buildAggregation(PlanBuilder planBuilder) {
Symbol avg = planBuilder.symbol("avg");
Symbol arrayAgg = planBuilder.symbol("array_agg");
Symbol input = planBuilder.symbol("input");
Symbol key = planBuilder.symbol("key");
Symbol keyHash = planBuilder.symbol("keyHash");
Symbol mask = planBuilder.symbol("mask");
List<Symbol> sourceSymbols = ImmutableList.of(input, key, keyHash, mask);
return planBuilder.aggregation(aggregationBuilder -> aggregationBuilder.singleGroupingSet(key).addAggregation(avg, PlanBuilder.expression("avg(input order by input)"), ImmutableList.of(BIGINT), mask).addAggregation(arrayAgg, PlanBuilder.expression("array_agg(input order by input)"), ImmutableList.of(BIGINT), mask).hashSymbol(keyHash).source(planBuilder.values(sourceSymbols, ImmutableList.of())));
}
Aggregations