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