Package org.apache.calcite.rel.metadata
Class RelMdFunctionalDependency
java.lang.Object
org.apache.calcite.rel.metadata.RelMdFunctionalDependency
- All Implemented Interfaces:
MetadataHandler<BuiltInMetadata.FunctionalDependency>
public class RelMdFunctionalDependency
extends Object
implements MetadataHandler<BuiltInMetadata.FunctionalDependency>
Default implementation of
BuiltInMetadata.FunctionalDependency metadata handler
for relational algebra nodes. Uses ArrowSet to represent functional dependencies.
Core functionalities:
- Detects functional dependencies (
determines(org.apache.calcite.rel.RelNode, org.apache.calcite.rel.metadata.RelMetadataQuery, int, int),determinesSet(org.apache.calcite.rel.RelNode, org.apache.calcite.rel.metadata.RelMetadataQuery, org.apache.calcite.util.ImmutableBitSet, org.apache.calcite.util.ImmutableBitSet)) - Computes all columns functionally determined by a given set (
dependents(org.apache.calcite.rel.RelNode, org.apache.calcite.rel.metadata.RelMetadataQuery, org.apache.calcite.util.ImmutableBitSet)) - Finds minimal determinant sets (
determinants(org.apache.calcite.rel.RelNode, org.apache.calcite.rel.metadata.RelMetadataQuery, org.apache.calcite.util.ImmutableBitSet))
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondependents(RelNode rel, RelMetadataQuery mq, ImmutableBitSet ordinals) Returns all columns functionally determined by the given columns.determinants(RelNode rel, RelMetadataQuery mq, ImmutableBitSet ordinals) Returns all minimal determinant sets for the given columns.@Nullable Booleandetermines(RelNode rel, RelMetadataQuery mq, int determinant, int dependent) Returns whether one column functionally determines another.determinesSet(RelNode rel, RelMetadataQuery mq, ImmutableBitSet determinants, ImmutableBitSet dependents) Returns whether a set of columns functionally determines another set.getDef()getFDs(RelNode rel, RelMetadataQuery mq) Returns all functional dependencies for the given relational node.
-
Field Details
-
SOURCE
-
-
Constructor Details
-
RelMdFunctionalDependency
protected RelMdFunctionalDependency()
-
-
Method Details
-
getDef
- Specified by:
getDefin interfaceMetadataHandler<BuiltInMetadata.FunctionalDependency>
-
determines
public @Nullable Boolean determines(RelNode rel, RelMetadataQuery mq, int determinant, int dependent) Returns whether one column functionally determines another.- Parameters:
rel- Relational nodemq- Metadata querydeterminant- Determinant column indexdependent- Dependent column index- Returns:
- true if determinant determines dependent
-
determinesSet
public Boolean determinesSet(RelNode rel, RelMetadataQuery mq, ImmutableBitSet determinants, ImmutableBitSet dependents) Returns whether a set of columns functionally determines another set.- Parameters:
rel- Relational nodemq- Metadata querydeterminants- Indices of determinant columnsdependents- Indices of dependent columns- Returns:
- true if determinants determine dependents
-
dependents
Returns all columns functionally determined by the given columns.- Parameters:
rel- Relational nodemq- Metadata queryordinals- Indices of input columns- Returns:
- Indices of determined columns
-
determinants
public Set<ImmutableBitSet> determinants(RelNode rel, RelMetadataQuery mq, ImmutableBitSet ordinals) Returns all minimal determinant sets for the given columns.- Parameters:
rel- Relational nodemq- Metadata queryordinals- Indices of columns- Returns:
- Minimal determinant sets
-
getFDs
Returns all functional dependencies for the given relational node.
-