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.
