Class SingleMergeExchangePrel
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.ExchangePrel
org.apache.drill.exec.planner.physical.SingleMergeExchangePrel
- All Implemented Interfaces:
Cloneable,Iterable<Prel>,org.apache.calcite.plan.RelOptNode,org.apache.calcite.rel.RelNode,DrillRelNode,Prel
-
Nested Class Summary
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.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
ConstructorsConstructorDescriptionSingleMergeExchangePrel(org.apache.calcite.plan.RelOptCluster cluster, org.apache.calcite.plan.RelTraitSet traitSet, org.apache.calcite.rel.RelNode input, org.apache.calcite.rel.RelCollation collation) -
Method Summary
Modifier and TypeMethodDescriptionorg.apache.calcite.plan.RelOptCostcomputeSelfCost(org.apache.calcite.plan.RelOptPlanner planner, org.apache.calcite.rel.metadata.RelMetadataQuery mq) A SingleMergeExchange processes a total of M rows coming from N sorted input streams (from N senders) and merges them into a single output sorted stream.constructMuxPrel(Prel child, OptionManager options) This method creates a new OrderedMux exchange if mux operators are enabled.org.apache.calcite.rel.RelNodeorg.apache.calcite.rel.RelWriterexplainTerms(org.apache.calcite.rel.RelWriter pw) org.apache.calcite.rel.RelCollationA Prel's own SelectionVector mode - i.e whether it generates an SV2, SV4 or NonegetPhysicalOperator(PhysicalPlanCreator creator) Methods inherited from class org.apache.drill.exec.planner.physical.ExchangePrel
acceptMethods inherited from class org.apache.drill.exec.planner.physical.SinglePrel
getSupportedEncodings, 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, spliteratorMethods inherited from interface org.apache.drill.exec.planner.physical.Prel
prepareForLateralUnnestPipelineMethods 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
-
Constructor Details
-
SingleMergeExchangePrel
public SingleMergeExchangePrel(org.apache.calcite.plan.RelOptCluster cluster, org.apache.calcite.plan.RelTraitSet traitSet, org.apache.calcite.rel.RelNode input, org.apache.calcite.rel.RelCollation collation)
-
-
Method Details
-
computeSelfCost
public org.apache.calcite.plan.RelOptCost computeSelfCost(org.apache.calcite.plan.RelOptPlanner planner, org.apache.calcite.rel.metadata.RelMetadataQuery mq) A SingleMergeExchange processes a total of M rows coming from N sorted input streams (from N senders) and merges them into a single output sorted stream. For costing purposes we can assume each sender is sending M/N rows to a single receiver. (See DrillCostBase for symbol notations) C = CPU cost of SV remover for M/N rows + Network cost of sending M/N rows to 1 destination. So, C = (s * M/N) + (w * M/N) Cost of merging M rows coming from N senders = (M log2 N) * c Total cost = N * C + (M log2 N) * c- Specified by:
computeSelfCostin interfaceorg.apache.calcite.rel.RelNode- Overrides:
computeSelfCostin classorg.apache.calcite.rel.AbstractRelNode
-
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
- Throws:
IOException
-
constructMuxPrel
This method creates a new OrderedMux exchange if mux operators are enabled.- Overrides:
constructMuxPrelin classExchangePrel- Parameters:
child- input to the new muxPrel or new SingleMergeExchange node.options- options manager to check if mux is enabled.- Throws:
RuntimeException
-
explainTerms
public org.apache.calcite.rel.RelWriter explainTerms(org.apache.calcite.rel.RelWriter pw) - Overrides:
explainTermsin classorg.apache.calcite.rel.SingleRel
-
getCollation
public org.apache.calcite.rel.RelCollation getCollation() -
getEncoding
Description copied from interface:PrelA Prel's own SelectionVector mode - i.e whether it generates an SV2, SV4 or None
-