Class ProjectPrel

java.lang.Object
org.apache.calcite.rel.AbstractRelNode
org.apache.calcite.rel.SingleRel
org.apache.calcite.rel.core.Project
org.apache.drill.exec.planner.common.DrillProjectRelBase
org.apache.drill.exec.planner.physical.ProjectPrel
All Implemented Interfaces:
Cloneable, Iterable<Prel>, org.apache.calcite.plan.RelOptNode, org.apache.calcite.rel.hint.Hintable, org.apache.calcite.rel.RelNode, DrillRelNode, Prel
Direct Known Subclasses:
ProjectAllowDupPrel

public class ProjectPrel extends DrillProjectRelBase implements Prel
A physical Prel node for Project operator.
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.apache.calcite.rel.core.Project

    org.apache.calcite.rel.core.Project.Flags

    Nested classes/interfaces inherited from interface org.apache.calcite.rel.RelNode

    org.apache.calcite.rel.RelNode.Context
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final boolean
     

    Fields inherited from class org.apache.calcite.rel.core.Project

    exps, hints, variablesSet

    Fields inherited from class org.apache.calcite.rel.SingleRel

    input

    Fields inherited from class org.apache.calcite.rel.AbstractRelNode

    digest, id, rowType, traitSet

    Fields inherited from interface org.apache.drill.exec.planner.physical.Prel

    DRILL_PHYSICAL
  • Constructor Summary

    Constructors
    Constructor
    Description
    ProjectPrel(org.apache.calcite.plan.RelOptCluster cluster, org.apache.calcite.plan.RelTraitSet traits, org.apache.calcite.rel.RelNode child, List<org.apache.calcite.rex.RexNode> exps, org.apache.calcite.rel.type.RelDataType rowType)
     
    ProjectPrel(org.apache.calcite.plan.RelOptCluster cluster, org.apache.calcite.plan.RelTraitSet traits, org.apache.calcite.rel.RelNode child, List<org.apache.calcite.rex.RexNode> exps, org.apache.calcite.rel.type.RelDataType rowType, boolean outputProj)
    Constructor for ProjectPrel.
  • Method Summary

    Modifier and Type
    Method
    Description
    <T, X, E extends Throwable>
    T
    accept(PrelVisitor<T,X,E> logicalVisitor, X value)
     
    org.apache.calcite.rel.core.Project
    copy(org.apache.calcite.plan.RelTraitSet traitSet, org.apache.calcite.rel.RelNode input, List<org.apache.calcite.rex.RexNode> exps, org.apache.calcite.rel.type.RelDataType rowType)
     
    A Prel's own SelectionVector mode - i.e whether it generates an SV2, SV4 or None
     
    Supported 'encodings' of a Prel indicates what are the acceptable modes of SelectionVector of its child Prel
     
    boolean
    Whether this Project requires a final column re-ordering.
    prepareForLateralUnnestPipeline(List<org.apache.calcite.rel.RelNode> children)
    If the operator is in Lateral/Unnest pipeline, then it generates a new operator which knows how to process the rows accordingly during execution.

    Methods inherited from class org.apache.drill.exec.planner.common.DrillProjectRelBase

    computeSelfCost, getProjectExpressions

    Methods inherited from class org.apache.calcite.rel.core.Project

    accept, containsOver, copy, copy, deepEquals0, deepHashCode0, explainTerms, getFlags, getHints, getMapping, getMapping, getNamedProjects, getPartialMapping, getPermutation, getPermutation, getProjects, getVariablesSet, isBoxed, isMapping, isValid

    Methods inherited from class org.apache.calcite.rel.SingleRel

    childrenAccept, deriveRowType, estimateRowCount, getInput, getInputs, replaceInput

    Methods inherited from class org.apache.calcite.rel.AbstractRelNode

    accept, collectVariablesSet, collectVariablesUsed, deepEquals, deepHashCode, equals, explain, getCluster, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getRelDigest, getRelTypeName, getRowType, getTable, getTraitSet, hashCode, isEnforcer, metadata, onRegister, recomputeDigest, register, sole, toString

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface org.apache.calcite.rel.hint.Hintable

    attachHints, withHints

    Methods inherited from interface java.lang.Iterable

    forEach, spliterator

    Methods inherited from interface org.apache.calcite.rel.RelNode

    accept, accept, childrenAccept, collectVariablesSet, collectVariablesUsed, computeSelfCost, copy, deepEquals, deepHashCode, estimateRowCount, explain, explain, fieldIsNullable, getConvention, getCorrelVariable, getDigest, getExpectedInputRowType, getInput, getInputs, getRelDigest, getRelTypeName, getRowType, getTable, getVariablesSet, isEnforcer, isValid, metadata, onRegister, recomputeDigest, register, replaceInput

    Methods inherited from interface org.apache.calcite.plan.RelOptNode

    getCluster, getDescription, getId, getTraitSet
  • Field Details

    • outputProj

      protected final boolean outputProj
  • Constructor Details

    • ProjectPrel

      public ProjectPrel(org.apache.calcite.plan.RelOptCluster cluster, org.apache.calcite.plan.RelTraitSet traits, org.apache.calcite.rel.RelNode child, List<org.apache.calcite.rex.RexNode> exps, org.apache.calcite.rel.type.RelDataType rowType)
    • ProjectPrel

      public ProjectPrel(org.apache.calcite.plan.RelOptCluster cluster, org.apache.calcite.plan.RelTraitSet traits, org.apache.calcite.rel.RelNode child, List<org.apache.calcite.rex.RexNode> exps, org.apache.calcite.rel.type.RelDataType rowType, boolean outputProj)
      Constructor for ProjectPrel.
      Parameters:
      cluster -
      traits - traits of ProjectPrel node
      child - input
      exps - list of RexNode, representing expressions of projection.
      rowType - output rowType of projection expression.
      outputProj - true if ProjectPrel is inserted by TopProjectVisitor Such top Project operator does the following processing, before the result was presented to Screen/Writer
      1. ensure final output field names are preserved
      2. handle cases where input does not return any batch (a fast NONE) (see ProjectRecordBatch.handleNullInput() method)
      3. handle cases where expressions in upstream operator were evaluated to NULL type
      4. (Null type will be converted into Nullable-INT)
      false otherwise.
  • Method Details

    • copy

      public org.apache.calcite.rel.core.Project copy(org.apache.calcite.plan.RelTraitSet traitSet, org.apache.calcite.rel.RelNode input, List<org.apache.calcite.rex.RexNode> exps, org.apache.calcite.rel.type.RelDataType rowType)
      Specified by:
      copy in class org.apache.calcite.rel.core.Project
    • getPhysicalOperator

      public PhysicalOperator getPhysicalOperator(PhysicalPlanCreator creator) throws IOException
      Specified by:
      getPhysicalOperator in interface Prel
      Throws:
      IOException
    • iterator

      public Iterator<Prel> iterator()
      Specified by:
      iterator in interface Iterable<Prel>
    • accept

      public <T, X, E extends Throwable> T accept(PrelVisitor<T,X,E> logicalVisitor, X value) throws E
      Specified by:
      accept in interface Prel
      Throws:
      E extends Throwable
    • getSupportedEncodings

      public BatchSchema.SelectionVectorMode[] getSupportedEncodings()
      Description copied from interface: Prel
      Supported 'encodings' of a Prel indicates what are the acceptable modes of SelectionVector of its child Prel
      Specified by:
      getSupportedEncodings in interface Prel
    • getEncoding

      public BatchSchema.SelectionVectorMode getEncoding()
      Description copied from interface: Prel
      A Prel's own SelectionVector mode - i.e whether it generates an SV2, SV4 or None
      Specified by:
      getEncoding in interface Prel
    • needsFinalColumnReordering

      public boolean needsFinalColumnReordering()
      Whether this Project requires a final column re-ordering. Returns False for all cases except when convert_fromjson function is present. For convert_fromjson function, the Project operator at run-time produces an output schema with convert_fromjson expr appended to the end of the schema. We need a final column re-ordering to ensure the correct column order.
      Specified by:
      needsFinalColumnReordering in interface Prel
    • prepareForLateralUnnestPipeline

      public Prel prepareForLateralUnnestPipeline(List<org.apache.calcite.rel.RelNode> children)
      Description copied from interface: Prel
      If the operator is in Lateral/Unnest pipeline, then it generates a new operator which knows how to process the rows accordingly during execution. eg: TopNPrel -> SortPrel and LimitPrel Other operators like FilterPrel, ProjectPrel etc will add an implicit row id to the output.
      Specified by:
      prepareForLateralUnnestPipeline in interface Prel