Did you take a look at https://issues.apache.org/jira/browse/CALCITE-1147 
<https://issues.apache.org/jira/browse/CALCITE-1147>? It helps make 
RelMetadataQuery pluggable.

> On Mar 28, 2016, at 9:21 PM, Ted Xu <[email protected]> wrote:
> 
> Hi all,
> 
> After [CALCITE-604 <https://issues.apache.org/jira/browse/CALCITE-604>], I
> found the methods of RelMetadataQuery is not pluggable. By 'pluggable', I
> mean RelMetadataQuery's behaviour can be re-defined by registering a
> RelMetadataProvider in RelOptCluster.
> 
> For example, if I defined a RelMetadataProvider as follows and register it
> using RelOptCluster#setMetadataProvider,
> 
> public class MyRelMetadataProvider extends ChainedRelMetadataProvider {
>  public MyRelMetadataProvider() {
>    super(
>        ImmutableList.of(
>            MyRelMdRowCount.SOURCE));
>  }
> }
> 
> I expect RelMetadataQuery#getRowCount will invoke MyRelMdRowCount.SOURCE.
> However I noticed that after CALCITE-604 it always use
> DefaultRelMetadataProvider.
> 
> I do noticed an example of overriding RelMetadataQuery in RelMetadataTest,
> but I guess by now I can only add metadata support rather than override
> existing metadata?
> 
> I'm not sure if I'm using it in the right way, please correct me if I'm
> wrong. Thanks!
> 
> Regards,
> Ted Xu.

Reply via email to