public class CachingRelMetadataProvider extends java.lang.Object implements RelMetadataProvider
RelMetadataProvider
interface that caches results from an underlying provider.Modifier and Type | Class and Description |
---|---|
private static class |
CachingRelMetadataProvider.CacheEntry
An entry in the cache.
|
private class |
CachingRelMetadataProvider.CachingInvocationHandler
Implementation of
InvocationHandler for calls to a
CachingRelMetadataProvider . |
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.util.List,CachingRelMetadataProvider.CacheEntry> |
cache |
private RelOptPlanner |
planner |
private RelMetadataProvider |
underlyingProvider |
Constructor and Description |
---|
CachingRelMetadataProvider(RelMetadataProvider underlyingProvider,
RelOptPlanner planner) |
Modifier and Type | Method and Description |
---|---|
<M extends Metadata> |
apply(java.lang.Class<? extends RelNode> relClass,
java.lang.Class<? extends M> metadataClass)
Retrieves metadata of a particular type and for a particular sub-class
of relational expression.
|
<M extends Metadata> |
handlers(MetadataDef<M> def) |
private final java.util.Map<java.util.List,CachingRelMetadataProvider.CacheEntry> cache
private final RelMetadataProvider underlyingProvider
private final RelOptPlanner planner
public CachingRelMetadataProvider(RelMetadataProvider underlyingProvider, RelOptPlanner planner)
public <M extends Metadata> UnboundMetadata<M> apply(java.lang.Class<? extends RelNode> relClass, java.lang.Class<? extends M> metadataClass)
RelMetadataProvider
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);
apply
in interface RelMetadataProvider
relClass
- Type of relational expressionmetadataClass
- Type of metadatapublic <M extends Metadata> com.google.common.collect.Multimap<java.lang.reflect.Method,MetadataHandler<M>> handlers(MetadataDef<M> def)
handlers
in interface RelMetadataProvider
Copyright © 2012–2019 The Apache Software Foundation. All rights reserved.