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

WBOY
リリース: 2016-06-07 16:12:05
オリジナル
2679 人が閲覧しました

技术背景 淘宝的开源数据库oceanbase 是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部开发的。 但是现在oceanbase0.4版本是不支持很多功能的,其中包括存储过程。 开发方案 淘宝数据使

技术背景

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

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

开发方案

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

 

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

 

OceanBase的语法树的节点设计

 

 

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

\

存储过程语法树

\

上面部分是通过语法解析部分得到的一颗语法树。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!