Class TopNPrel
java.lang.Object
org.apache.calcite.rel.AbstractRelNode
org.apache.calcite.rel.SingleRel
org.apache.drill.exec.planner.physical.SinglePrel
org.apache.drill.exec.planner.physical.TopNPrel
- All Implemented Interfaces:
Cloneable,Iterable<Prel>,org.apache.calcite.plan.RelOptNode,org.apache.calcite.rel.RelNode,DrillRelNode,OrderedRel,Prel
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.calcite.rel.RelNode
org.apache.calcite.rel.RelNode.Context -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final org.apache.calcite.rel.RelCollationprotected intFields 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
ConstructorsConstructorDescriptionTopNPrel(org.apache.calcite.plan.RelOptCluster cluster, org.apache.calcite.plan.RelTraitSet traitSet, org.apache.calcite.rel.RelNode child, int limit, org.apache.calcite.rel.RelCollation collation) -
Method Summary
Modifier and TypeMethodDescriptionbooleanA method to return if this relational node can be dropped during optimization process.org.apache.calcite.plan.RelOptCostcomputeSelfCost(org.apache.calcite.plan.RelOptPlanner planner, org.apache.calcite.rel.metadata.RelMetadataQuery mq) Cost of doing Top-N is proportional to M log N where M is the total number of input rows and N is the limit for Top-N.org.apache.calcite.rel.RelNodeorg.apache.calcite.rel.RelWriterexplainTerms(org.apache.calcite.rel.RelWriter pw) org.apache.calcite.rel.RelCollationA method to return ordering columns of the result.A Prel's own SelectionVector mode - i.e whether it generates an SV2, SV4 or Noneorg.apache.calcite.rex.RexNodegetFetch()Fetch value represented in RexNode.intgetLimit()org.apache.calcite.rex.RexNodeOffset value represented in RexNode.getPhysicalOperator(PhysicalPlanCreator creator) Supported 'encodings' of a Prel indicates what are the acceptable modes of SelectionVector of its child PrelprepareForLateralUnnestPipeline(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.physical.SinglePrel
accept, iterator, needsFinalColumnReorderingMethods inherited from class org.apache.calcite.rel.SingleRel
childrenAccept, deriveRowType, estimateRowCount, getInput, getInputs, replaceInputMethods inherited from class org.apache.calcite.rel.AbstractRelNode
accept, accept, collectVariablesSet, collectVariablesUsed, deepEquals, deepHashCode, equals, explain, getCluster, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getRelDigest, getRelTypeName, getRowType, getTable, getTraitSet, getVariablesSet, hashCode, isEnforcer, isValid, metadata, onRegister, recomputeDigest, register, sole, toStringMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, iterator, spliteratorMethods inherited from interface org.apache.drill.exec.planner.physical.Prel
accept, needsFinalColumnReorderingMethods inherited from interface org.apache.calcite.rel.RelNode
accept, accept, childrenAccept, collectVariablesSet, collectVariablesUsed, 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
-
limit
protected int limit -
collation
protected final org.apache.calcite.rel.RelCollation collation
-
-
Constructor Details
-
TopNPrel
public TopNPrel(org.apache.calcite.plan.RelOptCluster cluster, org.apache.calcite.plan.RelTraitSet traitSet, org.apache.calcite.rel.RelNode child, int limit, org.apache.calcite.rel.RelCollation collation)
-
-
Method Details
-
copy
public org.apache.calcite.rel.RelNode copy(org.apache.calcite.plan.RelTraitSet traitSet, List<org.apache.calcite.rel.RelNode> inputs) - Specified by:
copyin interfaceorg.apache.calcite.rel.RelNode- Overrides:
copyin classorg.apache.calcite.rel.AbstractRelNode
-
getPhysicalOperator
- Specified by:
getPhysicalOperatorin interfacePrel- Throws:
IOException
-
getCollation
public org.apache.calcite.rel.RelCollation getCollation()Description copied from interface:OrderedRelA method to return ordering columns of the result.- Specified by:
getCollationin interfaceOrderedRel- Returns:
- Collation order of the output.
-
getOffset
public org.apache.calcite.rex.RexNode getOffset()Description copied from interface:OrderedRelOffset value represented in RexNode.- Specified by:
getOffsetin interfaceOrderedRel- Returns:
- offset.
-
getFetch
public org.apache.calcite.rex.RexNode getFetch()Description copied from interface:OrderedRelFetch value represented in RexNode.- Specified by:
getFetchin interfaceOrderedRel- Returns:
- fetch
-
canBeDropped
public boolean canBeDropped()Description copied from interface:OrderedRelA method to return if this relational node can be dropped during optimization process.- Specified by:
canBeDroppedin interfaceOrderedRel- Returns:
- true if this node can be dropped, false otherwise.
-
computeSelfCost
public org.apache.calcite.plan.RelOptCost computeSelfCost(org.apache.calcite.plan.RelOptPlanner planner, org.apache.calcite.rel.metadata.RelMetadataQuery mq) Cost of doing Top-N is proportional to M log N where M is the total number of input rows and N is the limit for Top-N. This makes Top-N preferable to Sort since cost of full Sort is proportional to M log M .- Specified by:
computeSelfCostin interfaceorg.apache.calcite.rel.RelNode- Overrides:
computeSelfCostin classorg.apache.calcite.rel.AbstractRelNode
-
explainTerms
public org.apache.calcite.rel.RelWriter explainTerms(org.apache.calcite.rel.RelWriter pw) - Overrides:
explainTermsin classorg.apache.calcite.rel.SingleRel
-
getLimit
public int getLimit() -
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- Overrides:
getSupportedEncodingsin classSinglePrel
-
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
-
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
-