-
Notifications
You must be signed in to change notification settings - Fork 183
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MySQL审核存储过程脚本时SQL片段切分不正确 #2406
Comments
Closed
5 tasks
实现方案新增两个结构,delimiter,splitter,和一个接口block,对两个结构体parser和scanner新增了一些方法,给splitter调用。其中splitter拥有三个成员:delimiter,parser,scanner。具体职责如下:
工作流程:
测试影响面影响所有SQL审核相关的功能 兼容性分析
|
测试测试使用了三个文件,前两个使用的是文件模式,最后一个使用的是SQL模式。测试SQL由AI生成,
测试文件: 测试结果截图测试执行的文件均能执行成功,符合预期 |
5 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
版本信息(Version)
main
问题描述(Describe)
MySQL审核存储过程脚本时SQL片段切分不正确
截图或日志(Log)
输入的存储过程脚本如下:
审核后切分的片段如下:
-- JinSQ 2016-04-08 CHECK IP ADD END END$$ DELIMITER ;
如何复现(To Reproduce)
通过快捷审核随意创建一个MySQL的静态审核,输入上面的SQL脚步即可复现
实现方案
无法正确切分存储过程原因:
1、解析器对于一条存储过程语句的匹配规则是根据"BEGIN"和"END"关键字,但是复杂存储过程可以嵌套,解析器无法处理嵌套的情况(https://dev.mysql.com/doc/refman/5.7/en/begin-end.html)
2、如果一条存储过程定义中本身包含默认分隔符";",所以必须重新定义分隔符,需用到关键字delimiter,但是解析器无法解析该关键字。(https://dev.mysql.com/doc/refman/5.7/en/stored-programs-defining.html)
如:
解决方案:
变更影响面
受影响的模块或功能
外部引用的潜在问题或风险
版本兼容性
测试建议
The text was updated successfully, but these errors were encountered: