org.eigenbase.rel.metadata
Interface RelMetadataProvider

All Known Implementing Classes:
CachingRelMetadataProvider, ChainedRelMetadataProvider, DefaultRelMetadataProvider, FarragoRelMetadataProvider, FarragoTestPersonalityFactory.FarragoTestRelMetadataProvider, FtrsDataServer.FtrsRelMetadataProvider, HepRelMetadataProvider, LoptMetadataProvider, LoptMetadataProvider.SimpleColumnOrigins, MedJdbcMetadataProvider, ReflectiveRelMetadataProvider, RelMdColumnOrigins, RelMdColumnUniqueness, RelMdDistinctRowCount, RelMdExplainVisibility, RelMdPercentageOriginalRows, RelMdPopulationSize, RelMdRowCount, RelMdSelectivity, RelMdUniqueKeys, VolcanoRelMetadataProvider

public interface RelMetadataProvider

RelMetadataProvider defines an interface for obtaining metadata about relational expressions. This interface is weakly-typed and is not intended to be called directly in most contexts; instead, use a strongly-typed facade such as RelMetadataQuery.

For background and motivation, see wiki.

Version:
$Id: //open/dev/farrago/src/org/eigenbase/rel/metadata/RelMetadataProvider.java#6 $
Author:
John V. Sichi

Method Summary
 Object getRelMetadata(RelNode rel, String metadataQueryName, Object[] args)
          Retrieves metadata about a relational expression.
 

Method Detail

getRelMetadata

Object getRelMetadata(RelNode rel,
                      String metadataQueryName,
                      Object[] args)
Retrieves metadata about a relational expression.

Parameters:
rel - relational expression of interest
metadataQueryName - name of metadata query to invoke
args - arguments to metadata query (expected number and type depend on query name; must have well-defined hashCode/equals for use by caching); null can be used instead of empty array
Returns:
metadata result (actual type depends on query name), or null if the provider cannot answer the given query/rel combination; it is better to return null than to return a possibly incorrect answer