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
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 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
ConstructorDescriptionProjectPrel
(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 TypeMethodDescription<T,
X, E extends Throwable>
Taccept
(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 NonegetPhysicalOperator
(PhysicalPlanCreator creator) Supported 'encodings' of a Prel indicates what are the acceptable modes of SelectionVector of its child Preliterator()
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 nodechild
- inputexps
- list of RexNode, representing expressions of projection.rowType
- output rowType of projection expression.outputProj
- true if ProjectPrel is inserted byTopProjectVisitor
Such top Project operator does the following processing, before the result was presented to Screen/Writer- ensure final output field names are preserved
- handle cases where input does not return any batch (a fast NONE) (see ProjectRecordBatch.handleNullInput() method)
- handle cases where expressions in upstream operator were evaluated to NULL type (Null type will be converted into Nullable-INT)
-
-
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 classorg.apache.calcite.rel.core.Project
-
getPhysicalOperator
- Specified by:
getPhysicalOperator
in interfacePrel
- Throws:
IOException
-
iterator
-
accept
-
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 interfacePrel
-
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 interfacePrel
-
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 interfacePrel
-
prepareForLateralUnnestPipeline
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 interfacePrel
-