public class JaninoRelMetadataProvider extends Object implements RelMetadataProvider
RelMetadataProvider interface that generates
a class that dispatches to the underlying providers.| Modifier and Type | Class and Description |
|---|---|
private static class |
JaninoRelMetadataProvider.Key
Key for the cache.
|
static class |
JaninoRelMetadataProvider.NoHandler
Exception that indicates there there should be a handler for
this class but there is not.
|
| Modifier and Type | Field and Description |
|---|---|
private static Set<Class<? extends RelNode>> |
ALL_RELS |
static JaninoRelMetadataProvider |
DEFAULT |
private static com.google.common.cache.LoadingCache<JaninoRelMetadataProvider.Key,MetadataHandler> |
HANDLERS
Cache of pre-generated handlers by provider and kind of metadata.
|
private RelMetadataProvider |
provider |
| Modifier | Constructor and Description |
|---|---|
private |
JaninoRelMetadataProvider(RelMetadataProvider provider)
Private constructor; use
of(org.apache.calcite.rel.metadata.RelMetadataProvider). |
| Modifier and Type | Method and Description |
|---|---|
<M extends Metadata> |
apply(Class<? extends RelNode> relClass,
Class<? extends M> metadataClass)
Retrieves metadata of a particular type and for a particular sub-class
of relational expression.
|
private static StringBuilder |
argList(StringBuilder buff,
Method method)
Returns e.g.
|
(package private) static <M extends Metadata> |
compile(String className,
String classBody,
MetadataDef<M> def,
List<Object> argList) |
(package private) <M extends Metadata,H extends MetadataHandler<M>> |
create(MetadataDef<M> def) |
boolean |
equals(Object obj) |
private static String |
findProvider(List<Pair<String,MetadataHandler>> providerList,
Class<?> declaringClass) |
<M extends Metadata> |
handlers(MetadataDef<M> def) |
int |
hashCode() |
private static <M extends Metadata> |
load3(MetadataDef<M> def,
com.google.common.collect.Multimap<Method,MetadataHandler<M>> map,
com.google.common.collect.ImmutableList<Class<? extends RelNode>> relClasses) |
private static <K,V> com.google.common.cache.CacheBuilder<K,V> |
maxSize(com.google.common.cache.CacheBuilder<K,V> builder,
int size) |
static JaninoRelMetadataProvider |
of(RelMetadataProvider provider)
Creates a JaninoRelMetadataProvider.
|
private static StringBuilder |
paramList(StringBuilder buff,
Method method)
Returns e.g.
|
void |
register(Iterable<Class<? extends RelNode>> classes)
Registers some classes.
|
(package private) <M extends Metadata,H extends MetadataHandler<M>> |
revise(Class<? extends RelNode> rClass,
MetadataDef<M> def) |
private static StringBuilder |
safeArgList(StringBuilder buff,
Method method)
Returns e.g.
|
private final RelMetadataProvider provider
public static final JaninoRelMetadataProvider DEFAULT
private static final com.google.common.cache.LoadingCache<JaninoRelMetadataProvider.Key,MetadataHandler> HANDLERS
private JaninoRelMetadataProvider(RelMetadataProvider provider)
of(org.apache.calcite.rel.metadata.RelMetadataProvider).public static JaninoRelMetadataProvider of(RelMetadataProvider provider)
provider - Underlying providerprivate static <K,V> com.google.common.cache.CacheBuilder<K,V> maxSize(com.google.common.cache.CacheBuilder<K,V> builder,
int size)
public <M extends Metadata> UnboundMetadata<M> apply(Class<? extends RelNode> relClass, Class<? extends M> metadataClass)
RelMetadataProviderThe 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 RelMetadataProviderrelClass - Type of relational expressionmetadataClass - Type of metadatapublic <M extends Metadata> com.google.common.collect.Multimap<Method,MetadataHandler<M>> handlers(MetadataDef<M> def)
handlers in interface RelMetadataProviderprivate static <M extends Metadata> MetadataHandler<M> load3(MetadataDef<M> def, com.google.common.collect.Multimap<Method,MetadataHandler<M>> map, com.google.common.collect.ImmutableList<Class<? extends RelNode>> relClasses)
private static String findProvider(List<Pair<String,MetadataHandler>> providerList, Class<?> declaringClass)
private static StringBuilder argList(StringBuilder buff, Method method)
private static StringBuilder safeArgList(StringBuilder buff, Method method)
private static StringBuilder paramList(StringBuilder buff, Method method)
static <M extends Metadata> MetadataHandler<M> compile(String className, String classBody, MetadataDef<M> def, List<Object> argList) throws org.codehaus.commons.compiler.CompileException, IOException
org.codehaus.commons.compiler.CompileExceptionIOException<M extends Metadata,H extends MetadataHandler<M>> H create(MetadataDef<M> def)
<M extends Metadata,H extends MetadataHandler<M>> H revise(Class<? extends RelNode> rClass, MetadataDef<M> def)
Copyright © 2012–2018 The Apache Software Foundation. All rights reserved.