首页 > 数据库 > 国内数据库 > 一文解读 SQL 生成工具
SQL 生成工具可用于测试 Parser 与其他数据库产品的兼容性,通过解析 YACC 语法文件中的产生式,生成对应的 SQL 语句,再使用数据库执行该 SQL,根据结果判断语句是否与其他数据库语法兼容。
|
|
|
对于上述过程,我们通过预处理脚本 preprocess.sh 进行封装,使处理后的文件满足工具的要求。生成的文件形式如下,输出的 .output 文件即为预处理后的语法文件。
•-N:限制生成 SQL 条数,可选,默认不限制
该工具包含两个 package:yacc_parser和sql_generator,分别负责完成 Token 解析和 SQL 生成。
type SeqInfo struct { Items []string}type Production struct { Head string // 产生式头部 Alter []SeqInfo // 产生式 body}
Parse 函数调用 Tokenize 函数,每次返回一个 Token,返回后 Parse 函数根据当前状态和 Token 类型,将一连串的 Token 组装成 Production。
SQL 生成有两种模式:
1、是遍历 Production 中指定产生式的 body 列表,枚举生成 SQL 语句;
2、随机选择 Production 中指定产生式的 body 列表,随机生成 SQL 语句。
|
| SHOW TABLES FROM name with_comment | SHOW TABLES with_comment with_comment: WITH COMMENT | %empty name: ID ENT |
根据记录的 choice 值,选择产生式的第 choice 条子表达式,直到生成一条 SQL。 然后再将choice数组进位,继续下一轮选择。
2、随机
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70027415/viewspace-3013993/ ,如需转载,请注明出处,否则将追究法律责任。