oceanbase中存储过程的实现(一)语法解析部分

来源:互联网 发布:java基础入门电子书 编辑:程序博客网 时间:2024/05/11 00:28

原创性声明

本文出处为http://blog.csdn.net/zhujunxxxxx/article/details/39251491,版权归作者所有,如需转载请注明作者,出处!

技术背景

淘宝的开源数据库oceanbase 是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部开发的。

但是现在oceanbase0.4版本是不支持很多功能的,其中包括存储过程。

开发方案

淘宝数据使用的是flex&bison来进行sql语句的解析的,因此我们在做存储过程的语法也应该用它的方案实现。

我们经过语法解析过后需要用一种数据结构来存储语法树,一种方法是使用OB里面的节点设计,另一种是使用Postgrepsql的节点设计来存储它

OceanBase的语法树的节点设计

OceanBase的语法树节点结构体也只有一个,该结构体包括一个枚举类型变量type_,和PostgreSQL一样,代表该结构体对应的类型。还有两组属性,对应终止符节点,只能使用vakue_和str_value_两个字段,分别对应64位整形值和字符串值;非终止符节点使用最后两个字段,num_child_表示子节点的个数,children_指向子节点数组的首地址。


存储过程语法树



上面部分是通过语法解析部分得到的一颗语法树。


1 0