Search in sources :

Example 1 with INNER

use of io.trino.sql.planner.plan.CorrelatedJoinNode.Type.INNER in project trino by trinodb.

the class TestTransformCorrelatedJoinToJoin method testRewriteInnerCorrelatedJoin.

@Test
public void testRewriteInnerCorrelatedJoin() {
    tester().assertThat(new TransformCorrelatedJoinToJoin(tester().getPlannerContext())).on(p -> {
        Symbol a = p.symbol("a");
        Symbol b = p.symbol("b");
        return p.correlatedJoin(ImmutableList.of(a), p.values(a), p.filter(new ComparisonExpression(GREATER_THAN, b.toSymbolReference(), a.toSymbolReference()), p.values(b)));
    }).matches(join(JoinNode.Type.INNER, ImmutableList.of(), Optional.of("b > a"), values("a"), filter(TRUE_LITERAL, values("b"))));
    tester().assertThat(new TransformCorrelatedJoinToJoin(tester().getPlannerContext())).on(p -> {
        Symbol a = p.symbol("a");
        Symbol b = p.symbol("b");
        return p.correlatedJoin(ImmutableList.of(a), p.values(a), INNER, new ComparisonExpression(LESS_THAN, b.toSymbolReference(), new LongLiteral("3")), p.filter(new ComparisonExpression(GREATER_THAN, b.toSymbolReference(), a.toSymbolReference()), p.values(b)));
    }).matches(join(JoinNode.Type.INNER, ImmutableList.of(), Optional.of("b > a AND b < 3"), values("a"), filter(TRUE_LITERAL, values("b"))));
}
Also used : Symbol(io.trino.sql.planner.Symbol) INNER(io.trino.sql.planner.plan.CorrelatedJoinNode.Type.INNER) LEFT(io.trino.sql.planner.plan.CorrelatedJoinNode.Type.LEFT) BaseRuleTest(io.trino.sql.planner.iterative.rule.test.BaseRuleTest) Test(org.testng.annotations.Test) PlanMatchPattern.filter(io.trino.sql.planner.assertions.PlanMatchPattern.filter) PlanMatchPattern.values(io.trino.sql.planner.assertions.PlanMatchPattern.values) TRUE_LITERAL(io.trino.sql.tree.BooleanLiteral.TRUE_LITERAL) LESS_THAN(io.trino.sql.tree.ComparisonExpression.Operator.LESS_THAN) ComparisonExpression(io.trino.sql.tree.ComparisonExpression) ImmutableList(com.google.common.collect.ImmutableList) LongLiteral(io.trino.sql.tree.LongLiteral) GREATER_THAN(io.trino.sql.tree.ComparisonExpression.Operator.GREATER_THAN) Optional(java.util.Optional) JoinNode(io.trino.sql.planner.plan.JoinNode) PlanMatchPattern.join(io.trino.sql.planner.assertions.PlanMatchPattern.join) ComparisonExpression(io.trino.sql.tree.ComparisonExpression) LongLiteral(io.trino.sql.tree.LongLiteral) Symbol(io.trino.sql.planner.Symbol) BaseRuleTest(io.trino.sql.planner.iterative.rule.test.BaseRuleTest) Test(org.testng.annotations.Test)

Aggregations

ImmutableList (com.google.common.collect.ImmutableList)1 Symbol (io.trino.sql.planner.Symbol)1 PlanMatchPattern.filter (io.trino.sql.planner.assertions.PlanMatchPattern.filter)1 PlanMatchPattern.join (io.trino.sql.planner.assertions.PlanMatchPattern.join)1 PlanMatchPattern.values (io.trino.sql.planner.assertions.PlanMatchPattern.values)1 BaseRuleTest (io.trino.sql.planner.iterative.rule.test.BaseRuleTest)1 INNER (io.trino.sql.planner.plan.CorrelatedJoinNode.Type.INNER)1 LEFT (io.trino.sql.planner.plan.CorrelatedJoinNode.Type.LEFT)1 JoinNode (io.trino.sql.planner.plan.JoinNode)1 TRUE_LITERAL (io.trino.sql.tree.BooleanLiteral.TRUE_LITERAL)1 ComparisonExpression (io.trino.sql.tree.ComparisonExpression)1 GREATER_THAN (io.trino.sql.tree.ComparisonExpression.Operator.GREATER_THAN)1 LESS_THAN (io.trino.sql.tree.ComparisonExpression.Operator.LESS_THAN)1 LongLiteral (io.trino.sql.tree.LongLiteral)1 Optional (java.util.Optional)1 Test (org.testng.annotations.Test)1