转自
这篇文章是关于在淘宝的数据库oceanbase中添加存储过程支持的文章,oceanbase在下文中使用ob简称
学校接的项目要在开源数据系统oceanbase中实现存储过程的
首先、我们要进行语法分析和词法分析,这两个使用开源的flex & bison来做,因为在ob中的sql语句解析就是使用这样的模式来做的,我们存储过程的实现是参考postgrepsql中的存储过程部分来实现的
语句输入后由 语言处理模块分离出 过程语言和 sql语句
Sql 语句调用oceanbase的sql引擎来执行
过程语言 进行语法分析,把变量和数据类型保存符号表中
中间代码保存在缓存中,而源代码需要保存在数据库系统表中
存储过程执行
使用名字堆栈 (解决变量的作用域)
词法分析 ->语法分析–>语义处理