Package org.apache.calcite.rel
Interface RelDistribution
- All Superinterfaces:
Comparable<RelMultipleTrait>
,RelMultipleTrait
,RelTrait
Description of the physical distribution of a relational expression.
TBD:
- Can we shorten
RelDistribution.Type.HASH_DISTRIBUTED
to HASH, etc. - Do we need
RelDistributions
.DEFAULT? RelDistributionTraitDef.convert(org.apache.calcite.plan.RelOptPlanner, org.apache.calcite.rel.RelNode, org.apache.calcite.rel.RelDistribution, boolean)
does not create specific physical operators as it does in Drill. Drill will need to create rules; or we could allow "converters" to be registered with the planner that are not trait-defs.
-
Nested Class Summary
-
Method Summary
Modifier and TypeMethodDescriptionapply
(Mappings.TargetMapping mapping) Applies mapping to this distribution trait.getKeys()
Returns the ordinals of the key columns.getType()
Returns the type of distribution.Methods inherited from interface java.lang.Comparable
compareTo
Methods inherited from interface org.apache.calcite.plan.RelMultipleTrait
isTop
-
Method Details
-
getType
RelDistribution.Type getType()Returns the type of distribution. -
getKeys
Returns the ordinals of the key columns.Order is important for some types (RANGE); other types (HASH) consider it unimportant but impose an arbitrary order; other types (BROADCAST, SINGLETON) never have keys.
-
apply
Applies mapping to this distribution trait.Mapping can change the distribution trait only if it depends on distribution keys.
For example if relation is HASH distributed by keys [0, 1], after applying a mapping (3, 2, 1, 0), the relation will have a distribution HASH(2,3) because distribution keys changed their ordinals.
If mapping eliminates one of the distribution keys, the
RelDistribution.Type.ANY
distribution will be returned.If distribution doesn't have keys (BROADCAST or SINGLETON), method will return the same distribution.
-