final List<RelDataTypeField> relOutput = rel.getRowType().getFieldList();
public RelNode convert(RelNode rel) { LogicalProject project = (LogicalProject) rel; return new JdbcRules.JdbcProject(rel.getCluster(), rel.getTraitSet().replace(this.out), convert( project.getInput(), project.getInput().getTraitSet().replace(this.out).simplify()), project.getProjects(), project.getRowType()); }
@Override public RelNode convert(final RelNode rel) { // KYLIN-3281 // OLAPProjectRule can't normal working with projectRel[input=sortRel] final LogicalProject project = (LogicalProject) rel; final RelNode convertChild = convert(project.getInput(), project.getInput().getTraitSet().replace(OLAPRel.CONVENTION)); final RelOptCluster cluster = convertChild.getCluster(); final RelTraitSet traitSet = cluster.traitSet().replace(OLAPRel.CONVENTION) .replaceIfs(RelCollationTraitDef.INSTANCE, new Supplier<List<RelCollation>>() { public List<RelCollation> get() { // CALCITE-88 return RelMdCollation.project(cluster.getMetadataQuery(), convertChild, project.getProjects()); } }); return new OLAPProjectRel(convertChild.getCluster(), traitSet, convertChild, project.getProjects(), project.getRowType()); } }
@Override public RelNode visit(LogicalProject project) { final RelNode input = project.getInput().accept(this); return new LogicalProject( cluster, copyOf(project.getTraitSet()), input, Lists.transform(project.getProjects(), COPY_REX_NODE), copyOf(project.getRowType()) ); }
@Override public RelNode convert(RelNode relNode) { final LogicalProject project = (LogicalProject) relNode; final RelTraitSet traitSet = project.getTraitSet().replace(out); return new ElasticsearchProject(project.getCluster(), traitSet, convert(project.getInput(), out), project.getProjects(), project.getRowType()); } }
@Override public RelNode visit(LogicalProject project) { final RenameConvertToConvertFromVisitor renameVisitor = new RenameConvertToConvertFromVisitor(project.getCluster().getRexBuilder(), table); final List<RexNode> projExpr = Lists.newArrayList(); for(RexNode rexNode : project.getChildExps()) { projExpr.add(rexNode.accept(unwrappingExpressionVisitor)); } project = project.copy(project.getTraitSet(), project.getInput(), projExpr, project.getRowType()); List<RexNode> exprList = new ArrayList<>(); boolean rewrite = false; for (RexNode rex : project.getChildExps()) { RexNode newExpr = rex.accept(renameVisitor); if (newExpr != rex) { rewrite = true; } exprList.add(newExpr); } if (rewrite == true) { LogicalProject newProject = project.copy(project.getTraitSet(), project.getInput(0), exprList, project.getRowType()); return visitChild(newProject, 0, project.getInput()); } return visitChild(project, 0, project.getInput()); }
public RelNode convert(RelNode rel) { final LogicalProject project = (LogicalProject) rel; return EnumerableProject.create( convert(project.getInput(), project.getInput().getTraitSet() .replace(EnumerableConvention.INSTANCE)), project.getProjects(), project.getRowType()); } }
public RelNode convert(RelNode rel) { final LogicalProject project = (LogicalProject) rel; return EnumerableProject.create( convert(project.getInput(), project.getInput().getTraitSet() .replace(EnumerableConvention.INSTANCE)), project.getProjects(), project.getRowType()); } }
public void rewriteRel(LogicalProject rel) { final List<Pair<RexNode, String>> flattenedExpList = new ArrayList<>(); flattenProjections(new RewriteRexShuttle(), rel.getProjects(), rel.getRowType().getFieldNames(), "", flattenedExpList); relBuilder.push(getNewForOldRel(rel.getInput())) .projectNamed(Pair.left(flattenedExpList), Pair.right(flattenedExpList), true); setNewForOldRel(rel, relBuilder.build()); }
public void rewriteRel(LogicalProject rel) { final List<Pair<RexNode, String>> flattenedExpList = new ArrayList<>(); flattenProjections(new RewriteRexShuttle(), rel.getProjects(), rel.getRowType().getFieldNames(), "", flattenedExpList); relBuilder.push(getNewForOldRel(rel.getInput())) .projectNamed(Pair.left(flattenedExpList), Pair.right(flattenedExpList), true); setNewForOldRel(rel, relBuilder.build()); }
public RelNode convert(RelNode rel) { final LogicalProject project = (LogicalProject) rel; return new BindableProject(rel.getCluster(), rel.getTraitSet().replace(BindableConvention.INSTANCE), convert(project.getInput(), project.getInput().getTraitSet() .replace(BindableConvention.INSTANCE)), project.getProjects(), project.getRowType()); } }
public void onMatch(RelOptRuleCall call) { final LogicalProject project = call.rel(0); final RelNode input = project.getInput(); final RexProgram program = RexProgram.create( input.getRowType(), project.getProjects(), null, project.getRowType(), project.getCluster().getRexBuilder()); final LogicalCalc calc = LogicalCalc.create(input, program); call.transformTo(calc); } }
public void onMatch(RelOptRuleCall call) { final LogicalProject project = call.rel(0); final RelNode input = project.getInput(); final RexProgram program = RexProgram.create( input.getRowType(), project.getProjects(), null, project.getRowType(), project.getCluster().getRexBuilder()); final LogicalCalc calc = LogicalCalc.create(input, program); call.transformTo(calc); } }
public RelNode convert(RelNode rel) { final LogicalProject project = (LogicalProject) rel; return new BindableProject(rel.getCluster(), rel.getTraitSet().replace(BindableConvention.INSTANCE), convert(project.getInput(), project.getInput().getTraitSet() .replace(BindableConvention.INSTANCE)), project.getProjects(), project.getRowType()); } }
public void onMatch(RelOptRuleCall call) { final LogicalFilter filter = call.rel(0); final LogicalProject project = call.rel(1); final List<RexNode> newProjects = new ArrayList<>(project.getProjects()); newProjects.add(filter.getCondition()); final RelOptCluster cluster = filter.getCluster(); RelDataType newRowType = cluster.getTypeFactory().builder() .addAll(project.getRowType().getFieldList()) .add("condition", Util.last(newProjects).getType()) .build(); final RelNode newProject = project.copy(project.getTraitSet(), project.getInput(), newProjects, newRowType); final RexInputRef newCondition = cluster.getRexBuilder().makeInputRef(newProject, newProjects.size() - 1); call.transformTo(LogicalFilter.create(newProject, newCondition)); } }
public void onMatch(RelOptRuleCall call) { final LogicalFilter filter = call.rel(0); final LogicalProject project = call.rel(1); final List<RexNode> newProjects = new ArrayList<>(project.getProjects()); newProjects.add(filter.getCondition()); final RelOptCluster cluster = filter.getCluster(); RelDataType newRowType = cluster.getTypeFactory().builder() .addAll(project.getRowType().getFieldList()) .add("condition", Util.last(newProjects).getType()) .build(); final RelNode newProject = project.copy(project.getTraitSet(), project.getInput(), newProjects, newRowType); final RexInputRef newCondition = cluster.getRexBuilder().makeInputRef(newProject, newProjects.size() - 1); call.transformTo(LogicalFilter.create(newProject, newCondition)); } }
@Override public RelNode visit(LogicalProject project) { RelNode input = project.getInput().accept(this); RelDataType incomingRowType = input.getRowType(); List<RexNode> newProjects; RelDataTypeField modField = incomingRowType.getField(UPDATE_COLUMN, false, false); if (modField == null) { return project; } newProjects = FluentIterable.from(project.getProjects()) .append(new RexInputRef(modField.getIndex(), modField.getType())) .toList(); FieldInfoBuilder fieldInfoBuilder = new FieldInfoBuilder(project.getCluster().getTypeFactory()); for (RelDataTypeField field : project.getRowType().getFieldList()) { fieldInfoBuilder.add(field); } fieldInfoBuilder.add(UPDATE_COLUMN, modField.getType()); return new LogicalProject( project.getCluster(), project.getTraitSet(), input, newProjects, fieldInfoBuilder.build() ); } }
@Override public RelNode convert(final RelNode rel) { // KYLIN-3281 // OLAPProjectRule can't normal working with projectRel[input=sortRel] final LogicalProject project = (LogicalProject) rel; final RelNode convertChild = convert(project.getInput(), project.getInput().getTraitSet().replace(OLAPRel.CONVENTION)); final RelOptCluster cluster = convertChild.getCluster(); final RelTraitSet traitSet = cluster.traitSet().replace(OLAPRel.CONVENTION) .replaceIfs(RelCollationTraitDef.INSTANCE, new Supplier<List<RelCollation>>() { public List<RelCollation> get() { // CALCITE-88 return RelMdCollation.project(cluster.getMetadataQuery(), convertChild, project.getProjects()); } }); return new OLAPProjectRel(convertChild.getCluster(), traitSet, convertChild, project.getProjects(), project.getRowType()); } }
public void onMatch(RelOptRuleCall call) { LogicalProject rel = call.rel(0); RelNode rawInput = call.rel(1); RelNode input = convert(rawInput, PHYSICAL); if (subsetHack && input instanceof RelSubset) { RelSubset subset = (RelSubset) input; for (RelNode child : subset.getRels()) { // skip logical nodes if (child.getTraitSet().getTrait(ConventionTraitDef.INSTANCE) == Convention.NONE) { continue; } else { RelTraitSet outcome = child.getTraitSet().replace(PHYSICAL); call.transformTo( new PhysProj(rel.getCluster(), outcome, convert(child, outcome), rel.getChildExps(), rel.getRowType())); } } } else { call.transformTo( PhysProj.create(input, rel.getChildExps(), rel.getRowType())); } } }
public void onMatch(RelOptRuleCall call) { LogicalProject rel = call.rel(0); RelNode rawInput = call.rel(1); RelNode input = convert(rawInput, PHYSICAL); if (subsetHack && input instanceof RelSubset) { RelSubset subset = (RelSubset) input; for (RelNode child : subset.getRels()) { // skip logical nodes if (child.getTraitSet().getTrait(ConventionTraitDef.INSTANCE) == Convention.NONE) { continue; } else { RelTraitSet outcome = child.getTraitSet().replace(PHYSICAL); call.transformTo( new PhysProj(rel.getCluster(), outcome, convert(child, outcome), rel.getChildExps(), rel.getRowType())); } } } else { call.transformTo( PhysProj.create(input, rel.getChildExps(), rel.getRowType())); } } }