@Override public boolean matches(RelOptRuleCall call) { try { final LogicalProject project = call.rel(0); for (RexNode node : project.getChildExps()) { if (!checkedExpressions.get(node)) { return false; } } return true; } catch (ExecutionException e) { throw new IllegalStateException("Failure while trying to evaluate pushdown.", e); } } }
@Override public RelNode visit(LogicalProject project) { List<RexNode> rexNodes = project.getChildExps(); RexNodeSyncopator syncopator = new RexNodeSyncopator(); for (RexNode node : rexNodes) { Map<RelNode, AbstractMap.SimpleEntry<String, RelOptTable>> map = node.accept(syncopator); if (map != null) { rootNodeSchemas.putAll(map); } } return project.getInput().accept(this); }
@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()); }
@Override public RelNode visit(LogicalProject project) { final List<RexNode> projExpr = Lists.newArrayList(); for(RexNode rexNode : project.getChildExps()) { projExpr.add(rexNode.accept(unwrappingExpressionVisitor)); boolean rewrite = false; for (RexNode rex : project.getChildExps()) { RexNode newExpr = rex; if (rex instanceof RexCall) {
for (RexNode rexNode : project.getChildExps()) { topProjExps.add(rexNode.accept(indexAdjustment));
for (RexNode rexNode : project.getChildExps()) { topProjExps.add(rexNode.accept(indexAdjustment));
for (RexNode rexNode : project.getChildExps()) { rexNode.accept(referenceFinder);
for (RexNode rexNode : project.getChildExps()) { rexNode.accept(referenceFinder);
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())); } } }