// implement RelOptRule public void onMatch(RelOptRuleCall call) { CalcRel calc = call.rel(0); RexProgram program = calc.getProgram(); if (!program.isTrivial()) { return; } RelNode child = calc.getInput(0); child = call.getPlanner().register(child, calc); call.transformTo(convert(child, calc.getTraitSet())); }