@Override public Iterator<Prel> iterator() { return PrelUtil.iter(getInput()); }
@Override public Prel visitWriter(WriterPrel prel, Void value) throws RuntimeException { RelNode child = ((Prel) prel.getInput(0)).accept(this, null); if (prefixedForStar) { prefixedForWriter = true; // return insertProjUnderScreenOrWriter(prel, prel.getInput().getRowType(), child); return (Prel) prel.copy(prel.getTraitSet(), Collections.singletonList(child)); } else { return prel; } }
@Override public Prel visitWriter(WriterPrel prel, Void value) throws RuntimeException { Prel newChild = ((Prel) prel.getInput()).accept(this, null); return prel.copy(prel.getTraitSet(), Collections.singletonList( (RelNode) addTrivialOrderedProjectPrel(newChild, true))); }
@Override public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException { Prel child = (Prel) this.getInput(); PhysicalOperator g = getCreateTableEntry().getWriter(child.getPhysicalOperator(creator)); return creator.addMetadata(this, g); }
@Override public RelNode visit(final RelNode other) { if (other instanceof WriterPrel) { for (RelTrait trait : other.getTraitSet()) { if (trait instanceof DistributionTrait) { List<DistributionField> distributionFieldList = ((DistributionTrait) trait).getFields(); if (distributionFieldList.size() != 1) { continue; } int fieldId = distributionFieldList.get(0).getFieldId(); String fieldName = ((WriterPrel) other).getInput().getRowType().getFieldNames().get(fieldId); if ("position".equals(fieldName)) { hashDistributedWriter.set(true); } } } } return super.visit(other); } });
@Override public Prel visitWriter(WriterPrel initialPrel, Void value) throws RuntimeException { final WriterOptions options = initialPrel.getCreateTableEntry().getOptions(); final Prel initialInput = ((Prel) initialPrel.getInput()).accept(this, null);