private PlanNode projectNode(PlanNode source, String symbol, Expression expression) { return new ProjectNode( idAllocator.getNextId(), source, Assignments.of(new Symbol(symbol), expression)); }
private PlanNode projectNode(PlanNode source, String symbol, Expression expression) { return new ProjectNode( idAllocator.getNextId(), source, Assignments.of(new Symbol(symbol), expression)); }
@Test public void testDoesNotFireOnNoCorrelation() { tester().assertThat(new TransformUncorrelatedInPredicateSubqueryToSemiJoin()) .on(p -> p.apply( Assignments.of(), emptyList(), p.values(), p.values())) .doesNotFire(); }
@Test public void testDoesNotFireOnNoCorrelation() { tester().assertThat(new TransformUncorrelatedInPredicateSubqueryToSemiJoin()) .on(p -> p.apply( Assignments.of(), emptyList(), p.values(), p.values())) .doesNotFire(); }
private PlanNode project(String id, PlanNode source, String symbol, Expression expression) { return new ProjectNode( new PlanNodeId(id), source, Assignments.of(new Symbol(symbol), expression)); }
private PlanNode project(String id, PlanNode source, String symbol, Expression expression) { return new ProjectNode( new PlanNodeId(id), source, Assignments.of(new Symbol(symbol), expression)); }
@Test public void testEmptyAssignments() { tester().assertThat(new RemoveUnreferencedScalarApplyNodes()) .on(p -> p.apply( Assignments.of(), ImmutableList.of(), p.values(p.symbol("x")), p.values(p.symbol("y")))) .matches(values("x")); } }
@Test public void testEmptyAssignments() { tester().assertThat(new RemoveUnreferencedScalarApplyNodes()) .on(p -> p.apply( Assignments.of(), ImmutableList.of(), p.values(p.symbol("x")), p.values(p.symbol("y")))) .matches(values("x")); } }
@Test public void testDoesNotFireOnNonInPredicateSubquery() { tester().assertThat(new TransformUncorrelatedInPredicateSubqueryToSemiJoin()) .on(p -> p.apply( Assignments.of(p.symbol("x"), new ExistsPredicate(new LongLiteral("1"))), emptyList(), p.values(), p.values())) .doesNotFire(); }
@Test public void testDoesNotFire() { tester().assertThat(new RemoveUnreferencedScalarApplyNodes()) .on(p -> p.apply( Assignments.of(p.symbol("z"), p.expression("x IN (y)")), ImmutableList.of(), p.values(p.symbol("x")), p.values(p.symbol("y")))) .doesNotFire(); }
@Test public void testDoesNotFireOnNonInPredicateSubquery() { tester().assertThat(new TransformUncorrelatedInPredicateSubqueryToSemiJoin()) .on(p -> p.apply( Assignments.of(p.symbol("x"), new ExistsPredicate(new LongLiteral("1"))), emptyList(), p.values(), p.values())) .doesNotFire(); }
@Test public void testDoesNotFireNoExchange() { tester().assertThat(new PushProjectionThroughExchange()) .on(p -> p.project( Assignments.of(p.symbol("x"), new LongLiteral("3")), p.values(p.symbol("a")))) .doesNotFire(); }
@Test public void testDoesNotFire() { tester().assertThat(new PushProjectionThroughUnion()) .on(p -> p.project( Assignments.of(p.symbol("x"), new LongLiteral("3")), p.values(p.symbol("a")))) .doesNotFire(); }
@Test public void testProjectionExpressionRewrite() { tester().assertThat(zeroRewriter.projectExpressionRewrite()) .on(p -> p.project( Assignments.of(p.symbol("y"), PlanBuilder.expression("x IS NOT NULL")), p.values(p.symbol("x")))) .matches( project(ImmutableMap.of("y", expression("0")), values("x"))); }
@Test public void testProjectionExpressionNotRewritten() { tester().assertThat(zeroRewriter.projectExpressionRewrite()) .on(p -> p.project( Assignments.of(p.symbol("y"), PlanBuilder.expression("0")), p.values(p.symbol("x")))) .doesNotFire(); }
@Test public void testAllOutputsReferenced() { tester().assertThat(new PruneValuesColumns()) .on(p -> p.project( Assignments.of(p.symbol("y"), expression("x")), p.values(p.symbol("x")))) .doesNotFire(); } }
@Test public void testDoesNotFire() { tester().assertThat(new PushProjectionThroughUnion()) .on(p -> p.project( Assignments.of(p.symbol("x"), new LongLiteral("3")), p.values(p.symbol("a")))) .doesNotFire(); }
@Test public void testProjectionExpressionNotRewritten() { tester().assertThat(zeroRewriter.projectExpressionRewrite()) .on(p -> p.project( Assignments.of(p.symbol("y"), PlanBuilder.expression("0")), p.values(p.symbol("x")))) .doesNotFire(); }
@Test public void testIdentityProjections() { tester().assertThat(new InlineProjections()) .on(p -> p.project( Assignments.of(p.symbol("output"), expression("value")), p.project( Assignments.identity(p.symbol("value")), p.values(p.symbol("value"))))) .doesNotFire(); }
@Test public void testIdentityProjections() { tester().assertThat(new InlineProjections()) .on(p -> p.project( Assignments.of(p.symbol("output"), expression("value")), p.project( Assignments.identity(p.symbol("value")), p.values(p.symbol("value"))))) .doesNotFire(); }