@Override public ScreenPrel copy(RelTraitSet traitSet, List<RelNode> inputs) { return new ScreenPrel(getCluster(), traitSet, sole(inputs)); }
@Override public Prel visitScreen(ScreenPrel prel, Void value) throws RuntimeException { return prel.copy(prel.getTraitSet(), Collections.singletonList((RelNode)new ComplexToJsonPrel((Prel)prel.getInput()))); }
public void addScreen(ScreenPrel screenPrel) { maxWidth = 1; distributionAffinity = screenPrel.getDistributionAffinity(); }
private Prel newScreen(Prel child) { return new ScreenPrel(cluster, traits, child); }
@Override public Iterator<Prel> iterator() { return PrelUtil.iter(getInput()); }
private Prel newScreen(Prel child) { return new ScreenPrel(cluster, traits, child); }
@Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { Prel child = (Prel) this.getInput(); PhysicalOperator childPOP = child.getPhysicalOperator(creator); Screen s = new Screen(childPOP); return creator.addMetadata(this, s); }
@Override public Prel visitScreen(ScreenPrel prel, MajorFragmentStat s) throws RuntimeException { s.addScreen(prel); RelNode child = ((Prel)prel.getInput()).accept(this, s); return (Prel) prel.copy(prel.getTraitSet(), Collections.singletonList(child)); }
@Override public void onMatch(RelOptRuleCall call) { final ScreenRelBase screen = (ScreenRelBase) call.rel(0); final RelNode input = call.rel(1); final RelTraitSet traits = input.getTraitSet().plus(Prel.PHYSICAL).plus(DistributionTrait.SINGLETON); final RelNode convertedInput = convert(input, traits); ScreenRelBase newScreen = new ScreenPrel(screen.getCluster(), screen.getTraitSet().plus(Prel.PHYSICAL).plus(DistributionTrait.SINGLETON), convertedInput); call.transformTo(newScreen); }
@Override public Prel visitScreen(ScreenPrel prel, Void value) throws RuntimeException { Prel newChild = ((Prel) prel.getInput()).accept(this, value); return prel.copy(prel.getTraitSet(), Collections.singletonList( (RelNode) addTrivialOrderedProjectPrel(newChild, true))); }
@Override public Prel visitScreen(ScreenPrel prel, Void value) throws RuntimeException { Prel child = ((Prel) prel.getInput(0)).accept(this, null); if (prefixedForStar) { if (!prefixedForWriter) { // Prefix is added for SELECT only, not for CTAS writer. return insertProjUnderScreenOrWriter(prel, prel.getInput().getRowType(), child); } else { // Prefix is added under CTAS Writer. We need create a new Screen with the converted child. return (Prel) prel.copy(prel.getTraitSet(), Collections.<RelNode>singletonList(child)); } } else { // No prefix is return prel; } }