use of io.trino.sql.planner.Plan in project trino by trinodb.
the class TestPartialTopNWithPresortedInput method assertPlanWithValidation.
private void assertPlanWithValidation(@Language("SQL") String sql, PlanMatchPattern pattern) {
LocalQueryRunner queryRunner = getQueryRunner();
queryRunner.inTransaction(queryRunner.getDefaultSession(), transactionSession -> {
Plan actualPlan = queryRunner.createPlan(transactionSession, sql, OPTIMIZED_AND_VALIDATED, false, WarningCollector.NOOP);
PlanAssert.assertPlan(transactionSession, queryRunner.getMetadata(), queryRunner.getFunctionManager(), queryRunner.getStatsCalculator(), actualPlan, pattern);
PlannerContext plannerContext = queryRunner.getPlannerContext();
new ValidateLimitWithPresortedInput().validate(actualPlan.getRoot(), transactionSession, plannerContext, createTestingTypeAnalyzer(plannerContext), actualPlan.getTypes(), WarningCollector.NOOP);
return null;
});
}
use of io.trino.sql.planner.Plan in project trino by trinodb.
the class TestRemoveUnsupportedDynamicFilters method assertPlan.
protected void assertPlan(PlanNode actual, PlanMatchPattern pattern) {
getQueryRunner().inTransaction(session -> {
// metadata.getCatalogHandle() registers the catalog for the transaction
session.getCatalog().ifPresent(catalog -> metadata.getCatalogHandle(session, catalog));
PlanAssert.assertPlan(session, metadata, getQueryRunner().getFunctionManager(), getQueryRunner().getStatsCalculator(), new Plan(actual, builder.getTypes(), StatsAndCosts.empty()), pattern);
return null;
});
}
use of io.trino.sql.planner.Plan in project trino by trinodb.
the class TestUnion method testPartialRollupAggregationsWithUnion.
@Test
public void testPartialRollupAggregationsWithUnion() {
Plan plan = plan("SELECT orderstatus, sum(orderkey) FROM (SELECT orderkey, orderstatus FROM orders UNION ALL SELECT orderkey, orderstatus FROM orders) x GROUP BY ROLLUP (orderstatus)", OPTIMIZED_AND_VALIDATED, false);
assertAtMostOneAggregationBetweenRemoteExchanges(plan);
assertPlanIsFullyDistributed(plan);
}
use of io.trino.sql.planner.Plan in project trino by trinodb.
the class TestUnion method testPartialAggregationsWithUnion.
@Test
public void testPartialAggregationsWithUnion() {
Plan plan = plan("SELECT orderstatus, sum(orderkey) FROM (SELECT orderkey, orderstatus FROM orders UNION ALL SELECT orderkey, orderstatus FROM orders) x GROUP BY (orderstatus)", OPTIMIZED_AND_VALIDATED, false);
assertAtMostOneAggregationBetweenRemoteExchanges(plan);
assertPlanIsFullyDistributed(plan);
}
use of io.trino.sql.planner.Plan in project trino by trinodb.
the class TestUnion method assertAtMostOneAggregationBetweenRemoteExchanges.
private static void assertAtMostOneAggregationBetweenRemoteExchanges(Plan plan) {
List<PlanNode> fragments = searchFrom(plan.getRoot()).where(TestUnion::isRemoteExchange).findAll().stream().flatMap(exchangeNode -> exchangeNode.getSources().stream()).collect(toList());
for (PlanNode fragment : fragments) {
List<PlanNode> aggregations = searchFrom(fragment).where(AggregationNode.class::isInstance).recurseOnlyWhen(TestUnion::isNotRemoteExchange).findAll();
assertFalse(aggregations.size() > 1, "More than a single AggregationNode between remote exchanges");
}
}
Aggregations