public class RelMetadataQueryBase extends Object
To add a new implementation to this interface, follow these steps:
RelMetadataQuery (name it MyRelMetadataQuery for example)
to reuse the Calcite builtin metadata query interfaces. In this class, define all the
extended Handlers for your metadata and implement the metadata query interfaces.
RelMdXyz. Follow
the pattern from an existing class such as RelMdColumnOrigins,
overloading on all of the logical relational expressions to which the query
applies.
SOURCE static member to each of your provider class, similar to
RelMdColumnOrigins.SOURCE.
DefaultRelMetadataProvider (name it MyRelMetadataProvider for example)
and supplement the "SOURCE"s into the builtin list
(This is not required, use ChainedRelMetadataProvider to chain your customized
"SOURCE"s with default ones also works).
MyRelMetadataProvider into the cluster instance.
RelOptCluster.setMetadataQuerySupplier(Supplier)
to set the metadata query Supplier into the cluster instance. This Supplier
should return a fresh new instance.
SqlToRelConverter.RelOptRuleCall with the
interfaces you defined in MyRelMetadataQuery.
| Modifier and Type | Field and Description |
|---|---|
com.google.common.collect.Table<RelNode,Object,Object> |
map
Set of active metadata queries, and cache of previous results.
|
@Nullable JaninoRelMetadataProvider |
metadataProvider
Deprecated.
|
static ThreadLocal<JaninoRelMetadataProvider> |
THREAD_PROVIDERS |
| Modifier | Constructor and Description |
|---|---|
protected |
RelMetadataQueryBase(@Nullable JaninoRelMetadataProvider metadataProvider)
Deprecated.
|
protected |
RelMetadataQueryBase(@Nullable MetadataHandlerProvider provider) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
clearCache(RelNode rel)
Removes cached metadata values for specified RelNode.
|
protected <MH extends MetadataHandler<?>> |
handler(Class<MH> handlerClass)
Provide a handler for the requested metadata class.
|
protected static <H> H |
initialHandler(Class<H> handlerClass)
Deprecated.
|
protected <M extends Metadata,H extends MetadataHandler<M>> |
revise(Class<? extends RelNode> class_,
MetadataDef<M> def)
Deprecated.
|
protected <H extends MetadataHandler<?>> |
revise(Class<H> def)
Re-generates the handler for a given kind of metadata, adding support for
class_ if it is not already present. |
public final com.google.common.collect.Table<RelNode,Object,Object> map
@Deprecated public final @Nullable JaninoRelMetadataProvider metadataProvider
public static final ThreadLocal<JaninoRelMetadataProvider> THREAD_PROVIDERS
@Deprecated protected RelMetadataQueryBase(@Nullable JaninoRelMetadataProvider metadataProvider)
protected RelMetadataQueryBase(@Nullable MetadataHandlerProvider provider)
@Deprecated protected static <H> H initialHandler(Class<H> handlerClass)
@Deprecated protected <M extends Metadata,H extends MetadataHandler<M>> H revise(Class<? extends RelNode> class_, MetadataDef<M> def)
class_ if it is not already present.protected <H extends MetadataHandler<?>> H revise(Class<H> def)
class_ if it is not already present.protected <MH extends MetadataHandler<?>> MH handler(Class<MH> handlerClass)
MH - The metadata type the handler relates to.handlerClass - The handler interface expectedpublic boolean clearCache(RelNode rel)
rel - RelNode whose cached metadata should be removedCopyright © 2012-2022 Apache Software Foundation. All Rights Reserved.