问题描述
我有一个方解石约定,名为:XxxConvention, 和一个名为:JdbcToXxxConverterRule的ConverterRule,它需要一个JdbcConventio作为参数。(有多个JdbcSchema,因此在应用程序上下文中有多个JdbcConvention)
我想在 JdbcConvention 中注册 JdbcToXxxConverterRule,但发现很难实现。
在 Jdbc 约定中
@Override public void register(RelOptPlanner planner) {
for (RelOptRule rule : Jdbcrules.rules(this)) {
planner.addRule(rule);
}
planner.addRule(CoreRules.FILTER_SET_OP_TRANSPOSE);
planner.addRule(CoreRules.PROJECT_REMOVE);
}
JdbcConvention 使用 Jdbcrules.rules(this)
检索规则,Jdbcrules.rules(this)
的结果是不可更改的:
public static List<RelOptRule> rules(JdbcConvention out) {
final ImmutableList.Builder<RelOptRule> b = ImmutableList.builder();
foreachRule(out,b::add);
return b.build();
}
private static void foreachRule(JdbcConvention out,Consumer<RelRule<?>> consumer) {
consumer.accept(JdbcToEnumerableConverterRule.create(out));
consumer.accept(JdbcJoinRule.create(out));
consumer.accept(JdbcCalcrule.create(out));
consumer.accept(JdbcProjectRule.create(out));
consumer.accept(JdbcFilterRule.create(out));
consumer.accept(JdbcAggregateRule.create(out));
consumer.accept(JdbcSortRule.create(out));
consumer.accept(JdbcUnionRule.create(out));
consumer.accept(JdbcIntersectRule.create(out));
consumer.accept(JdbcMinusRule.create(out));
consumer.accept(JdbcTableModificationRule.create(out));
consumer.accept(JdbcValuesRule.create(out));
}
那么我如何在 Calcite 中注册我的 JdbcToXxxConvention?期待听到您的想法。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)