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,List,Object> |
map
Set of active metadata queries, and cache of previous results.
|
JaninoRelMetadataProvider |
metadataProvider |
static ThreadLocal<JaninoRelMetadataProvider> |
THREAD_PROVIDERS |
| Modifier | Constructor and Description |
|---|---|
protected |
RelMetadataQueryBase(JaninoRelMetadataProvider metadataProvider) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
clearCache(RelNode rel)
Removes cached metadata values for specified RelNode.
|
protected static <H> H |
initialHandler(Class<H> handlerClass) |
protected <M extends Metadata,H extends MetadataHandler<M>> |
revise(Class<? extends RelNode> class_,
MetadataDef<M> 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,List,Object> map
public final JaninoRelMetadataProvider metadataProvider
public static final ThreadLocal<JaninoRelMetadataProvider> THREAD_PROVIDERS
protected RelMetadataQueryBase(JaninoRelMetadataProvider metadataProvider)
protected static <H> H initialHandler(Class<H> handlerClass)
protected <M extends Metadata,H extends MetadataHandler<M>> H revise(Class<? extends RelNode> class_, MetadataDef<M> def)
class_ if it is not already present.public boolean clearCache(RelNode rel)
rel - RelNode whose cached metadata should be removedCopyright © 2012-2020 Apache Software Foundation. All Rights Reserved.