我正在学习方解石,但被ConverterRule和RelOptRule弄糊涂了。
我已经知道RelOptRule是将表达式转换为另一个表达式的规则,而RelOptRule由RelOptPlanner使用。
但是我已经在ConverterRule的Java文档
中看到了/**
* Abstract base class for a rule which converts from one calling convention to
* another without changing semantics.
*/
ConverterRule和RelOptRule有什么区别?我应该如何使用它们?
答案 0 :(得分:0)
ConverterRule
是RelOptRule
类的子类。这两个都是计划者用来转换关系代数表达式的规则。 ConverterRule
会执行您引用的Javadoc所声明的内容,并在调用约定之间进行转换。例如,它用于通过分配特定的调用约定来实际执行逻辑表达式,该调用约定指示哪个系统将实际执行查询。
规则除了转换约定外还可以做很多其他事情。例如,规则可以决定交换Filter
和Project
节点的顺序。实际上,规则所要做的就是匹配关系代数表达式的子树并将其替换为其他子树。