Class EnumerableWindow
- java.lang.Object
-
- org.apache.calcite.rel.AbstractRelNode
-
- org.apache.calcite.rel.SingleRel
-
- org.apache.calcite.rel.core.Window
-
- org.apache.calcite.adapter.enumerable.EnumerableWindow
-
- All Implemented Interfaces:
java.lang.Cloneable
,EnumerableRel
,RelOptNode
,RelNode
public class EnumerableWindow extends Window implements EnumerableRel
Implementation ofWindow
inenumerable calling convention
.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
EnumerableWindow.WindowRelInputGetter
Implementation ofRexToLixTranslator.InputGetter
suitable for generating implementations of windowed aggregate functions.-
Nested classes/interfaces inherited from class org.apache.calcite.rel.core.Window
Window.Group, Window.RexWinAggCall
-
Nested classes/interfaces inherited from interface org.apache.calcite.adapter.enumerable.EnumerableRel
EnumerableRel.Prefer, EnumerableRel.Result
-
Nested classes/interfaces inherited from interface org.apache.calcite.rel.RelNode
RelNode.Context
-
-
Field Summary
-
Fields inherited from class org.apache.calcite.rel.AbstractRelNode
digest, id, rowType, traitSet
-
Fields inherited from interface org.apache.calcite.adapter.enumerable.EnumerableRel
FILTER_FACTORY, PROJECT_FACTORY
-
-
Constructor Summary
Constructors Constructor Description EnumerableWindow(RelOptCluster cluster, RelTraitSet traits, RelNode child, java.util.List<RexLiteral> constants, RelDataType rowType, java.util.List<Window.Group> groups)
Creates an EnumerableWindowRel.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description RelOptCost
computeSelfCost(RelOptPlanner planner, RelMetadataQuery mq)
Returns the cost of this plan (not including children).RelNode
copy(RelTraitSet traitSet, java.util.List<RelNode> inputs)
Creates a copy of this relational expression, perhaps changing traits and inputs.private void
declareAndResetState(JavaTypeFactory typeFactory, BlockBuilder builder, EnumerableRel.Result result, int windowIdx, java.util.List<AggImpState> aggs, PhysType outputPhysType, java.util.List<Expression> outputRow)
private java.util.function.Function<BlockBuilder,WinAggFrameResultContext>
getBlockBuilderWinAggFrameResultContextFunction(JavaTypeFactory typeFactory, SqlConformance conformance, EnumerableRel.Result result, java.util.List<Expression> translatedConstants, Expression comparator_, Expression rows_, ParameterExpression i_, Expression startX, Expression endX, Expression minX, Expression maxX, Expression hasRows, Expression frameRowCount, Expression partitionRowCount, DeclarationStatement jDecl, PhysType inputPhysType)
private Pair<Expression,Expression>
getPartitionIterator(BlockBuilder builder, Expression source_, PhysType inputPhysType, Window.Group group, Expression comparator_)
private Pair<Expression,Expression>
getRowCollationKey(BlockBuilder builder, PhysType inputPhysType, Window.Group group, int windowIdx)
EnumerableRel.Result
implement(EnumerableRelImplementor implementor, EnumerableRel.Prefer pref)
Creates a plan for this expression according to a calling convention.private void
implementAdd(java.util.List<AggImpState> aggs, BlockBuilder builder7, java.util.function.Function<BlockBuilder,WinAggFrameResultContext> frame, java.util.function.Function<AggImpState,java.util.List<RexNode>> rexArguments, DeclarationStatement jDecl)
private boolean
implementResult(java.util.List<AggImpState> aggs, BlockBuilder builder, java.util.function.Function<BlockBuilder,WinAggFrameResultContext> frame, java.util.function.Function<AggImpState,java.util.List<RexNode>> rexArguments, boolean cachedBlock)
private void
sampleOfTheGeneratedWindowedAggregate()
private Expression
translateBound(RexToLixTranslator translator, ParameterExpression i_, Expression row_, Expression min_, Expression max_, Expression rows_, Window.Group group, boolean lower, PhysType physType, Expression rowComparator, Expression keySelector, Expression keyComparator)
-
Methods inherited from class org.apache.calcite.rel.core.Window
explainTerms, getCollation, getConstants, getProjectOrdinals, 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, accept, collectVariablesSet, collectVariablesUsed, computeDigest, computeSelfCost, explain, getChildExps, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getQuery, getRelTypeName, getRows, getRowType, getTable, getTraitSet, getVariablesSet, getVariablesStopped, isDistinct, isKey, isValid, metadata, onRegister, recomputeDigest, register, sole, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.calcite.rel.RelNode
accept, accept, childrenAccept, collectVariablesSet, collectVariablesUsed, computeSelfCost, estimateRowCount, explain, getChildExps, getCollationList, getConvention, getCorrelVariable, getExpectedInputRowType, getInput, getInputs, getQuery, getRelTypeName, getRows, getRowType, getTable, getVariablesSet, getVariablesStopped, isDistinct, isKey, isValid, isValid, metadata, onRegister, recomputeDigest, register, replaceInput
-
Methods inherited from interface org.apache.calcite.plan.RelOptNode
getCluster, getDescription, getDigest, getId, getTraitSet
-
-
-
-
Constructor Detail
-
EnumerableWindow
EnumerableWindow(RelOptCluster cluster, RelTraitSet traits, RelNode child, java.util.List<RexLiteral> constants, RelDataType rowType, java.util.List<Window.Group> groups)
Creates an EnumerableWindowRel.
-
-
Method Detail
-
copy
public RelNode copy(RelTraitSet traitSet, java.util.List<RelNode> inputs)
Description copied from interface:RelNode
Creates a copy of this relational expression, perhaps changing traits and inputs.Sub-classes with other important attributes are encouraged to create variants of this method with more parameters.
- Specified by:
copy
in interfaceRelNode
- Overrides:
copy
in classAbstractRelNode
- Parameters:
traitSet
- Trait setinputs
- Inputs- Returns:
- Copy of this relational expression, substituting traits and inputs
-
computeSelfCost
public RelOptCost computeSelfCost(RelOptPlanner planner, RelMetadataQuery mq)
Description copied from interface:RelNode
Returns the cost of this plan (not including children). The base implementation throws an error; derived classes should override.NOTE jvs 29-Mar-2006: Don't call this method directly. Instead, use
RelMetadataQuery.getNonCumulativeCost(org.apache.calcite.rel.RelNode)
, which gives plugins a chance to override the rel's default ideas about cost.- Specified by:
computeSelfCost
in interfaceRelNode
- Overrides:
computeSelfCost
in classWindow
- Parameters:
planner
- Planner for cost calculationmq
- Metadata query- Returns:
- Cost of this plan (not including children)
-
sampleOfTheGeneratedWindowedAggregate
private void sampleOfTheGeneratedWindowedAggregate()
-
implement
public EnumerableRel.Result implement(EnumerableRelImplementor implementor, EnumerableRel.Prefer pref)
Description copied from interface:EnumerableRel
Creates a plan for this expression according to a calling convention.- Specified by:
implement
in interfaceEnumerableRel
- Parameters:
implementor
- Implementorpref
- Preferred representation for rows in result expression- Returns:
- Plan for this expression according to a calling convention
-
getBlockBuilderWinAggFrameResultContextFunction
private java.util.function.Function<BlockBuilder,WinAggFrameResultContext> getBlockBuilderWinAggFrameResultContextFunction(JavaTypeFactory typeFactory, SqlConformance conformance, EnumerableRel.Result result, java.util.List<Expression> translatedConstants, Expression comparator_, Expression rows_, ParameterExpression i_, Expression startX, Expression endX, Expression minX, Expression maxX, Expression hasRows, Expression frameRowCount, Expression partitionRowCount, DeclarationStatement jDecl, PhysType inputPhysType)
-
getPartitionIterator
private Pair<Expression,Expression> getPartitionIterator(BlockBuilder builder, Expression source_, PhysType inputPhysType, Window.Group group, Expression comparator_)
-
getRowCollationKey
private Pair<Expression,Expression> getRowCollationKey(BlockBuilder builder, PhysType inputPhysType, Window.Group group, int windowIdx)
-
declareAndResetState
private void declareAndResetState(JavaTypeFactory typeFactory, BlockBuilder builder, EnumerableRel.Result result, int windowIdx, java.util.List<AggImpState> aggs, PhysType outputPhysType, java.util.List<Expression> outputRow)
-
implementAdd
private void implementAdd(java.util.List<AggImpState> aggs, BlockBuilder builder7, java.util.function.Function<BlockBuilder,WinAggFrameResultContext> frame, java.util.function.Function<AggImpState,java.util.List<RexNode>> rexArguments, DeclarationStatement jDecl)
-
implementResult
private boolean implementResult(java.util.List<AggImpState> aggs, BlockBuilder builder, java.util.function.Function<BlockBuilder,WinAggFrameResultContext> frame, java.util.function.Function<AggImpState,java.util.List<RexNode>> rexArguments, boolean cachedBlock)
-
translateBound
private Expression translateBound(RexToLixTranslator translator, ParameterExpression i_, Expression row_, Expression min_, Expression max_, Expression rows_, Window.Group group, boolean lower, PhysType physType, Expression rowComparator, Expression keySelector, Expression keyComparator)
-
-