@Override public ProjectRel copy(RelTraitSet traitSet, RelNode input, List<RexNode> exps, RelDataType rowType) { return new ProjectRel(getCluster(), traitSet, input, exps, rowType, flags); }
public void onMatch(RelOptRuleCall call) { ProjectRel project = call.rel(0); call.transformTo( new EmptyRel( project.getCluster(), project.getRowType())); } };
public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) { assert traitSet.containsIfApplicable(Convention.NONE); return new ProjectRel( getCluster(), sole(inputs), getProjects(), rowType, getFlags(), collationList); }
final RelOptCluster cluster = projRel.getCluster(); RelNode newProjRel = CalcRel.createProject(aggRel,
Collections.singletonList( rexBuilder.makeCast( projRel.getCluster().getTypeFactory() .createTypeWithNullability( projExprs.get(0).getType(), true),
public void onMatch(RelOptRuleCall call) { final ProjectRel project = call.rel(0); final RelNode child = project.getChild(); final RelDataType rowType = project.getRowType(); final RexProgram program = RexProgram.create( child.getRowType(), project.getProjects(), null, project.getRowType(), project.getCluster().getRexBuilder()); final CalcRel calc = new CalcRel( project.getCluster(), project.getTraitSet(), child, rowType, program, ImmutableList.<RelCollation>of()); call.transformTo(calc); } }
public void onMatch(RelOptRuleCall call) { final ProjectRel project = call.rel(0); final RelNode child = project.getChild(); final RelDataType rowType = project.getRowType(); final RexProgram program = RexProgram.create( child.getRowType(), project.getProjects(), null, project.getRowType(), project.getCluster().getRexBuilder()); final CalcRel calc = new CalcRel( project.getCluster(), project.getTraitSet(), child, rowType, program, Collections.<RelCollation>emptyList()); call.transformTo(calc); } }
1); final RexLiteral expr = project.getCluster().getRexBuilder().makeExactLiteral( BigDecimal.ZERO); RelDataType newRowType = project.getCluster().getTypeFactory().createStructType( Collections.singletonList(expr.getType()), Collections.singletonList("DUMMY")); ProjectRel newProject = new ProjectRel( project.getCluster(), project.getCluster().traitSetOf(RelCollationImpl.EMPTY), newInput, Collections.<RexNode>singletonList(expr), RelOptUtil.permute(project.getCluster().getTypeFactory(), rowType, mapping); } else { newProject = new ProjectRel( project.getCluster(), project.getCluster().traitSetOf( newCollations.isEmpty() ? RelCollationImpl.EMPTY
1); final RexLiteral expr = project.getCluster().getRexBuilder().makeExactLiteral( BigDecimal.ZERO); RelDataType newRowType = project.getCluster().getTypeFactory().createStructType( Collections.singletonList(expr.getType()), Collections.singletonList("DUMMY")); ProjectRel newProject = new ProjectRel( project.getCluster(), newInput, Collections.<RexNode>singletonList(expr), project.getCluster().getTypeFactory().createStructType( Mappings.apply3(mapping, rowType.getFieldList())); } else { newProject = new ProjectRel( project.getCluster(), newInput, newProjectExprList,
public void onMatch(RelOptRuleCall call) { ProjectRel project = call.rel(0); List<RexNode> expList = new ArrayList<RexNode>(project.getChildExps()); if (reduceExpressions(project, expList)) { call.transformTo( new ProjectRel( project.getCluster(), project.getTraitSet(), project.getChild(), expList, project.getRowType(), ProjectRel.Flags.BOXED)); // New plan is absolutely better than old plan. call.getPlanner().setImportance(project, 0.0); } } };
public UnifyResult apply(UnifyIn<ProjectRel, ProjectRel> in) { final RexShuttle shuttle = getRexShuttle(in.target); final List<RexNode> newProjects; try { newProjects = shuttle.apply(in.query.getProjects()); } catch (MatchFailed e) { return null; } final ProjectRel newProject = new ProjectRel( in.target.getCluster(), in.target, newProjects, in.query.getRowType(), in.query.getFlags(), in.query.getCollationList()); final RelNode newProject2 = RemoveTrivialProjectRule.strip(newProject); return in.result(newProject2); } }
@Override public void onMatch( RelOptRuleCall call ) { ProjectRel rel = call.rel( 0 ); RelTraitSet newTraits = rel.getTraitSet().plus( Cascading.CONVENTION ); call.transformTo( new CascadingProjectRel( rel.getCluster(), newTraits, convert( rel.getChild(), newTraits ), rel.getProjects(), rel.getRowType(), rel.getFlags(), rel.getCollationList() ) ); } }
null, project.getRowType(), project.getCluster().getRexBuilder()); if (RexOver.containsOver(program)) { CalcRel projectAsCalc = new CalcRel( project.getCluster(), project.getTraitSet(), calc, final RexBuilder rexBuilder = project.getCluster().getRexBuilder(); final RexProgramBuilder progBuilder = new RexProgramBuilder(
RexBuilder rexBuilder = topProject.getCluster().getRexBuilder();
RexProgram.create(child.getChild().getRowType(), child.getProjects(), null, child.getRowType(), child.getCluster().getRexBuilder());
public void onMatch(RelOptRuleCall call) { final SortRel sort = call.rel(0); final ProjectRel project = call.rel(1); final RelOptCluster cluster = project.getCluster();
final RelOptCluster cluster = project.getCluster(); RexProgram program = RexProgram.create(
RexBuilder rexBuilder = project.getCluster().getRexBuilder(); RelDataTypeFactory typeFactory = rexBuilder.getTypeFactory(); RelNode rightChild = semiJoin.getRight();
RexBuilder rexBuilder = project.getCluster().getRexBuilder(); RelDataTypeFactory typeFactory = rexBuilder.getTypeFactory(); RelNode rightChild = semiJoin.getRight();