如何解决如何在 Calcite 中注册 JdbcToXXXConverter?
我有一个方解石约定,名为: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 举报,一经查实,本站将立刻删除。