Search in sources :

Example 6 with Prel

use of org.apache.drill.exec.planner.physical.Prel in project drill by apache.

the class MemoryEstimationVisitor method findCost.

private double findCost(Prel prel, RelMetadataQuery mq) {
    DrillCostBase cost = (DrillCostBase) mq.getNonCumulativeCost(prel);
    double memory = cost.getMemory();
    for (Prel child : prel) {
        memory += findCost(child, mq);
    }
    return memory;
}
Also used : DrillCostBase(org.apache.drill.exec.planner.cost.DrillCostBase) Prel(org.apache.drill.exec.planner.physical.Prel)

Example 7 with Prel

use of org.apache.drill.exec.planner.physical.Prel in project drill by apache.

the class RewriteProjectToFlatten method visitPrel.

@Override
public Prel visitPrel(Prel prel, Object value) throws RelConversionException {
    List<RelNode> children = Lists.newArrayList();
    for (Prel child : prel) {
        child = child.accept(this, null);
        children.add(child);
    }
    return (Prel) prel.copy(prel.getTraitSet(), children);
}
Also used : RelNode(org.apache.calcite.rel.RelNode) Prel(org.apache.drill.exec.planner.physical.Prel) ProjectPrel(org.apache.drill.exec.planner.physical.ProjectPrel) FlattenPrel(org.apache.drill.exec.planner.physical.FlattenPrel)

Example 8 with Prel

use of org.apache.drill.exec.planner.physical.Prel in project drill by apache.

the class SelectionVectorPrelVisitor method visitPrel.

@Override
public Prel visitPrel(Prel prel, Void value) throws RuntimeException {
    SelectionVectorMode[] encodings = prel.getSupportedEncodings();
    List<RelNode> children = Lists.newArrayList();
    for (Prel child : prel) {
        child = child.accept(this, null);
        children.add(convert(encodings, child));
    }
    return (Prel) prel.copy(prel.getTraitSet(), children);
}
Also used : RelNode(org.apache.calcite.rel.RelNode) SelectionVectorMode(org.apache.drill.exec.record.BatchSchema.SelectionVectorMode) Prel(org.apache.drill.exec.planner.physical.Prel) SelectionVectorRemoverPrel(org.apache.drill.exec.planner.physical.SelectionVectorRemoverPrel)

Example 9 with Prel

use of org.apache.drill.exec.planner.physical.Prel in project drill by apache.

the class StarColumnConverter method visitPrel.

@Override
public Prel visitPrel(Prel prel, Void value) throws RuntimeException {
    // Require prefix rename : there exists other expression, in addition to a star column.
    if (// not set yet.
    !prefixedForStar && StarColumnHelper.containsStarColumn(prel.getRowType()) && prel.getRowType().getFieldNames().size() > 1) {
        prefixedForStar = true;
    }
    List<RelNode> children = Lists.newArrayList();
    for (Prel child : prel) {
        child = child.accept(this, null);
        children.add(child);
    }
    return (Prel) prel.copy(prel.getTraitSet(), children);
}
Also used : RelNode(org.apache.calcite.rel.RelNode) ScanPrel(org.apache.drill.exec.planner.physical.ScanPrel) Prel(org.apache.drill.exec.planner.physical.Prel) ProjectAllowDupPrel(org.apache.drill.exec.planner.physical.ProjectAllowDupPrel) ProjectPrel(org.apache.drill.exec.planner.physical.ProjectPrel) ScreenPrel(org.apache.drill.exec.planner.physical.ScreenPrel) WriterPrel(org.apache.drill.exec.planner.physical.WriterPrel)

Example 10 with Prel

use of org.apache.drill.exec.planner.physical.Prel in project drill by apache.

the class StarColumnConverter method visitProject.

@Override
public Prel visitProject(ProjectPrel prel, Void value) throws RuntimeException {
    ProjectPrel proj = (ProjectPrel) prel;
    // Require prefix rename : there exists other expression, in addition to a star column.
    if (// not set yet.
    !prefixedForStar && StarColumnHelper.containsStarColumnInProject(prel.getInput().getRowType(), proj.getProjects()) && prel.getRowType().getFieldNames().size() > 1) {
        prefixedForStar = true;
    }
    // For project, we need make sure that the project's field name is same as the input,
    // when the project expression is RexInPutRef, since we may insert a PAS which will
    // rename the projected fields.
    RelNode child = ((Prel) prel.getInput(0)).accept(this, null);
    List<String> fieldNames = Lists.newArrayList();
    for (Pair<String, RexNode> pair : Pair.zip(prel.getRowType().getFieldNames(), proj.getProjects())) {
        if (pair.right instanceof RexInputRef) {
            String name = child.getRowType().getFieldNames().get(((RexInputRef) pair.right).getIndex());
            fieldNames.add(name);
        } else {
            fieldNames.add(pair.left);
        }
    }
    // Make sure the field names are unique : no allow of duplicate field names in a rowType.
    fieldNames = makeUniqueNames(fieldNames);
    RelDataType rowType = RexUtil.createStructType(prel.getCluster().getTypeFactory(), proj.getProjects(), fieldNames);
    ProjectPrel newProj = (ProjectPrel) proj.copy(proj.getTraitSet(), child, proj.getProjects(), rowType);
    if (ProjectRemoveRule.isTrivial(newProj)) {
        return (Prel) child;
    } else {
        return newProj;
    }
}
Also used : ProjectPrel(org.apache.drill.exec.planner.physical.ProjectPrel) RelNode(org.apache.calcite.rel.RelNode) RexInputRef(org.apache.calcite.rex.RexInputRef) RelDataType(org.apache.calcite.rel.type.RelDataType) ScanPrel(org.apache.drill.exec.planner.physical.ScanPrel) Prel(org.apache.drill.exec.planner.physical.Prel) ProjectAllowDupPrel(org.apache.drill.exec.planner.physical.ProjectAllowDupPrel) ProjectPrel(org.apache.drill.exec.planner.physical.ProjectPrel) ScreenPrel(org.apache.drill.exec.planner.physical.ScreenPrel) WriterPrel(org.apache.drill.exec.planner.physical.WriterPrel) RexNode(org.apache.calcite.rex.RexNode)

Aggregations

Prel (org.apache.drill.exec.planner.physical.Prel)27 RelNode (org.apache.calcite.rel.RelNode)20 ProjectPrel (org.apache.drill.exec.planner.physical.ProjectPrel)13 ScreenPrel (org.apache.drill.exec.planner.physical.ScreenPrel)9 WriterPrel (org.apache.drill.exec.planner.physical.WriterPrel)8 ExchangePrel (org.apache.drill.exec.planner.physical.ExchangePrel)7 ScanPrel (org.apache.drill.exec.planner.physical.ScanPrel)7 RelDataType (org.apache.calcite.rel.type.RelDataType)6 RexNode (org.apache.calcite.rex.RexNode)5 ProjectAllowDupPrel (org.apache.drill.exec.planner.physical.ProjectAllowDupPrel)5 JoinPrel (org.apache.drill.exec.planner.physical.JoinPrel)4 ArrayList (java.util.ArrayList)3 RelDataTypeField (org.apache.calcite.rel.type.RelDataTypeField)3 RexBuilder (org.apache.calcite.rex.RexBuilder)3 PhysicalPlan (org.apache.drill.exec.physical.PhysicalPlan)3 PhysicalOperator (org.apache.drill.exec.physical.base.PhysicalOperator)3 DrillRel (org.apache.drill.exec.planner.logical.DrillRel)3 RelRecordType (org.apache.calcite.rel.type.RelRecordType)2 FlattenPrel (org.apache.drill.exec.planner.physical.FlattenPrel)2 UnionPrel (org.apache.drill.exec.planner.physical.UnionPrel)2