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
-
Method Summary
Modifier and TypeMethodDescriptionboolean
canConvert
(RelOptPlanner planner, RelCollation fromTrait, RelCollation toTrait) Tests whether the given RelTrait can be converted to another RelTrait.@Nullable RelNode
convert
(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.boolean
multiple()
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:RelTraitDef
Returns the specific RelTrait type associated with this RelTraitDef.- Specified by:
getTraitClass
in classRelTraitDef<RelCollation>
-
getSimpleName
Description copied from class:RelTraitDef
Returns a simple name for this RelTraitDef (for use inRelNode.explain(org.apache.calcite.rel.RelWriter)
).- Specified by:
getSimpleName
in classRelTraitDef<RelCollation>
-
multiple
public boolean multiple()Description copied from class:RelTraitDef
Whether a relational expression may possess more than one instance of this trait simultaneously.A subset has only one instance of a trait.
- Overrides:
multiple
in classRelTraitDef<RelCollation>
-
getDefault
Description copied from class:RelTraitDef
Returns the default member of this trait.- Specified by:
getDefault
in classRelTraitDef<RelCollation>
-
convert
public @Nullable RelNode convert(RelOptPlanner planner, RelNode rel, RelCollation toCollation, boolean allowInfiniteCostConverters) Description copied from class:RelTraitDef
Converts the given RelNode to the given RelTrait.- Specified by:
convert
in 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:RelTraitDef
Tests whether the given RelTrait can be converted to another RelTrait.- Specified by:
canConvert
in 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
-