@SuppressWarnings("Guava") @Deprecated // to be removed before 2.0 public static <R extends RelNode> RelOptRuleOperand operand( Class<R> clazz, RelTrait trait, com.google.common.base.Predicate<? super R> predicate, RelOptRuleOperand first, RelOptRuleOperand... rest) { return operandJ(clazz, trait, (Predicate<? super R>) predicate::apply, first, rest); }
@SuppressWarnings("Guava") @Deprecated // to be removed before 2.0 public static <R extends RelNode> RelOptRuleOperand operand( Class<R> clazz, RelTrait trait, com.google.common.base.Predicate<? super R> predicate, RelOptRuleOperand first, RelOptRuleOperand... rest) { return operandJ(clazz, trait, (Predicate<? super R>) predicate::apply, first, rest); }
/** @deprecated Use {@link #operandJ} */ @SuppressWarnings("Guava") @Deprecated // to be removed before 2.0 public static <R extends RelNode> RelOptRuleOperand operand( Class<R> clazz, RelTrait trait, com.google.common.base.Predicate<? super R> predicate, RelOptRuleOperandChildren operandList) { return operandJ(clazz, trait, (Predicate<? super R>) predicate::apply, operandList); }
/** @deprecated Use {@link #operandJ} */ @SuppressWarnings("Guava") @Deprecated // to be removed before 2.0 public static <R extends RelNode> RelOptRuleOperand operand( Class<R> clazz, RelTrait trait, com.google.common.base.Predicate<? super R> predicate, RelOptRuleOperandChildren operandList) { return operandJ(clazz, trait, (Predicate<? super R>) predicate::apply, operandList); }
/** * Creates an operand that matches a relational expression that has no * children. * * @param clazz Class of relational expression to match (must not be null) * @param trait Trait to match, or null to match any trait * @param predicate Additional match predicate * @param first First operand * @param rest Rest operands * @param <R> Class of relational expression to match * @return Operand */ public static <R extends RelNode> RelOptRuleOperand operandJ( Class<R> clazz, RelTrait trait, Predicate<? super R> predicate, RelOptRuleOperand first, RelOptRuleOperand... rest) { return operandJ(clazz, trait, predicate, some(first, rest)); }
/** * Creates an operand that matches a relational expression that has no * children. * * @param clazz Class of relational expression to match (must not be null) * @param trait Trait to match, or null to match any trait * @param predicate Additional match predicate * @param first First operand * @param rest Rest operands * @param <R> Class of relational expression to match * @return Operand */ public static <R extends RelNode> RelOptRuleOperand operandJ( Class<R> clazz, RelTrait trait, Predicate<? super R> predicate, RelOptRuleOperand first, RelOptRuleOperand... rest) { return operandJ(clazz, trait, predicate, some(first, rest)); }
@Test public void testAggregateExtractProjectRuleWithFilter() { final String sql = "select sum(sal) filter (where empno = 40)\n" + "from emp"; HepProgram pre = new HepProgramBuilder() .addRuleInstance(AggregateProjectMergeRule.INSTANCE) .build(); // AggregateProjectMergeRule does not merges Project with Filter. // Force match Aggregate on top of Project once explicitly in unit test. final AggregateExtractProjectRule rule = new AggregateExtractProjectRule( operand(Aggregate.class, operandJ(Project.class, null, new Predicate<Project>() { int matchCount = 0; public boolean test(Project project) { return matchCount++ == 0; } }, none())), RelFactories.LOGICAL_BUILDER); sql(sql).withPre(pre).withRule(rule).checkUnchanged(); }
@Test public void testAggregateExtractProjectRuleWithFilter() { final String sql = "select sum(sal) filter (where empno = 40)\n" + "from emp"; HepProgram pre = new HepProgramBuilder() .addRuleInstance(AggregateProjectMergeRule.INSTANCE) .build(); // AggregateProjectMergeRule does not merges Project with Filter. // Force match Aggregate on top of Project once explicitly in unit test. final AggregateExtractProjectRule rule = new AggregateExtractProjectRule( operand(Aggregate.class, operandJ(Project.class, null, new Predicate<Project>() { int matchCount = 0; public boolean test(Project project) { return matchCount++ == 0; } }, none())), RelFactories.LOGICAL_BUILDER); sql(sql).withPre(pre).withRule(rule).checkUnchanged(); }