oceanbase中存儲過程的實現(一)語法解析部分

原創性聲明

本文出處爲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_指向子節點數組的首地址。


存儲過程語法樹



上面部分是通過語法解析部分得到的一顆語法樹。


發佈了127 篇原創文章 · 獲贊 161 · 訪問量 94萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章