内容提要
Arvind Murty在PlanetScale实习期间,致力于Vitess的开发。他通过清理内部工作开始贡献,然后在Andrés Taylor的指导下进行实习。他的任务是在Vitess规划器中找到尽可能多的错误。他们构建了随机查询生成器,并对Vitess和MySQL的结果进行比较。他们还改进了查询简化器和随机表达式生成器。通过这个项目,他学到了团队合作和软件开发的经验。
延伸解读
为何不直接使用SQLancer
文章指出,SQLancer虽在SQLite和MySQL上成功,但直接用于Vitess存在三个障碍:Vitess需完全模仿MySQL包括怪癖,而SQLancer依赖oracle判断逻辑正确性;Vitess有VSchema层,分片键等影响查询规划;且SQLancer各DBMS测试器独立编写,集成工作量大。因此团队决定自建随机查询生成器。
自建模糊测试器的关键改进
团队基于Andrés已有的随机查询模糊器扩展,支持聚合、GROUP BY、ORDER BY和LIMIT。为提升测试效果,他们改进了查询简化器,使其能处理端到端测试所需的VSchema信息;还增强了随机表达式生成器,加入列引用和聚合,并确保聚合只出现在允许的语句和子句中。
当前局限与后续方向
模糊测试器目前仅使用EMP和DEPT表,基于EMPNO和DEPTNO的标准分片,模式与VSchema固定。作者认为首要改进是复杂化或随机化schema和VSchema。此外,代码中仍有testFailingQueries标志阻止已知失败查询,随着规划器改进,该标志可删除或至少从多处移除。
Q&A
Arvind Murty在PlanetScale实习期间的主要任务是什么?
他的主要任务是在Vitess规划器中找到尽可能多的错误。
Arvind是如何开始参与Vitess项目的?
他在高中时接触到Vitess,认为这是一个适合参与的开源项目,因此开始贡献。
在实习期间,Arvind使用了哪些工具进行测试?
他使用了SQLancer工具来测试数据库管理系统,但由于与Vitess的集成存在挑战,最终决定构建自己的随机查询生成器。
Arvind在实习中学到了哪些经验?
他学到了团队合作和软件开发的经验,并感谢了团队成员的支持。
构建随机查询生成器的过程遇到了什么挑战?
构建随机查询生成器并不简单,产生了许多失败的查询,且需要对查询简化器和随机表达式生成器进行改进。
Arvind在实习期间的时间范围是什么?
他在2023年5月至7月期间在PlanetScale实习。