Package org.apache.calcite.rel.metadata
Class RelMdColumnUniqueness
- java.lang.Object
-
- org.apache.calcite.rel.metadata.RelMdColumnUniqueness
-
- All Implemented Interfaces:
MetadataHandler<BuiltInMetadata.ColumnUniqueness>
public class RelMdColumnUniqueness extends java.lang.Object implements MetadataHandler<BuiltInMetadata.ColumnUniqueness>
RelMdColumnUniqueness supplies a default implementation ofRelMetadataQuery.areColumnsUnique(org.apache.calcite.rel.RelNode, org.apache.calcite.util.ImmutableBitSet)
for the standard logical algebra.
-
-
Field Summary
Fields Modifier and Type Field Description static RelMetadataProvider
SOURCE
-
Constructor Summary
Constructors Modifier Constructor Description private
RelMdColumnUniqueness()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Boolean
areColumnsUnique(HepRelVertex rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(RelSubset rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(Converter rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(Aggregate rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(Correlate rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(Exchange rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(Filter rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(Intersect rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(Join rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(Minus rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(Project rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(SemiJoin rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(SetOp rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(Sort rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(TableScan rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(Values rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
java.lang.Boolean
areColumnsUnique(RelNode rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
Catch-all implementation forBuiltInMetadata.ColumnUniqueness.areColumnsUnique(ImmutableBitSet, boolean)
, invoked using reflection, for any relational expression not handled by a more specific method.MetadataDef<BuiltInMetadata.ColumnUniqueness>
getDef()
private boolean
simplyProjects(RelNode rel, ImmutableBitSet columns)
private static Pair<ImmutableBitSet,ImmutableBitSet>
splitLeftAndRightColumns(int leftCount, ImmutableBitSet columns)
Splits a column set between left and right sets.
-
-
-
Field Detail
-
SOURCE
public static final RelMetadataProvider SOURCE
-
-
Method Detail
-
getDef
public MetadataDef<BuiltInMetadata.ColumnUniqueness> getDef()
- Specified by:
getDef
in interfaceMetadataHandler<BuiltInMetadata.ColumnUniqueness>
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(TableScan rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(Filter rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(RelNode rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
Catch-all implementation forBuiltInMetadata.ColumnUniqueness.areColumnsUnique(ImmutableBitSet, boolean)
, invoked using reflection, for any relational expression not handled by a more specific method.- Parameters:
rel
- Relational expressionmq
- Metadata querycolumns
- column mask representing the subset of columns for which uniqueness will be determinedignoreNulls
- if true, ignore null values when determining column uniqueness- Returns:
- whether the columns are unique, or null if not enough information is available to make that determination
- See Also:
RelMetadataQuery.areColumnsUnique(RelNode, ImmutableBitSet, boolean)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(SetOp rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(Intersect rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(Minus rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(Sort rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(Exchange rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(Correlate rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(Project rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(Join rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(SemiJoin rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(Aggregate rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(Values rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(Converter rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(HepRelVertex rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
areColumnsUnique
public java.lang.Boolean areColumnsUnique(RelSubset rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls)
-
simplyProjects
private boolean simplyProjects(RelNode rel, ImmutableBitSet columns)
-
splitLeftAndRightColumns
private static Pair<ImmutableBitSet,ImmutableBitSet> splitLeftAndRightColumns(int leftCount, ImmutableBitSet columns)
Splits a column set between left and right sets.
-
-