Package org.apache.calcite.rel.metadata
Interface RelMetadataProvider
- All Known Implementing Classes:
CachingRelMetadataProvider
,ChainedRelMetadataProvider
,DefaultRelMetadataProvider
,JaninoRelMetadataProvider
,ReflectiveRelMetadataProvider
,VolcanoRelMetadataProvider
public interface RelMetadataProvider
RelMetadataProvider defines an interface for obtaining metadata about
relational expressions. This interface is weakly-typed and is not intended to
be called directly in most contexts; instead, use a strongly-typed facade
such as
RelMetadataQuery
.
For background and motivation, see wiki.
If your provider is not a singleton, we recommend that you implement
Object.equals(Object)
and Object.hashCode()
methods. This
makes the cache of JaninoRelMetadataProvider
more effective.
-
Method Summary
Modifier and TypeMethodDescription<@Nullable M extends @Nullable Metadata>
@Nullable UnboundMetadata<M>Deprecated.List<MetadataHandler<?>>
handlers
(Class<? extends MetadataHandler<?>> handlerClass) Retrieves a list ofMetadataHandler
for implements a particularMetadataHandler
.class.<M extends Metadata>
com.google.common.collect.Multimap<Method,MetadataHandler<M>> handlers
(MetadataDef<M> def) Deprecated.
-
Method Details
-
apply
@Deprecated <@Nullable M extends @Nullable Metadata> @Nullable UnboundMetadata<M> apply(Class<? extends RelNode> relClass, Class<? extends @Nullable M> metadataClass) Deprecated.UseRelMetadataQuery
.Retrieves metadata of a particular type and for a particular sub-class of relational expression.The object returned is a function. It can be applied to a relational expression of the given type to create a metadata object.
For example, you might call
RelMetadataProvider provider; LogicalFilter filter; RexNode predicate; Function<RelNode, Metadata> function = provider.apply(LogicalFilter.class, Selectivity.class}; Selectivity selectivity = function.apply(filter); Double d = selectivity.selectivity(predicate);
- Parameters:
relClass
- Type of relational expressionmetadataClass
- Type of metadata- Returns:
- Function that will field a metadata instance; or null if this provider cannot supply metadata of this type
-
handlers
@Deprecated <M extends Metadata> com.google.common.collect.Multimap<Method,MetadataHandler<M>> handlers(MetadataDef<M> def) Deprecated. -
handlers
Retrieves a list ofMetadataHandler
for implements a particularMetadataHandler
.class. The resolution order is specificity of the relNode class, with preference given to handlers that occur earlier in the list. For instance, given a return list of {A, B, C} where A implements RelNode and Scan, B implements Scan, and C implements LogicalScan and Filter. Scan dispatches to a.method(Scan) LogicalFilter dispatches to c.method(Filter). LogicalScan dispatches to c.method(LogicalScan). Aggregate dispatches to a.method(RelNode). The behavior is undefined if the class hierarchy for dispatching is not a tree.
-
RelMetadataQuery
.