Package org.apache.calcite.rel.metadata
Class MetadataFactoryImpl
- java.lang.Object
-
- org.apache.calcite.rel.metadata.MetadataFactoryImpl
-
- All Implemented Interfaces:
MetadataFactory
public class MetadataFactoryImpl extends java.lang.Object implements MetadataFactory
Implementation ofMetadataFactory
that gets providers from aRelMetadataProvider
and stores them in a cache.The cache does not store metadata. It remembers which providers can provide which kinds of metadata, for which kinds of relational expressions.
-
-
Field Summary
Fields Modifier and Type Field Description private com.google.common.cache.LoadingCache<Pair<java.lang.Class<RelNode>,java.lang.Class<Metadata>>,UnboundMetadata<Metadata>>
cache
static UnboundMetadata<Metadata>
DUMMY
-
Constructor Summary
Constructors Constructor Description MetadataFactoryImpl(RelMetadataProvider provider)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static com.google.common.cache.CacheLoader<Pair<java.lang.Class<RelNode>,java.lang.Class<Metadata>>,UnboundMetadata<Metadata>>
loader(RelMetadataProvider provider)
<M extends Metadata>
Mquery(RelNode rel, RelMetadataQuery mq, java.lang.Class<M> metadataClazz)
Returns a metadata interface to get a particular kind of metadata from a particular relational expression.
-
-
-
Field Detail
-
DUMMY
public static final UnboundMetadata<Metadata> DUMMY
-
cache
private final com.google.common.cache.LoadingCache<Pair<java.lang.Class<RelNode>,java.lang.Class<Metadata>>,UnboundMetadata<Metadata>> cache
-
-
Constructor Detail
-
MetadataFactoryImpl
public MetadataFactoryImpl(RelMetadataProvider provider)
-
-
Method Detail
-
loader
private static com.google.common.cache.CacheLoader<Pair<java.lang.Class<RelNode>,java.lang.Class<Metadata>>,UnboundMetadata<Metadata>> loader(RelMetadataProvider provider)
-
query
public <M extends Metadata> M query(RelNode rel, RelMetadataQuery mq, java.lang.Class<M> metadataClazz)
Description copied from interface:MetadataFactory
Returns a metadata interface to get a particular kind of metadata from a particular relational expression. Returns null if that kind of metadata is not available.- Specified by:
query
in interfaceMetadataFactory
- Type Parameters:
M
- Metadata type- Parameters:
rel
- Relational expressionmq
- Metadata querymetadataClazz
- Metadata class- Returns:
- Metadata bound to
rel
andquery
-
-