public class JaninoRelMetadataProvider extends Object implements RelMetadataProvider, MetadataHandlerProvider
RelMetadataProvider interface that generates
a class that dispatches to the underlying providers.| Modifier and Type | Class and Description |
|---|---|
static class |
JaninoRelMetadataProvider.NoHandler
Deprecated.
|
| Modifier and Type | Field and Description |
|---|---|
static JaninoRelMetadataProvider |
DEFAULT |
| Modifier and Type | Method and Description |
|---|---|
<M extends Metadata> |
apply(Class<? extends RelNode> relClass,
Class<? extends M> metadataClass)
Deprecated.
|
static void |
clearStaticCache() |
boolean |
equals(@Nullable Object obj) |
<MH extends MetadataHandler<?>> |
handler(Class<MH> handlerClass)
Provide a handler for the requested metadata class.
|
List<MetadataHandler<?>> |
handlers(Class<? extends MetadataHandler<?>> handlerClass)
Retrieves a list of
MetadataHandler for implements a particular
MetadataHandler.class. |
<M extends Metadata> |
handlers(MetadataDef<M> def)
Deprecated.
|
int |
hashCode() |
static JaninoRelMetadataProvider |
of(RelMetadataProvider provider)
Creates a JaninoRelMetadataProvider.
|
void |
register(Iterable<Class<? extends RelNode>> classes)
Deprecated.
|
<H extends MetadataHandler<?>> |
revise(Class<H> handlerClass)
Revise the handler for a given kind of metadata.
|
public static final JaninoRelMetadataProvider DEFAULT
public static JaninoRelMetadataProvider of(RelMetadataProvider provider)
provider - Underlying provider@Deprecated 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 metadata@Deprecated public <M extends Metadata> com.google.common.collect.Multimap<Method,MetadataHandler<M>> handlers(MetadataDef<M> def)
handlers in interface RelMetadataProviderpublic List<MetadataHandler<?>> handlers(Class<? extends MetadataHandler<?>> handlerClass)
RelMetadataProviderMetadataHandler for implements a particular
MetadataHandler.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.handlers in interface RelMetadataProviderpublic <H extends MetadataHandler<?>> H revise(Class<H> handlerClass)
MetadataHandlerProviderShould be invoked if the existing handler throws a MetadataHandlerProvider.NoHandler exception.
revise in interface MetadataHandlerProviderH - The type metadata the handler provides.handlerClass - The type of class to revise.@Deprecated public void register(Iterable<Class<? extends RelNode>> classes)
public <MH extends MetadataHandler<?>> MH handler(Class<MH> handlerClass)
MetadataHandlerProviderhandler in interface MetadataHandlerProviderMH - The metadata type the handler relates to.handlerClass - The handler interface expected@API(status=INTERNAL) public static void clearStaticCache()
Copyright © 2012-2022 Apache Software Foundation. All Rights Reserved.