Package org.apache.calcite.rel
Class RelCollationTraitDef
Definition of the ordering trait.
Ordering is a physical property (i.e. a trait) because it can be changed
without loss of information. The converter to do this is the
Sort operator.
Unlike other current traits, a RelNode can have more than one
value of this trait simultaneously. For example,
LogicalTableScan(table=TIME_BY_DAY) might be sorted by
{the_year, the_month, the_date} and also by
{time_id}. We have to allow a RelNode to belong to more than
one RelSubset (these RelSubsets are always in the same set).
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionbooleancanConvert(RelOptPlanner planner, RelCollation fromTrait, RelCollation toTrait) Tests whether the given RelTrait can be converted to another RelTrait.@Nullable RelNodeconvert(RelOptPlanner planner, RelNode rel, RelCollation toCollation, boolean allowInfiniteCostConverters) Converts the given RelNode to the given RelTrait.Returns the default member of this trait.Returns a simple name for this RelTraitDef (for use inRelNode.explain(org.apache.calcite.rel.RelWriter)).Returns the specific RelTrait type associated with this RelTraitDef.booleanmultiple()Whether a relational expression may possess more than one instance of this trait simultaneously.Methods inherited from class org.apache.calcite.plan.RelTraitDef
canonize, deregisterConverterRule, registerConverterRule
-
Field Details
-
INSTANCE
-
-
Method Details
-
getTraitClass
Description copied from class:RelTraitDefReturns the specific RelTrait type associated with this RelTraitDef.- Specified by:
getTraitClassin classRelTraitDef<RelCollation>
-
getSimpleName
Description copied from class:RelTraitDefReturns a simple name for this RelTraitDef (for use inRelNode.explain(org.apache.calcite.rel.RelWriter)).- Specified by:
getSimpleNamein classRelTraitDef<RelCollation>
-
multiple
public boolean multiple()Description copied from class:RelTraitDefWhether a relational expression may possess more than one instance of this trait simultaneously.A subset has only one instance of a trait.
- Overrides:
multiplein classRelTraitDef<RelCollation>
-
getDefault
Description copied from class:RelTraitDefReturns the default member of this trait.- Specified by:
getDefaultin classRelTraitDef<RelCollation>
-
convert
public @Nullable RelNode convert(RelOptPlanner planner, RelNode rel, RelCollation toCollation, boolean allowInfiniteCostConverters) Description copied from class:RelTraitDefConverts the given RelNode to the given RelTrait.- Specified by:
convertin classRelTraitDef<RelCollation>- Parameters:
planner- the planner requesting the conversionrel- RelNode to converttoCollation- RelTrait to convert toallowInfiniteCostConverters- flag indicating whether infinite cost converters are allowed- Returns:
- a converted RelNode or null if conversion is not possible
-
canConvert
Description copied from class:RelTraitDefTests whether the given RelTrait can be converted to another RelTrait.- Specified by:
canConvertin classRelTraitDef<RelCollation>- Parameters:
planner- the planner requesting the conversion testfromTrait- the RelTrait to convert fromtoTrait- the RelTrait to convert to- Returns:
- true if fromTrait can be converted to toTrait
-