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.FlagsNested classes/interfaces inherited from interface org.apache.calcite.rel.RelNode
org.apache.calcite.rel.RelNode.Context -
Field Summary
FieldsFields inherited from class org.apache.calcite.rel.core.Project
exps, hints, variablesSetFields inherited from class org.apache.calcite.rel.SingleRel
inputFields inherited from class org.apache.calcite.rel.AbstractRelNode
digest, id, rowType, traitSetFields inherited from interface org.apache.drill.exec.planner.physical.Prel
DRILL_PHYSICAL -
Constructor Summary
ConstructorsConstructorDescriptionProjectPrel(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.Projectcopy(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()booleanWhether 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, getProjectExpressionsMethods 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, isValidMethods inherited from class org.apache.calcite.rel.SingleRel
childrenAccept, deriveRowType, estimateRowCount, getInput, getInputs, replaceInputMethods 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, toStringMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.calcite.rel.hint.Hintable
attachHints, withHintsMethods inherited from interface java.lang.Iterable
forEach, spliteratorMethods 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, replaceInputMethods 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 byTopProjectVisitorSuch 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:
copyin classorg.apache.calcite.rel.core.Project
-
getPhysicalOperator
- Specified by:
getPhysicalOperatorin interfacePrel- Throws:
IOException
-
iterator
-
accept
-
getSupportedEncodings
Description copied from interface:PrelSupported 'encodings' of a Prel indicates what are the acceptable modes of SelectionVector of its child Prel- Specified by:
getSupportedEncodingsin interfacePrel
-
getEncoding
Description copied from interface:PrelA Prel's own SelectionVector mode - i.e whether it generates an SV2, SV4 or None- Specified by:
getEncodingin 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:
needsFinalColumnReorderingin interfacePrel
-
prepareForLateralUnnestPipeline
Description copied from interface:PrelIf 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:
prepareForLateralUnnestPipelinein interfacePrel
-