tikv源码的疑问

最近阅读tidb_query部分的源码现在有几个疑问,渴望能够回答下,谢谢!

我看到expr和rpn_expr都有关于math函数的描述 请问这两个在调用的时候有什么区别 还有这个函数 dispatch_call 主要是在做什么能回答下吗 没有注释很难理解 这个check_arg函数主要是查看当前传递的scalarFuc时候存在以及获取当前rpn_fuc_tree的左右子节点的参数数量吗?

Hi,

我看到expr和rpn_expr都有关于math函数的描述 请问这两个在调用的时候有什么区别

Coprocessor 模块内有两套函数执行框架,一套是 Volcano Model,一套是 Vectorized Model(新),因此函数实现会有两套。目前 Volcano Model 的代码处于逐步弃用并删除的阶段。具体情况可阅读我们的 TiKV 源码解析系列文章中关于 Coprocessor 的三篇:

还有这个函数 dispatch_call 主要是在做什么能回答下吗 没有注释很难理解

它是一个宏,会将里面的内容展开为一系列 match { } 语句,具体怎么展开的可以直接阅读 dispatch_call 宏的实现,或借助 cargo expand 等工具查看展开后的代码。

这个check_arg函数主要是查看当前传递的scalarFuc时候存在以及获取当前rpn_fuc_tree的左右子节点的参数数量吗?

check_args 是 Volcano Model 下用于检查函数参数个数的函数,与 rpn_expr 无关。

好的 谢谢了

感谢回复,选一个最决方案吧,如果有新的问题,可以新开贴哦~

如果有其他问题,欢迎在 AskTUG 上提问,你也可以: